Smart gesture robot
smart gesture robot using APDS9960 sensor
My Hand gesture Smart mouse using arduino and APDS9960
Wave your hands and light turns on. Can you believe this magic turns into reality?
Meet the Gesture Sensor which offers touch-less gesture sensing - you can issue orders simply with a swipe of your hand! Furthermore, it supports RGB color detecting and ambient light measuring. With this new sensor, traditional switch can be replaced.
Operating Voltage: 3.3-5V
I2C interface x1
Interrupt pin x1
Detecting range: 100mm (3.94")
Module size: 18.3x16.4mm (0.72x0.65")
This project shows detecting gestures of hand to RIGHT, LEFT, UP, DOWN and also Ambient color and proximity detection using Arduino module APDS-9960 .
Arduino Nano+ RGB and Gesture Sensor(5pin and 6pin, purple board) which control the light bulb - Arduino Nano+RGB and Gesture Sensor APDS-9960(6pin .
MY Previous video :) https://youtu.be/8LVRWCUIVyY
#include <Wire.h>
#include <SparkFun_APDS9960.h>
#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();
#include <LiquidCrystal.h>
String incomingByte;
const int rs = 32, en = 30, d4 = 28, d5 = 26, d6 = 24, d7 = 22;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int isr_flag = 0;
int m1 = 50;
int m11 = 52;
int m2 = 53;
int m22 = 51;
void setup() {
pinMode(APDS9960_INT, INPUT);
Serial.begin(9600);
Wire.beginTransmission(9);
pinMode (m1,OUTPUT);
pinMode (m11,OUTPUT);
pinMode (m2,OUTPUT);
pinMode (m22,OUTPUT);
lcd.begin(16, 22);
Serial.println();
Serial.println(F("--------------------------------"));
Serial.println(F("Zeeatech - Gesture robot Test"));
Serial.println(F("--------------------------------"));
// Initialize interrupt service routine
// Initialize APDS-9960 (configure I2C and initial values)
if ( apds.init() ) {
Serial.println(F("APDS-9960 initialization complete"));
} else {
Serial.println(F("Something went wrong during APDS-9960 init!"));
}
// Start running the APDS-9960 gesture sensor engine
if ( apds.enableGestureSensor(true) ) {
Serial.println(F("Gesture sensor is now running"));
} else {
Serial.println(F("Something went wrong during gesture sensor init!"));
}
}
void loop() {
Wire.beginTransmission(9);
if ( apds.isGestureAvailable() ) {
switch ( apds.readGesture() ) {
case DIR_UP:
Serial.println("UP");
digitalWrite (m1,HIGH);
digitalWrite (m11,LOW);
digitalWrite (m2,HIGH);
digitalWrite (m22,LOW);
delay(3000);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
case DIR_DOWN:
Serial.println("DOWN");
digitalWrite (m11,HIGH);
digitalWrite (m1,LOW);
digitalWrite (m22,HIGH);
digitalWrite (m2,LOW);
delay(3000);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
case DIR_LEFT:
Serial.println("LEFT");
digitalWrite (m1,HIGH);
digitalWrite (m11,LOW);
digitalWrite (m22,HIGH);
digitalWrite (m2,LOW);
delay(500);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
case DIR_RIGHT:
Serial.println("RIGHT");
digitalWrite (m2,HIGH);
digitalWrite (m22,LOW);
digitalWrite (m11,HIGH);
digitalWrite (m1,LOW);
delay(500);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
case DIR_NEAR:
Serial.println("NEAR");
digitalWrite (m11,HIGH);
digitalWrite (m1,LOW);
digitalWrite (m22,HIGH);
digitalWrite (m2,LOW);
delay(2000);
digitalWrite (m1,HIGH);
digitalWrite (m11,LOW);
digitalWrite (m2,HIGH);
digitalWrite (m22,LOW);
delay(2000);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
case DIR_FAR:
Serial.println("FAR");
digitalWrite (m1,HIGH);
digitalWrite (m11,LOW);
digitalWrite (m22,HIGH);
digitalWrite (m2,LOW);
delay(500);
digitalWrite (m2,HIGH);
digitalWrite (m22,LOW);
digitalWrite (m11,HIGH);
digitalWrite (m1,LOW);
delay(500);
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
break;
default:
Serial.println("hii");
digitalWrite (m1,LOW);
digitalWrite (m11,LOW);
digitalWrite (m2,LOW);
digitalWrite (m22,LOW);
}
if (Serial.available()) {
delay(100);
lcd.clear();
while (Serial.available() > 0) {
lcd.write(Serial.read());
}
}
}
}
Comments
Post a Comment