Benutzer-Werkzeuge

Webseiten-Werkzeuge


hello_mbot_senden_empfangen

Dies ist eine alte Version des Dokuments!


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:

  • Grundlagen der IR-Kommunikation zwischen Robotern
  • Steuerung von Aktionen basierend auf drahtlosen Signalen, z. B. für Spiele, Schwarmverhalten oder gruppengesteuertes Verhalten

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

  1. #include <MeMCore.h>
  2. MeIR irSender;
  3. MeRGBLed led(0, 2);
  4. String PROTOCOL_01="a"; // hier immer die Länge 1!
  5.  
  6. void setup() {
  7. irSender.begin();
  8. led.setpin(13);
  9. led.setColor(0, 0, 0, 0); // LEDs ausschalten
  10. led.show();
  11. }
  12. void loop() {
  13. // Rote LED an, wenn gesendet wird
  14. led.setColor(0, 255, 0, 0); // LED rot
  15. led.show();
  16. // String über IR senden
  17. irSender.sendString(PROTOCOL_01);
  18. delay(200);
  19. // LED wieder ausschalten
  20. led.setColor(0, 0, 0, 0);
  21. led.show();
  22. delay(3000);
  23. }

Quellcode mBot-Empfänger

Listing 1:MinimalesProgramm-Empfänger.ino

  1. #include <MeMCore.h>
  2.  
  3. MeIR irReceiver;
  4. MeRGBLed led(0, 2);
  5.  
  6. void setup() {
  7. Serial.begin(9600);
  8. irReceiver.begin();
  9. led.setpin(13);
  10. led.setColor(0, 0, 0, 0); // LEDs ausschalten
  11. led.show();
  12. }
  13.  
  14. void loop() {
  15. if (irReceiver.decode()) { // Nachricht empfangen?
  16.  
  17. uint32_t receivedValue = irReceiver.value; // Rohwert
  18. uint32_t buttonCode = receivedValue >> 16 & 0xff;
  19. switch (buttonCode) { // ASCII als DEC!
  20. case 97: onAction_97();
  21. }
  22. }
  23. }
  24.  
  25. /*
  26. * Funktionen
  27. */
  28. void onAction_97() {
  29. // dec 97 ist ascii-code a!
  30. delay(200);
  31. Serial.println("received code 97");
  32. led.setColor(0, 0, 255, 0); // LED grün
  33. led.show();
  34. delay(300);
  35. // LED wieder ausschalten
  36. led.setColor(0, 0, 0, 0);
  37. led.show();
  38. delay(200);
  39. }
  40.  
  41.  
  42.  

Erklärungen zum Quellcode

1. Programme hochladen
  • Sender-Programm auf mBot 1 laden
  • Empfänger-Programm auf mBot 2 laden
  • USB-Kabel trennen, beide mBots einschalten
2. Testablauf
  • Sender (mBot 1): LED blinkt kurz rot, wenn er „LED_ON“ sendet.
  • Empfänger (Bot 2): LED blinkt kurz grün, wenn „LED_ON“ empfangen wurde.

Ü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. Auf dieser Grundlage lassen sich schnell eigene Protokolle zur Kommunikation über die Infrarot-Schnittstelle erstellen.

hello_mbot_senden_empfangen.1739518814.txt.gz · Zuletzt geändert: 2025/02/14 07:40 von torsten.roehl