
Mit einer Smartphone-App sollen über die Bluetooth-Module HM-10/HC-08 LEDs geschaltet werden.
Die direkte Eingabe einer Zahl oder die Bildschirmtastatur der jeweiligen App steuert die Aktionen der LEDs. Vor dem Start einer neuen Aktion müssen zuerst alle LEDs mit der Taste 8 ausgeschaltet werden.
Bluetooth LEDs schalten
| BLE Terminal | BLESerial tiny |
|---|---|
![]() | ![]() |
Steuerung der LEDs über Bluetooth
| Aktion | Taste |
|---|---|
| Lauflicht rechts | 1 |
| Lauflicht links | 2 |
| alle LEDs einschalten | 3 |
| blinkende LEDs | 4 |
| alle LEDs ausschalten | 8 |
Beispiele für Bluetooth-Module

Die Bluetooth-Module HM-10/HC-08 arbeiten mit BLE (Bluetooth Low Energy) und können mit Android-Betriebssystemen und iOS umgehen.
Benötigte Bauteile:
- 5 LEDs
- 3 Widerstände 220 Ω (gelbe, rote und grüne LED)
- 2 Widerstände 100 Ω (blaue und weiße LED)
- Bluetooth-Modul HM-10/HC-08
- Leitungsdrähte

Beachte die ⇒Vorwiderstände verschiedener LEDs
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnunge der Bauteile zu sehen)

Die eigentlich vorgesehenen Pins RX (0) und TX (1) werden beim Hochladen verwendet. Deshalb müsste das Bluetooth-Modul vor dem Hochladen herausgezogen und anschließend wieder eingesteckt werden.
Über die Bibliothek SoftwareSerial können die Pins RX und TX anderen digitalen Pins zugeordnet werden. Das Herausziehen und Wiedereinstecken entfällt dann.
Im Kopf des Programms werden die Variablen definiert. Die eingebundene Bibliothek SoftwareSerial ist eine Standardbibliothek, sie muss nicht installiert werden.
1 2 3 4 5 6 7 8 9 10 | #include “SoftwareSerial.h” // TX -> 2, RX -> 3 SoftwareSerial BTSerial(2, 3); // Array für die Pins der LEDs int LED[5] = {4, 5, 6, 7, 8}; // über Bluetooth vom Smartphone gesendeter Wert char btDaten; |
Der setup-Teil definiert lediglich die pinModes für die LEDs und startet den über SoftwareSerial zugewiesenen Seriellen Monitor BTSerial:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void setup() { BTSerial.begin(9600); Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} // pinMode LEDs for (int i = 0; i <= 4; i++) { pinMode(LED[i], OUTPUT); } // Menü im Seriellen Monitor Serial.println(“Men\u00fc:”); Serial.println(“1 -> Lauflicht vor”); Serial.println(“2 -> Lauflicht zur\u00fcck”); Serial.println(“3 -> alle an”); Serial.println(“4 -> blinkende LEDs”); Serial.println(“8 -> alle aus”); } |
Im loop-Teil liest BTSerial.read() den eingegebenen Wert und ordnet ihm die entsprechende Aktion zu.
Die verschiedenen Aktionen werden jeweils in einer Funktion ausgelagert. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | void loop() { // vom Smartphone gesendeten Wert lesen btDaten = BTSerial.read(); switch (btDaten) { case ‘1’: { BTSerial.println(“Lauflicht rechts”); BTSerial.println(“Neue Aktion: 8 -> alle aus”); // Status true übergeben LauflichtVor(true); break; } case ‘2’: { BTSerial.println(“Lauflicht links”); BTSerial.println(“Neue Aktion: 8 -> alle aus”); // Status true übergeben LauflichtZurueck(true); break; } case ‘3’: { BTSerial.println(“alle an”); BTSerial.println(“Neue Aktion: 8 -> alle aus”); AlleLEDAus(); AlleLEDAn(); break; } case ‘4’: { BTSerial.println(“alle blinken”); BTSerial.println(“Neue Aktion: 8 -> alle aus”); // Status true übergeben LEDBlinken(true); break; } case ‘8’: { BTSerial.println(“alle aus”); AlleLEDAus(); break; } } } void LauflichtVor(bool Status) { // Status ist true while (Status) { for (int i = 0; i <= 4; i++) { /* Eingabe Smartphone abfragen wenn Wert 8 (ausschalten): -> for-Schleife unterbrechen -> Status auf false setzen, -> while wird unterbrochen */ btDaten = BTSerial.read(); if (btDaten == ‘8’) { Status = !Status; BTSerial.println(“alle aus”); AlleLEDAus(); break; } // aktuelle LED i einschalten digitalWrite(LED[i], HIGH); delay(100); // aktuelle LED i ausschalten digitalWrite(LED[i], LOW); } } } void LauflichtZurueck(bool Status) { // Status ist true while (Status) { for (int i = 4; i >= 0; i –) { btDaten = BTSerial.read(); if (btDaten == ‘8’) { Status = !Status; BTSerial.println(“alle aus”); AlleLEDAus(); break; } // aktuelle LED i einschalten digitalWrite(LED[i], HIGH); delay(100); // aktuelle LED i ausschalten digitalWrite(LED[i], LOW); } } } void AlleLEDAn() { for (int i = 0; i <= 4; i++) { // aktuelle LED i einschalten digitalWrite(LED[i], HIGH); } } void LEDBlinken(bool Status) { // Status ist true while (Status) { for (int i = 0; i <= 4; i++) { btDaten = BTSerial.read(); if (btDaten == ‘8’) { Status = !Status; BTSerial.println(“alle aus”); AlleLEDAus(); break; } // aktuelle LED i einschalten digitalWrite(LED[i], HIGH); } delay(100); for (int i = 0; i <= 4; i++) { btDaten = BTSerial.read(); if (btDaten == ‘8’) { Status = !Status; BTSerial.println(“alle aus”); AlleLEDAus(); break; } // aktuelle LED i ausschalten digitalWrite(LED[i], LOW); } delay(100); } } void AlleLEDAus() { for (int i = 0; i <= 4; i++) { // aktuelle LED i ausschalten digitalWrite(LED[i], LOW); } } |

⇒Bluetooth mit der App ArduinoBlue
Verwandte Anleitungen:
Letzte Aktualisierung:








