# include "SoftwareSerial.h"
// TX -> 2, RX -> 3
SoftwareSerial BTSerial(2, 3);
int LED[5] = {4, 5, 6, 7, 8};
// über Bluetooth vom Smartphone gesendeter Wert
char btDaten;
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");
}
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
LauflichtRechts(true);
break;
}
case '2':
{
BTSerial.println("Lauflicht links");
BTSerial.println("Neue Aktion: 8 -> alle aus");
// Status true übergeben
LauflichtLinks(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 LauflichtRechts(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 LauflichtLinks(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);
}
}
Letzte Aktualisierung: