LEDs mit Bluetooth

# 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.print("Lauflicht vor");

      // Status true übergeben
      LauflichtVor(true);
      break;
    }
    
    case '2':
    {
      BTSerial.print("Lauflicht zur\u00fcck");

      // Status true übergeben
      LauflichtZurueck(true);
      break;
    }
    
    case '3':
    {
      BTSerial.print("alle an");
      AlleLEDAus();
      AlleLEDAn();
      break;
    }
    case '4':
    {
      BTSerial.print("alle blinken");
      
      // Status true übergeben
      LEDBlinken(true);
      break;
    }

    case '8':
    {
      BTSerial.print("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.print("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.print("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.print("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.print("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: 25. Jul 2023 @ 19:00