#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Adresse des I2C-Expander (PCF8574T)
const int i2cAddress = 0x27;
// Zählvariable für Schließbewegungen
int schliessbewegungen = 0;
// LCD-Objekt erstellen
LiquidCrystal_I2C lcd(i2cAddress, 16, 2);
// Ultraschallsensor Pins
const int trigPin = 9; // Trigger-Pin des Ultraschallsensors
const int echoPin = 10; // Echo-Pin des Ultraschallsensors
void setup() {
// Initialisierung des LCD-Displays
lcd.begin(16, 2);
// Initialisierung des Ultraschallsensors
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Begrüßungsnachricht auf dem LCD anzeigen
lcd.print("Schliessbewegungen:");
lcd.setCursor(0, 1);
lcd.print(schliessbewegungen);
// Warten für Stabilität
delay(1000);
}
void loop() {
// Funktion zum Messen der Entfernung mit dem Ultraschallsensor
int entfernung = messeEntfernung();
// Schließbewegung erkannt (zum Beispiel wenn die Entfernung unter einem bestimmten Wert liegt)
if (entfernung < 10) {
schliessbewegungen++;
// Anzahl der Schließbewegungen auf dem LCD aktualisieren
lcd.setCursor(0, 1);
lcd.print(" "); // Vorherige Anzeige löschen
lcd.setCursor(0, 1);
lcd.print(schliessbewegungen);
// Kurze Pause, um mehrfache Erkennungen zu vermeiden
delay(1000);
}
// Warten für Stabilität
delay(100);
}
// Funktion zum Messen der Entfernung mit dem Ultraschallsensor
int messeEntfernung() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int dauer = pulseIn(echoPin, HIGH);
int entfernung = (dauer * 0.0343) / 2;
return entfernung;
}