#include <Streaming.h>
#include <Button_SL.hpp>
#include "led.hpp"
#include "lauflicht.hpp"
//
// Konstanten
//
constexpr byte potiPin {A0};
constexpr byte buttonPin {3};
//
// Globale Variablen
//
Print &cout = Serial; // c++ cout style
Btn::ButtonSL switchButton {buttonPin};
Led led1; // On Board LED (kein Lauflicht)
Led led2 {12}; // Led an Pin 12 (kein Lauflicht)
//Objekttyp {Pinnummer}
Led ledArray[] { {2}, {4}, {6}, {8} }; // 4 LED Objekte für Lauflicht in Array zusammenfassen
Lauflicht runningLight{ledArray, switchButton, potiPin}; // Lauflicht Objekt anlegen, Konstruktor-Template (lauflicht.hpp) ermittelt die Anzahl der Arrayelemente zur Compilezeit
//
// Main Programm
//
void setup() {
Serial.begin(115200);
uint8_t arrayGroesse = sizeof(ledArray);
uint8_t arrayElemente = arrayGroesse / sizeof(Led);
cout << F("Led-Array gesamt: ") << arrayGroesse
<< F(" Byte\nLed-Objekte: ") << arrayElemente
<< F("\nLed-Objektgroesse (Daten): ") << (arrayGroesse / arrayElemente) << " Byte"
<< endl;
// Einzelne LEDs für Blinken initialisieren
led1.begin(BlinkStatus::on); // LED1 leuchtet sofort nach dem Programmstart
// Default Blinkstatus für den Start ist BlinkStatus::OFF und muss nicht angegeben werden.
led2.begin(); // LED2 leuchtet erst nach 2,5 Sekunden zum Ersten mal
runningLight.begin(); // LEDs für Lauflicht initialisieren.
}
void loop() {
led1(2000); // Onboard LED alle zwei Sekunden blinken lassen
led2(2500); // LED 2 an Pin 12 alle 2,5 Sekunden blinken lassen
runningLight.run(); // Lauflicht steuern.
}