Sensori con Arduino

Sensore di riconoscimento gesti APDS9960

Sensore di riconoscimento dei gesti - Sensori con Arduino

Descrizione

In questo episodio della serie dedicata ai sensori, impareremo a utilizzare il sensore di gesti APDS9960 con Arduino. Vedremo come creare il circuito e scrivere lo sketch per riconoscere i movimenti della mano.

Inoltre scopriremo come sfruttare altre funzionalità come il riconoscimento della luce, del colore e della prossimità.

Scarica le risorse

Progetto: Riconoscimento dei gesti

Schema

Componenti

Codice

#include <Adafruit_APDS9960.h>#include <LiquidCrystal_I2C.h> Adafruit_APDS9960 apds;LiquidCrystal_I2C lcd(0x27162); bool change = false;unsigned long lastChange = 0; void setup() {  apds.begin();  apds.enableProximity(true);  apds.enableGesture(true);  lcd.init();  lcd.backlight();  updateDisplay(0);} void loop() {  int gesture = apds.readGesture();  if (gesture) {    updateDisplay(gesture);    change = true;    lastChange = millis();  }  if (change && (millis() - lastChange) > 1000) {    updateDisplay(0);    change = false;  }  delay(1);} void updateDisplay(int gesture) {  lcd.clear();  switch (gesture) {    case APDS9960_UP:      lcd.setCursor(70);      lcd.print("SU");      break;          case APDS9960_DOWN:      lcd.setCursor(61);      lcd.print("GIU'");      break;          case APDS9960_LEFT:      lcd.setCursor(01);      lcd.print("SINISTRA");      break;          case APDS9960_RIGHT:      lcd.setCursor(101);      lcd.print("DESTRA");      break;     default:      lcd.setCursor(30);      lcd.print("Attesa del");      lcd.setCursor(41);      lcd.print("gesto...");      break;  }}
scarica il file

Progetto: Colore della luce

Schema

Componenti

Codice

#include <Adafruit_APDS9960.h>#include <LiquidCrystal_I2C.h> Adafruit_APDS9960 apds;LiquidCrystal_I2C lcd(0x27162); void setup() {  apds.begin();  apds.enableColor(true);  lcd.init();  lcd.backlight();} void loop() {  uint16_t red, green, blue, light;   while (!apds.colorDataReady()) {    delay(5);  }   apds.getColorData(&red, &green, &blue, &light);  String color = mainColor(red, green, blue);   lcd.clear();  lcd.setCursor(00);  lcd.print("LUMINOSITA': " + String(light));  lcd.setCursor(01);  lcd.print("COLORE: " + color);  delay(500);} String mainColor(uint16_t red, uint16_t green, uint16_t blue) {  String color = "bianco";  if (red > (green + blue) * 2) {    color = "rosso";  } else if (green > (red + blue) * 0.8) {    color = "verde";  } else if (blue > (red + green) * 2.5) {    color = "blu";  } else if ((red + green) > blue * 1.3) {    color = "giallo";  } else if ((red + blue) > green * 5) {    color = "magenta";  } else if ((green + blue) > red * 5) {    color = "ciano";  }  return color;}
scarica il file

Progetto: Prossimità

Schema

Componenti

Codice

#include <Adafruit_APDS9960.h>#include <LiquidCrystal_I2C.h> Adafruit_APDS9960 apds;LiquidCrystal_I2C lcd(0x27162); int lastState = 0; void setup() {  apds.begin();  apds.enableProximity(true);  lcd.init();  lcd.backlight();  lcd.clear();  lcd.setCursor(20);  lcd.print("PROSSIMITA'");  updateDisplay(0);} void loop() {  int proximity = apds.readProximity();  int state = round(proximity / 16.0);  if (state != lastState) {    updateDisplay(state);    lastState = state;  }  delay(1);} void updateDisplay(int state) {  lcd.setCursor(01);  for (int i = 0; i < state; i++) {    lcd.print(char(0xFF));  }  for (int i = state; i < 16; i++) {    lcd.print(" ");  }}
scarica il file

Altri componenti

Arduino Software Hero

Vuoi imparare a programmare Arduino, ma non sai da dove cominciare?

Iscriviti al corso online

Libri consigliati

In qualità di Affiliato Amazon riceviamo un guadagno dagli acquisti idonei


Tutorial consigliati

E-commerce di elettronica

Sul nostro negozio online trovi tutti i componenti usati nei tutorial.
Inoltre hai un'ampia scelta di prodotti tra:

  • Arduino
  • Raspberry Pi
  • Sensori
  • Robotica
  • Componenti elettronici
  • Accessori

Compra online, ricevi comodamente a casa

Visita il negozio