Inhaltsverzeichnis

Hello mBot Senden/Empfangen

Dieses Beispiel zeigt, wie ein mBot per Infrarotsignal (IR) eine LED auf einem zweiten mBot steuern kann. Der Sender sendet alle 3 Sekunden das Signal „LED_ON“. Der Empfänger schaltet daraufhin die LED für 500 ms auf Rot und wartet anschließend 1 Sekunde, bevor er erneut ein Signal empfängt.

Einsatzmöglichkeiten:

Dieses Beispiel stellt nur die grundlegende Struktur zur Verfügung. Es ist noch keine wirkliche Kommunikation, da lediglich ein Roboter sendet und der andere empfängt.

Quellcode (engl. Sourcecode)

Quellcode mBot-Sender

Listing 1:MinimalesProgramm-Sender.ino

#include <MeMCore.h>
MeIR irSender;
MeRGBLed led(0, 2); 
String PROTOCOL_01="a"; // hier immer die Länge 1!

void setup() {
    irSender.begin();
    led.setpin(13);
    led.setColor(0, 0, 0, 0); // LEDs ausschalten
    led.show();
}
     
void loop() {
    // Rote LED an, wenn gesendet wird
    led.setColor(0, 255, 0, 0); // LED rot
    led.show();
    // String über IR senden
    irSender.sendString(PROTOCOL_01);
    delay(200);    
    // LED wieder ausschalten
    led.setColor(0, 0, 0, 0);
    led.show();
    delay(3000); 
}

Quellcode mBot-Empfänger

Listing 1:MinimalesProgramm-Empfänger.ino

#include <MeMCore.h>

MeIR irReceiver;
MeRGBLed led(0, 2);

void setup() {
  Serial.begin(9600);
  irReceiver.begin();
  led.setpin(13);
  led.setColor(0, 0, 0, 0);  // LEDs ausschalten
  led.show();
}

void loop() {
  if (irReceiver.decode()) { // Nachricht empfangen?

    uint32_t receivedValue = irReceiver.value;  // Rohwert
    uint32_t buttonCode = receivedValue >> 16 & 0xff;   
    switch (buttonCode) { // ASCII als DEC!
      case 97: onAction_97();
    }
  }
}

/*
 * Funktionen
 */
void onAction_97() {
  // dec 97 ist ascii-code a!
  delay(200);
  Serial.println("received code 97");
  led.setColor(0, 0, 255, 0); // LED grün
  led.show();
  delay(300);
  // LED wieder ausschalten
  led.setColor(0, 0, 0, 0);
  led.show();
  delay(200);
}



Erklärungen zum Quellcode

Dieses Beispiel erfordert, dass die gesendeten Strings eine Länge von 1 haben. Empfangen werden sie, indem das Zeichen als ASCII-Wert interpretiert wird (im Dezimalformat). Damit ist dieses Beispiel bewusst als ein einfaches, exemplarisches Beispiel gedacht. Sie sind herzlich eingeladen, eigene Erweiterungen und Verbesserungen zu implementieren. Informieren Sie sich im Internet auch über das ASCII-Format.

1. Programme hochladen
2. Testablauf

Übrigens, warum ist es egal, welcher mBot zuerst eingeschaltet wird?

Alternative Lösung zum Empfang

Eine Alternative zum Empfang von Strings über Infrarot ist im folgenden Codeabschnitt dargestellt.