void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
'`'cpp
#define (RELAIS_PIN = 13); // Relais an GPIO13
#define (TASTER_PIN = 12); // Taster an GPIO12
unsigned long lastDebounceTime = 0; // Die letzte Zeit, zu der der Tasterzustand geändert wurde
unsigned long debounceDelay = 100; // Entprellungszeit (in Millisekunden)
bool lastTasterState = HIGH; // Der letzte Zustand des Tasters
bool tasterState = HIGH; // AKtueller Zustand des Tasters
bool relaisStatus = LOW; // Relaisstatus (an/aus)
void setup(){ //initialisierung der Pins
pinMode(RELAIS_PIN 13, OUTPUT); //Relais-Pin als Ausgang
pinMode(TASTER_PIN 12, INOUT_PULLUP); //Taster-Pin als Eingang mit Pullup-Widerstand
digitalWrite(RELAIS_PIN, relaisStatus); //Relais initial auf aus (LOW)
Serial.begin(115200); //serielle Kommunikation starten (optional für Debugging)
}
void loop (){
//Lese den Zustand des Tasters
int reading = digitalRead(TASTER-PIN);
//Entprellung des Tasters: wenn der Zustand des Tasters sich geändert hat, speichere die Zeit
if(reading !=lastTasterState){
lastDebounceTime = millis();
}
//wenn genügend Zeit vergangen ist, um eine Entprellung durchzuführen
if((millis() - lastDebounceTime) > debounceDelay){
//wenn der Tasterzustand sich geändert hat
if (reading != tasterState){
tasterState=reading;
//wenn der Taster gerade unterbrochen wurde (von LOW auf HIGH)
if (tasterState == HIGH){
//Schalte das Relais
relaisStatus = !relaisStatus; // Toggle Relais
digitalWRITE(RELAIS_PIN, relaisSTATUS; //Relais an/aus
serial.print("Relais Status: ")
Serial.printIn(relaisStatus ? "AN" : "AUS"); //Optional: Ausgabe des Relaisstatus)
}
}
}
//Speicher den aktuellen Tasterzustnad für die nächste Iteration
lastTasterState = reading;
}
'`'