×

Bluetooth: 3. LED an- und ausschalten


Gepostet September 2015, Kategorie: Bluetooth HC05


Thumbnail: Bluetooth: 3. LED an- und ausschalten

In diesen Teil wird gezeigt, wie man eine LED am Arduino über eine Smartphone-App an- und ausschalten kann.


  • Mit den UART-Protokoll lassen sich,wie wir bereits gesehen haben, Zeichen bzw. Zeichenketten versenden.
  • Um eine LED zu leuchten zu bringen, oder wieder auszuschalten, müssen Nachrichten zwischen den Arduino und den Steuergerät (PC, Handy, RPi...) ausgetauscht werden
  • Für diese Nachrichte stelle ich nun einige Regel auf:
    • Nachrichten können verschiedene Längen haben
    • Nachrichten enden immer mit einen Semikolon (;)
    • Der Empfänger eines Befehls schickt ein OK; , wenn er die Nachricht verstanden hat.
    • Befehl zum Anschalten: ON;
    • Befehl zum Ausschalten: OFF;
  • Eine LED wird mit Vorwiderstand an Pin4 angeschlossen
    Schaltplan
  • Programmierung des Arduino:
    • #include <SoftwareSerial.h>
    • SoftwareSerial BTserial(2, 3);
    • Konstante int led = 4;
    • String msg = ""; Hier wird eine unvollständige Nachricht zwischengespeichert
    • void setup()
      • Öffnen des SoftwareSerial-Ports
      • Der normale Serial-Port wird nicht benötigt
      • led als Ausgang definieren
      • Die LED soll zu Beginn aus sein.
    • void loop()
      • Mit BTserial.available() wird geprüft, ob ein Zeichen im Buffer des Serialports liegt
        • Wenn ja dann erstelle einen char c = BTSerial.read(); (Dieser enthält das erste Zeichen, dass im Buffer liegt)
        • Fallunterscheidung: c != ';'
          • Wenn c kein Semikolon ist, dann füge c an die msg an : msg = msg + c;
        • Ansonsten ist der Befehl vollständig:
          • Prüfe, ob msg == "ON"
            • LED anschalten
            • Schicke die OK-Nachricht mit: BTserial.write("OK;");
          • Prüfe, ob msg == "OFF"
            • LED ausschalten
            • Schicke die OK-Nachricht
          • In allen Fällen muss msg wieder geleert werden, denn sonst wird der nächste Befehl nicht erkannt
            msg = "";
    • [Lösung]
  • Erster Test mit den Handy (Eingeben von "OFF;" oder "ON;")
    Programm auf dem Smartphone
  • Erstellen einer App mit MIT App Inventor 2
    • Designer
      • Titel des Screens setzen, Icon setzen
      • Label als Überschrift, große Schriftart
      • Button1: Text: LED an
      • Image: aus.png
      • ListPicker1: Text: Connect ...
      • BuetoothClient1
      • Notifier1
    • Programm
MIT-Programm|100 Erstelle eine globale Variable state, die den Wert false hat.
Diese Variable gibt an, ob die LED an oder aus ist.

Wenn die App gestartet wird:
Wenn bei deinen Handy das Bluetooth ausgeschaltet ist:
dann zeige eine Nachricht an: "Dein Bluetooth ist ausgeschaltet!"




Wenn auf Connect... gedrückt wird, soll sich ein Auswahlfenster öffnen
Die Auswahlmöglichkeiten werden gesetzt: von BluetoothClient alle
bekannten Adressen und Namen

Wenn ein Element aus dem ListPicker gewählt wurde:
Wenn die Bluetooth-Verbindung erfolgreich war, die mit der ausgewählten
Adresse erstellt werden soll:

Nachricht: Verbunden!


Ansonsten: Nicht Verbunden!



Wenn auf den Button gedrückt wird:
Wenn die Lampe an war:
Führe die Prozedur ausschalten aus.

Ansonsten:
Prozedur: anschalten

Die globale Variable wird ihr negierter Wert zugewiesen
d. h. true -> false, false -> true

Prozedur anschalten:
Setze den Text des Buttons
Lade die richtige Grafik.

Wenn Bluetooth verbunden ist, dann
schicke die Nachricht "ON";




Prozedur ausschalten:
analog zum anschalten