工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

動体検知RGB LEDカラーチェンジャー:Arduinoプロジェクト

必要な部品と材料

部品 数量
SparkFun APDS-9960 ジェスチャーセンサー 1
Arduino UNO 1
RGBディフューズドLED(共通カソード) 1
抵抗 4.75kΩ 1
ジャンパーワイヤー 1セット

使用ツール・サービス

プロジェクト概要

このプロジェクトでは、あなたの動きを使ってRGB LEDを制御できます。SparkFun APDS-9960と共通カソード(アノードではない)のRGB LEDが必要です。このセンサーはI2Cプロトコルを使用するため、5V動作のArduinoボードと4.7kΩ抵抗を使用してください。回路図通りに接続すれば、コード内でカスタムカラーを追加できます。デフォルトでは6色を用意しています。

デフォルト操作

このコードは他の多くのプロジェクトにも応用可能です。自由に実験して、さらに素晴らしい作品を作ってください!

動体検知RGB LEDカラーチェンジャー:Arduinoプロジェクト

コード

Arduinoコード (C/C++)

#include 
#include 

// ピン定義
#define APDS9960_INT 2  // 割り込みピンである必要あり

// 定数
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);

  // APDS-9960初期化
  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:  // 赤
        Serial.println("red");
        analogWrite(red_pin, 255);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 0);
        break;
      case 1:  // ベビーブルー
        Serial.println("baby blue");
        analogWrite(red_pin, 255);
        analogWrite(green_pin, 153);
        analogWrite(blue_pin, 204);
        break;
      case 2:  // ダークブルー
        Serial.println("dark blue");
        analogWrite(red_pin, 100);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 170);
        break;
      case 3:  // 緑
        Serial.println("green");
        analogWrite(red_pin, 0);
        analogWrite(green_pin, 255);
        analogWrite(blue_pin, 0);
        break;
      case 4:  // 青
        Serial.println("blue");
        analogWrite(red_pin, 0);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 255);
        break;
      case 5:  // バイオレット
        Serial.println("violet");
        analogWrite(red_pin, 191);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 255);
        break;
    }
  } else if (onOff_flag == 0) {
    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 == 1) {
          if (colorNumber > 0) {
            colorNumber -= 1;
          } else {
            colorNumber = 5;
          }
          Serial.println(colorNumber);
        }
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        if (onOff_flag == 1) {
          if (colorNumber < 5) {
            colorNumber += 1;
          } else {
            colorNumber = 0;
          }
          Serial.println(colorNumber);
        }
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
}

回路図

回路図通りに接続してください。

動体検知RGB LEDカラーチェンジャー:Arduinoプロジェクト

製造プロセス

  1. Raspberry Pi、PIRセンサー、MQTTで作るモーション制御AWS IoTボタン
  2. Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
  3. ジェスチャー制御 RGB テーブルランプ – インタラクティブなハンズフリー照明
  4. ラズベリーパイとNode-REDでAlexaからLEDを制御する - 簡単ステップバイステップガイド
  5. 古いラジコンカーをXboxコントローラーで操作可能に - ArduinoとUSBホストシールドで実現
  6. Arduinoベースのヌンチャク操作6自由度ロボットアームキット
  7. Arduino Nanoで音声制御ロボットを自作
  8. Arduino Nanoで作るスマートな動体検知水鉄砲
  9. PiBot:Arduino駆動の精密ピアノ演奏ロボット
  10. Arduino RGB LEDカラーミキサー:初心者向けDIYプロジェクト
  11. Wi-Servo:WebブラウザからWi-Fi経由でサーボモーターを制御