#include <Streaming.h>
#include "LedArray.hpp"
//
// Konstanten
//
constexpr byte potiPin {A0};
constexpr byte buttonPin {12};
//
// Globale Variablen
//
Print &cout = Serial; // c++ style cout
Led leds[2] { Led{}, Led{} };
Led rLeds[] { Led{2}, Led{3}, Led{4}, Led{5}, Led{6} };
Led lLeds[] { Led{7}, Led{8}, Led{9}, Led{10}, Led{11} };
LedArray redLEDGroup {rLeds,500};
LedArray greenLEDGroup {lLeds,500};
//
// Main Programm
//
void setup() {
Serial.begin(115200);
uint8_t arrayGroesse = sizeof(rLeds);
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
leds[0].begin();
// Default Blinkstatus für den Start ist LightStatus::OFF und muss nicht angegeben werden.
leds[1].begin(A1); // LED2 leuchtet erst nach 2,5 Sekunden zum Ersten mal
redLEDGroup.begin(); // LEDs für Lauflicht initialisieren.
greenLEDGroup.begin(); // LEDs für Lauflicht initialisieren.
redLEDGroup.reverseSweep(true);
redLEDGroup.setBits(15);
greenLEDGroup.setIterations(5);
redLEDGroup.setIterations(5);
delay(5000);
}
void loop() {
static uint32_t timeStamp;
leds[0](2000); // Onboard LED alle zwei Sekunden blinken lassen
leds[1](2500); // LED 2 an Pin 12 alle 2,5 Sekunden blinken lassen
redLEDGroup.doSweep(); // Lauflicht steuern.
greenLEDGroup.doSweep(); // Lauflicht steuern.
if (redLEDGroup.iterationsDone() && greenLEDGroup.iterationsDone() ) {
if (millis() - timeStamp >= 5000) {
greenLEDGroup.setIterations(5);
redLEDGroup.setIterations(5);
}
} else {
timeStamp = millis();
}
}