Untitled
unknown
plain_text
24 days ago
2.8 kB
3
Indexable
#include <TM1637Display.h> // Bibliothek für das 4-Digit-Display const int ledPin = D5; // Rote LED (Alarm) const int ledPingruen = D6; // Grüne LED (Status) const int buzzerPin = D7; // Buzzer const int trigPin = D1; // HC-SR04 Trig const int echoPin = D2; // HC-SR04 Echo const int buttonPin = D3; // Taster zum dauerhaften Umschalten const int buttonPin2 = D4; // Taster zum kurzzeitigen Ausschalten const int CLK = D8; // TM1637 Display CLK const int DIO = D9; // TM1637 Display DIO TM1637Display display(CLK, DIO); bool alarmActive = false; bool tempDisabled = false; unsigned long disableTime = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPingruen, OUTPUT); pinMode(buzzerPin, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(buttonPin, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); display.setBrightness(7); // Helligkeit des Displays (0-7) display.showNumberDec(0, true); // Startanzeige "0000" Serial.begin(9600); } void loop() { // Button 1: Alarm dauerhaft ein/aus if (digitalRead(buttonPin) == LOW) { delay(300); alarmActive = !alarmActive; Serial.print("Alarmanlage ist jetzt: "); Serial.println(alarmActive ? "AKTIV" : "INAKTIV"); while (digitalRead(buttonPin) == LOW); } // Button 2: Alarm für 10 Sekunden deaktivieren if (digitalRead(buttonPin2) == LOW) { delay(300); tempDisabled = true; disableTime = millis(); Serial.println("Alarm für 10 Sekunden deaktiviert!"); while (digitalRead(buttonPin2) == LOW); } // Berechnung der verbleibenden Zeit int remainingTime = 0; if (tempDisabled) { remainingTime = 10 - ((millis() - disableTime) / 1000); if (remainingTime <= 0) { tempDisabled = false; remainingTime = 0; Serial.println("Alarm wieder aktiv!"); } } // Display-Anzeige aktualisieren display.showNumberDec(remainingTime, true); // Grüne LED zeigt an, ob Alarm aktiv ist (nicht vorübergehend deaktiviert) digitalWrite(ledPingruen, (alarmActive && !tempDisabled) ? HIGH : LOW); if (alarmActive && !tempDisabled) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); float distanceCm = (duration * 0.0343) / 2; Serial.print("Distanz: "); Serial.print(distanceCm); Serial.println(" cm"); if (distanceCm < 20) { digitalWrite(buzzerPin, HIGH); digitalWrite(ledPin, HIGH); delay(1000); } else { digitalWrite(buzzerPin, LOW); digitalWrite(ledPin, LOW); } } else { digitalWrite(buzzerPin, LOW); digitalWrite(ledPin, LOW); } delay(200); }
Editor is loading...
Leave a Comment