Der Grove Smart IR Gesture Sensor (PAJ7660) ist mit einer Infrarotkamera ausgestattet, welche Handgestiken erkennen kann die auf vortrainiert auf dem Chip gespeichert sind. Diesen Sensor habe ich bestellt und wir konnten ihn dann mit unserem Arduino Grove Set verbinden. Die Hand wird dann in einem Abstand von15-30 cm zum Sensor erkannt.
Da wir noch ein LCD Backlight, einen Buzzer und eine LED beleuchtete Skelettehand griffbereit hatten haben wir das auch gleich alles angeschlossen und die einzig Sinnvolle Logik dazu programmiert: Wenn der Daumen hoch zeigt soll die Skeletthand blinken und das LCD grün leuchten, bei Daumen runter soll es einen Alarm geben und das LCD soll rot leuchten.
Hier im Video kann man ein Blick darauf werfen:
Und hier noch der Code:
#include "Gesture.h"
#include <Wire.h>
#include "rgb_lcd.h"
#include <Arduino.h>
const int buzzerPin = 6;
const int skeletthandpin = 2;
pag7660 Gesture(GESTURE_THUMB_MODE); // Thumb mode is used
rgb_lcd lcd;
void setup() {
lcd.begin(16, 2);
// Set the buzzer pin as an output
pinMode(buzzerPin, OUTPUT);
pinMode(skeletthandpin, OUTPUT);
Serial.begin(9600);
while (!Serial) {
delay(100);
}
Serial.println("\nPAG7660 TEST DEMO: Gesture thumb mode.");
// initialize with a SPI chip select pin number to use SPI
if (Gesture.init()) {
Serial.println("PAG7660 initialization success");
} else {
Serial.println("PAG7660 initialization failed");
}
Serial.println("Please input your gestures:\n");
}
void loop() {
// Turn off the buzzer
digitalWrite(buzzerPin, LOW);
digitalWrite(skeletthandpin, LOW);
pag7660_gesture_t result;
if (Gesture.getResult(result)) {
if (result.thumb.up){
lcd.setRGB(0, 255, 0);
digitalWrite(skeletthandpin, HIGH);
Serial.println("Daumen hoch");
}
else if (result.thumb.down){
// Turn on the buzzer
digitalWrite(buzzerPin, HIGH);
Serial.println("Daumen runter");
lcd.setRGB(255, 0, 0);
}
}
delay(100);
}