Untitled
unknown
plain_text
9 months ago
2.8 kB
6
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