====== Programmieren des mBot-Roboters ======
//
Dieser Abschnitt ist technischer gehalten als die anderen, weshalb er sich eher an erfahrene Arduino-Anwender richtet. Er kann jedoch auch als Referenz verwendet werden, nachdem man sich durch die „Hello-World“-Projekte gearbeitet hat. Weiterhin werden wichtige mBot-Details aufgelistet, die für eine anspruchsvollere mBot-Programmierung erforderlich sind.//
Alle Makeblock-Projekte müssen immer die folgende Bibliothek einbinden:
\\
\\
** #include **
===== Kurzüberblick API =====
Im API-Bereich befindet sich die offizielle Dokumentation der Makeblock-Bibliothek. Sie umfasst Klassen für mehrere mBot-Modelle, darunter auch Funktionen, die der einfache mBot nicht benötigt oder unterstützt.
|**MeRGBLed  - farbige LED's** ||
^Code^Beschreibung^
|''MeRGBLed led(0, 2);'' | LED (Objekt) erstellen - Werte sind durch die Hardware fest!!!|
|'' led.setpin(13);''| PIN 13 (siehe Pinbelegung) im ''setup()'' setzen! |
|''setColorAt(led,r,g,b)''| Setzt die Farbe der gewählten //led// mit den Werten für Rot (''r''), Grün (''g'') und Blau (''b'') zwischen 0 und 255. Dabei bedeutet 0,0,0 kein Licht und 255,255,255 weißes Licht.  //led// ist 0 oder 1 (für die beiden LED's)|
|''show()''|Anzeigen (nach dem setzen) der Farbe. |
|**MeBuzzer  - Buzzer (Summer)** ||
^Code^Beschreibung^
|''MeBuzzer buzzer;'' | Buzzer (Objekt) erstellen|
|''  buzzer.tone(frequency, duration);''| ''frequency''	- Frequenz des gespielten Tons.   ''duration''	- Dauer (in ms) für den ausgegebenen Ton. |
|''buzzer.noTone ()''| Ausgabe stoppen.|
|**MeDCMotor  - Motoren** ||
^Code^Beschreibung^
|''MeDCMotor motor1(M1);  '' | Motor (Objekt) erstellen - M1!|
|''MeDCMotor motor2(M2);  '' | Motor (Objekt) erstellen - M2!|
|''motor1.run(value);  '' | Geschwindigkeit (valued) von 255 bis -255. 0 stopt den Motor.|
|''motor1.stop();  '' | |
|**MeLightSensor - Lichtsensor** ||
^Code^Beschreibung^
|''MeLightSensor lightSensor(PORT_8);'' | Lichtsensor (Objekt) erstellen!|
|''lightSensor.read()'' |Sensor auslesen (0-1023), je heller desto größer der gelesene Wert. |
===== Pinnbelegung =====
| **A0**   | RJ25 plug 4 (default not-connected)    |
| **A1**   | RJ25 plug 4 (default not-connected)    |
| A2   | RJ25 plug 3 ultrasonic                |
| A3   | RJ25 plug 3 ultrasonic                |
| A6   | Light sensor                          |
| **A7**   | **Button**                                |
| D2   | IR RCV                                |
| D3   | IR TX                                 |
| D4   | DIR2 - direction motor2               |
| D5   | PWM2 - pwm motor2                     |
| D6   | PWM1 - pwm motor1                     |
| D7   | DIR1 - direction motor1               |
| D8   | Buzzer                                |
| D9   | RJ25 plug 2 linefollower              |
| D10  | RJ25 plug 2 linefollower              |
| **D11**  | RJ25 plug 1 (default not-connected)   |
| **D12**  | RJ25 plug 1 (default not-connected)   |
| D13  | 2 WS2812 RGB LEDs  |
                   
===== freie Ports  =====
Die beiden freien Ports (1 und 4) stellen damit folgende Funktionalität frei verfügbar:
| GND  | Ground (frei verfügbar)               |
| VCC  | VCC (frei verfügbar)                  |
| SDA  | I2C SDA (frei verfügbar)              |
| SCL  | I2C SCL (frei verfügbar)              |
| A0   | Analog Pin (frei verfügbar)           |
| A1   | Analog Pin (frei verfügbar)           |
| D11  | Digital Pin (frei verfügbar)          |
| D12  | Digital Pin (frei verfügbar)          |
                   
===== Schematic =====
{{ :inf:mbot-schematic.png?600 |}}
====== Installation ======
Für die Verwendung des //mBot// unter ''Arduino'' muss die ''Makeblock-Bibliothek'' installiert werden. Am einfachsten ist es, die Bibliothek direkt aus der ''Arduino-IDE'' zu installieren (siehe Bild). Alternativ kann sie auch manuell hinzugefügt werden. Außerdem kann die Bibliothek im Downloadbereich heruntergeladen werden, in der Version 3.27.
{{ :inf:msr:makeblock_install.png?600 |}}