Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

RGB-светодиак с управлением жестами: Проект на Arduino и APDS-9960

Компоненты и материалы

SparkFun APDS-9960 (сенсор жестов/проксималити/RGB) 1
Arduino UNO 1
RGB-светодиод общий катод (Common Cathode) 1
Резистор 4.75 кОм 1
Перемычки 1

Приложения и сервисы

О проекте

Проект позволяет управлять RGB-светодиодом жестами рук. Нужен SparkFun APDS-9960 и RGB-светодиод общего катода. Используйте 5-вольтовый Arduino с подтягивающими резисторами 4.7 кОм (I2C). Подключите по схеме.

Базовые жесты:

В коде задано 6 цветов. Легко адаптируется под другие задачи. Экспериментируйте!

RGB-светодиак с управлением жестами: Проект на Arduino и APDS-9960

Код (Arduino)

#include 
#include 

#define APDS9960_INT 2  // Пин прерывания

// Пины RGB (PWM)
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;

int onOff_flag = 0;
int colorNumber = 0;

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("--------------------------------"));

  attachInterrupt(0, interruptRoutine, FALLING);

  if (apds.init()) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }

  if (apds.enableGestureSensor(true)) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }

  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: // Красный
        analogWrite(red_pin, 255); analogWrite(green_pin, 0); analogWrite(blue_pin, 0); break;
      case 1: // Голубой
        analogWrite(red_pin, 255); analogWrite(green_pin, 153); analogWrite(blue_pin, 204); break;
      case 2: // Тёмно-синий
        analogWrite(red_pin, 100); analogWrite(green_pin, 0); analogWrite(blue_pin, 170); break;
      case 3: // Зелёный
        analogWrite(red_pin, 0); analogWrite(green_pin, 255); analogWrite(blue_pin, 0); break;
      case 4: // Синий
        analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 255); break;
      case 5: // Фиолетовый
        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("UP"); onOff_flag = 1; break;
      case DIR_DOWN:  Serial.println("DOWN"); onOff_flag = 0; break;
      case DIR_LEFT:  Serial.println("LEFT"); if(onOff_flag) { colorNumber = (colorNumber > 0) ? colorNumber-1 : 5; } break;
      case DIR_RIGHT: Serial.println("RIGHT"); if(onOff_flag) { colorNumber = (colorNumber < 5) ? colorNumber+1 : 0; } break;
      case DIR_NEAR:  Serial.println("NEAR"); break;
      case DIR_FAR:   Serial.println("FAR"); break;
      default:        Serial.println("NONE");
    }
  }
}

Схемы

Подключите как на схеме.

RGB-светодиак с управлением жестами: Проект на Arduino и APDS-9960

Производственный процесс

  1. Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
  2. Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
  3. Настольная RGB-лампа с управлением жестами – Интерактивное беспроводное освещение
  4. Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
  5. Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
  6. Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
  7. Голосовой робот на Arduino Nano: Управление речью через Bluetooth
  8. Умный водяной пистолет с датчиком движения на Arduino Nano
  9. PiBot: Робот-пианист на Arduino для точного исполнения музыки
  10. Arduino RGB-микшер цветов: Простой проект для начинающих