/* Uhrzeit mit millis() erzeugen
* Die Abfrage von millis() und previousMillis gibt eine Ausführung in der if-Abfrage
* im Sekundentakt. Mit einem Module-60-Zähler werden Sekunden und Minuten erzeugt
*/
//***** Taster und LEDs wie auf bleuer Platine **********************
const int LED_rot=32, LED_gruen=33, Taster2=2, Taster4=4;
//***** Globale Variablen *******************************************
unsigned long Ausschaltzeit_rot, Ausschaltzeit_gruen;
unsigned long Laufzeit_rot, Laufzeit_gruen;
//***** Setup, wird 1x ausgeführt ***********************************
void setup() {
Serial.begin(115200);
pinMode(LED_rot, OUTPUT);
pinMode(LED_gruen, OUTPUT);
pinMode(Taster2, INPUT_PULLUP);
pinMode(Taster4, INPUT_PULLUP);
Laufzeit_rot = 10000; // 10 Sekunden
Laufzeit_gruen = 15000; // 15 Sekunden
}
//***** Loop wird immer wieder ausgeführt ****************************
void loop() {
unsigned long currentMillis = millis ( );
// nachtriggerbar, wenn der Taster bei leuchtender LED
// wieder gedrückt wird, wird die Zeit verlängert
if ( digitalRead ( Taster2 ) == LOW ) {
digitalWrite ( LED_rot, LOW ); // EINschalten mit LOW
Ausschaltzeit_rot = currentMillis + Laufzeit_rot;
}
if ( currentMillis >= Ausschaltzeit_rot ) {
digitalWrite ( LED_rot, HIGH ); // AUSschalten mit HIGH
}
// nicht nachtriggerbar => wenn die LED bereits an ist, soll die
// Zeit NICHT verlängert werden => prüfe, ob LED noch aus ist
if ( (digitalRead ( Taster4 ) == LOW) && (digitalRead(LED_gruen)==HIGH ) ) {
digitalWrite ( LED_gruen, LOW ); // EINschalten mit LOW
Ausschaltzeit_gruen = currentMillis + Laufzeit_gruen;
}
if ( currentMillis >= Ausschaltzeit_gruen ) {
digitalWrite ( LED_gruen, HIGH ); // AUSschalten mit HIGH
}
}
Taster2
Taster4
LED32
LED33
ESP32 Schulboard mit LEDs und Tastern, I2C-Bus mit Standard-Belegung
SSD1306 Display
WS2812 an Pin26