#include "ArduinoBLE.h"
/*
eindeutige UUID bestimmen:
https://www.guidgenerator.com/online-guid-generator.aspx
https://www.uuidgenerator.net/
BLERead | BLEWrite | BLENotify
-> schreiben, lesen, Info
*/
// Name BLE-Service
BLEService LEDSchalten("19b10000-e8f2-537e-4f6c-d104768a1214");
BLEUnsignedCharCharacteristic Auswahl("19b10000-e8f2-537e-4f6c-d104768a1214", BLERead | BLEWrite | BLENotify);
enum Ampel
{
ROT = 5,
GELB,
GRUEN
};
void setup()
{
Serial.begin(9600);
// pinMode festlegen
for (int i = ROT; i <= GRUEN; i++)
{
pinMode(i, OUTPUT);
}
// BLE starten
if (!BLE.begin()) Serial.println("Bluetooth-Modul konnte nicht gestartet werden!");
else Serial.println("Bluetooth-Modul erfolgreich gestartet!");
// Name festlegen (wird in der App angezeigt) und den Service (LEDSchalten) zuweisen
BLE.setLocalName("LEDs schalten");
BLE.setAdvertisedService(LEDSchalten);
// Auswahl als Platzhalter für den in der App gewählten Wert
LEDSchalten.addCharacteristic(Auswahl);
// Service LEDSchalten hinzufügen
BLE.addService(LEDSchalten);
// Startwert für die Kommunikation schreiben
Auswahl.writeValue(0);
// Zuweisung starten
BLE.advertise();
}
void loop()
{
// auf die Verbindung zu Geräten warten
BLEDevice Verbindung = BLE.central();
// wenn der Arduino mit einem Gerät verbunden ist ...
if (Verbindung)
{
Serial.println("Verbunden ... ");
// solange der Arduino mit einem Gerät verbunden ist ...
while (Verbindung.connected())
{
/*
Dezimal -> Hex-Umrechnung
10 -> A
11 -> B
12 -> C
20 -> 14
21 -> 15
22 -> 16
30 -> 1E
*/
if (Auswahl.written())
{
if (Auswahl.value() == 10)
{
Serial.print(Auswahl.value());
Serial.println(" -> rot ein");
digitalWrite(ROT, HIGH);
}
if (Auswahl.value() == 11)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> gelb ein"));
digitalWrite(GELB, HIGH);
}
if (Auswahl.value() == 12)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> gr\u00fcn ein"));
digitalWrite(GRUEN, HIGH);
}
if (Auswahl.value() == 20)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> rot aus"));
digitalWrite(ROT, LOW);
}
if (Auswahl.value() == 21)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> gelb aus"));
digitalWrite(GELB, LOW);
}
if (Auswahl.value() == 22)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> gr\u00fcn aus"));
digitalWrite(GRUEN, LOW);
}
// Ampel schalten
if (Auswahl.value() == 30)
{
Serial.print(Auswahl.value());
Serial.println(F(" -> Ampel schalten"));
digitalWrite(ROT, HIGH);
delay(5000);
digitalWrite(GELB, HIGH);
delay(1000);
digitalWrite(ROT, LOW);
digitalWrite(GELB, LOW);
digitalWrite(GRUEN, HIGH);
delay(3000);
digitalWrite(GRUEN, LOW);
digitalWrite(GELB, HIGH);
delay(1000);
digitalWrite(GELB, LOW);
digitalWrite(ROT, HIGH);
}
}
}
}
}
Letzte Aktualisierung: