#include <Wire.h>
#include <DFRobot_PAJ7620U2.h>
// Δημιουργία αντικειμένου για τον αισθητήρα
DFRobot_PAJ7620U2 paj;
// Ρελέ στο pin 16
#define RELAY_PIN 16
// Μεταβλητή για αποφυγή συνεχών εναλλαγών
bool relayState = LOW;
unsigned long lastGestureTime = 0;
const unsigned long debounceTime = 500; // 0.5 sec μεταξύ χειρονομιών
void setup() {
Serial.begin(115200);
Serial.println("Έναρξη PAJ7620U2 Gesture Sensor");
// Ρύθμιση του ρελέ
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
// Αρχικοποίηση του αισθητήρα
Wire.begin(); // Ξεκινά το I2C
while (paj.begin() != 0) {
Serial.println("Σφάλμα αρχικοποίησης PAJ7620U2! Ελέγξτε τις συνδέσεις.");
delay(1000);
}
Serial.println("Αισθητήρας PAJ7620U2 αρχικοποιήθηκε επιτυχώς.");
// Ρύθμιση σε γρήγορη λειτουργία (για άμεση απόκριση)
paj.setGestureHighRate(true);
}
void loop() {
// Διάβασμα χειρονομίας
DFRobot_PAJ7620U2::eGesture_t gesture = paj.getGesture();
// Αν έχει περάσει αρκετός χρόνος από την προηγούμενη χειρονομία
if (gesture != paj.eGestureNone && (millis() - lastGestureTime > debounceTime)) {
// Εμφάνιση περιγραφής για debugging (προαιρετικά)
String desc = paj.gestureDescription(gesture);
Serial.print("Ανιχνεύθηκε: ");
Serial.println(desc);
// Έλεγχος για κίνηση UP
if (gesture == paj.eGestureUp) {
digitalWrite(RELAY_PIN, HIGH);
relayState = HIGH;
Serial.println("→ Ρελέ ΕΝΕΡΓΟΠΟΙΗΘΗΚΕ (UP)");
lastGestureTime = millis();
}
// Έλεγχος για κίνηση DOWN
else if (gesture == paj.eGestureDown) {
digitalWrite(RELAY_PIN, LOW);
relayState = LOW;
Serial.println("→ Ρελέ ΑΠΕΝΕΡΓΟΠΟΙΗΘΗΚΕ (DOWN)");
lastGestureTime = millis();
}
}
delay(50); // Μικρή καθυστέρηση για σταθερότητα
}