Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cambio de color RGB activado por movimiento con Arduino y APDS-9960

Componentes y suministros

SparkFun APDS-9960 (Sensor de gestos, proximidad, luz RGB y color) ×1
Arduino UNO ×1
LED RGB Difuso Cátodo Común ×1
Resistencia 4.75k Ω (para pull-up I2C) ×1
Cables jumper ×1

Aplicaciones y servicios online

Sobre el proyecto

Este proyecto te permite aprovechar el poder de tus movimientos para controlar un LED RGB. Necesitas el SparkFun APDS-9960 y un LED RGB de cátodo común (no ánodo). Asegúrate de usar una placa Arduino de 5V con resistencias de 4.7k Ω, ya que el sensor usa protocolo I2C. Conecta según el esquemático.

Los controles por defecto son:

He incluido 6 colores predefinidos, pero puedes añadir los tuyos en el código. ¡Adáptalo a otros proyectos y experimenta!

Cambio de color RGB activado por movimiento con Arduino y APDS-9960

Código

Código Arduino (C/C++)

#include 
#include 

// Pines
#define APDS9960_INT 2  // Debe ser pin de interrupción
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;
int onOff_flag = 0;
int colorNumber = 0;

// Variables globales
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {
  pinMode(APDS9960_INT, INPUT);
  Serial.begin(9600);
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));

  // Rutina de servicio de interrupción
  attachInterrupt(0, interruptRoutine, FALLING);

  // Inicializar APDS-9960
  if ( apds.init() ) {
    Serial.println(F("Inicialización APDS-9960 completa"));
  } else {
    Serial.println(F("Error en init APDS-9960!"));
  }

  // Iniciar motor de gestos
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Sensor de gestos activo"));
  } else {
    Serial.println(F("Error iniciando sensor gestos!"));
  }

  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  analogWrite(A0, 0);
  analogWrite(A1, 0);
  analogWrite(A2, 0);
}

void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }

  if (onOff_flag == 1){
    switch (colorNumber){
      case 0: Serial.println("rojo"); analogWrite(red_pin, 255); analogWrite(green_pin, 0); analogWrite(blue_pin, 0); break;
      case 1: Serial.println("azul bebé"); analogWrite(red_pin, 255); analogWrite(green_pin, 153); analogWrite(blue_pin, 204); break;
      case 2: Serial.println("azul oscuro"); analogWrite(red_pin, 100); analogWrite(green_pin, 0); analogWrite(blue_pin, 170); break;
      case 3: Serial.println("verde"); analogWrite(red_pin, 0); analogWrite(green_pin, 255); analogWrite(blue_pin, 0); break;
      case 4: Serial.println("azul"); analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 255); break;
      case 5: Serial.println("violeta"); analogWrite(red_pin, 191); analogWrite(green_pin, 0); analogWrite(blue_pin, 255); break;
    }
  } else {
    analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 0);
  }
  delay(1000);
}

void interruptRoutine() { isr_flag = 1; }

void handleGesture() {
  if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:    Serial.println("ARRIBA"); onOff_flag = 1; break;
      case DIR_DOWN:  Serial.println("ABAJO"); onOff_flag = 0; break;
      case DIR_LEFT:  Serial.println("IZQUIERDA");
        if(onOff_flag == 1){
          if(colorNumber > 0) colorNumber--;
          else colorNumber = 5;
          Serial.println(colorNumber);
        }
        break;
      case DIR_RIGHT: Serial.println("DERECHA");
        if(onOff_flag == 1){
          if(colorNumber < 5) colorNumber++;
          else colorNumber = 0;
          Serial.println(colorNumber);
        }
        break;
      case DIR_NEAR: Serial.println("CERCA"); break;
      case DIR_FAR:  Serial.println("LEJOS"); break;
      default:       Serial.println("NINGUNO");
    }
  }
}

Esquemáticos

Conecta tal como se muestra.

Cambio de color RGB activado por movimiento con Arduino y APDS-9960

Proceso de manufactura

  1. Botón IoT AWS Controlado por Movimiento con Raspberry Pi, Sensor PIR y MQTT
  2. Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
  3. Lámpara de mesa RGB controlada por gestos – Iluminación interactiva y sin manos
  4. Controla LEDs con Alexa mediante Raspberry Pi – Guía paso a paso fácil
  5. Transforma un viejo coche RC en un vehículo controlado por joystick con Arduino
  6. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
  7. Construye un robot controlado por voz con Arduino Nano
  8. Pistola de Agua Inteligente Activada por Movimiento con Arduino Nano
  9. PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión
  10. Mezclador de Colores RGB con Arduino – Proyecto DIY para Principiantes
  11. Wi-Servo: Controla servomotores por Wi‑Fi desde un navegador web