산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

모션 감지 RGB LED 색상 변경기: 아두이노 프로젝트

부품 및 소모품

SparkFun APDS-9960 제스처 센서 ×1
점퍼 와이어 (일반) ×1
아두이노 UNO ×1
저항 4.75kΩ ×1
RGB 디퓨즈드 공통 캐소드 LED ×1

앱 및 온라인 서비스

프로젝트 소개

이 프로젝트는 손동작을 이용해 RGB LED를 제어하는 방법을 보여줍니다. SparkFun APDS-9960 센서와 공통 캐소드 RGB LED가 필요합니다(공통 애노드 아님). I2C 프로토콜을 사용하는 이 센서는 5V 아두이노 보드와 4.7kΩ 저항과 함께 사용해야 합니다. 회로도대로 연결한 후 코드에서 커스텀 색상을 추가할 수 있습니다. 기본 제어 방식은 다음과 같습니다:

이 코드는 다양한 다른 프로젝트에도 적용 가능합니다. 자유롭게 실험하며 멋진 프로젝트를 만들어보세요!

모션 감지 RGB LED 색상 변경기: 아두이노 프로젝트

코드

아두이노 코드 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);
  
  if (apds.init()) {
    Serial.println(F("APDS-9960 초기화 완료"));
  } else {
    Serial.println(F("APDS-9960 초기화 중 오류 발생!"));
  }
  
  if (apds.enableGestureSensor(true)) {
    Serial.println(F("제스처 센서 실행 중"));
  } else {
    Serial.println(F("제스처 센서 초기화 중 오류 발생!"));
  }
  
  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("빨강"); analogWrite(red_pin, 255); analogWrite(green_pin, 0); analogWrite(blue_pin, 0); break;
      case 1: Serial.println("베이비 블루"); analogWrite(red_pin, 255); analogWrite(green_pin, 153); analogWrite(blue_pin, 204); break;
      case 2: Serial.println("다크 블루"); analogWrite(red_pin, 100); analogWrite(green_pin, 0); analogWrite(blue_pin, 170); break;
      case 3: Serial.println("초록"); analogWrite(red_pin, 0); analogWrite(green_pin, 255); analogWrite(blue_pin, 0); break;
      case 4: Serial.println("파랑"); analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 255); break;
      case 5: Serial.println("보라"); 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("위"); onOff_flag = 1; break;
      case DIR_DOWN:  Serial.println("아래"); onOff_flag = 0; break;
      case DIR_LEFT:  Serial.println("왼쪽"); 
        if (onOff_flag == 1) {
          colorNumber = (colorNumber > 0) ? colorNumber - 1 : 5;
          Serial.println(colorNumber);
        }
        break;
      case DIR_RIGHT: Serial.println("오른쪽");
        if (onOff_flag == 1) {
          colorNumber = (colorNumber < 5) ? colorNumber + 1 : 0;
          Serial.println(colorNumber);
        }
        break;
      case DIR_NEAR:  Serial.println("가까이"); break;
      case DIR_FAR:   Serial.println("멀리"); break;
      default:        Serial.println("없음");
    }
  }
}

회로도

회로도대로 연결하세요.

모션 감지 RGB LED 색상 변경기: 아두이노 프로젝트

제조공정

  1. 라즈베리파이, PIR 센서, MQTT로 만드는 모션 제어 AWS IoT 버튼
  2. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  3. 제스처 제어 RGB 테이블 램프 – 인터랙티브 핸즈프리 조명
  4. 라즈베리 파이와 알렉사로 LED 제어하기 – 초보자를 위한 단계별 가이드
  5. 낡은 RC카를 아두이노와 엑스박스 컨트롤러로 조종하는 차량으로 개조하기
  6. 아두이노 메가 기반 닌텐도 눙크 컨트롤 6자유도 로봇 암 키트
  7. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용
  8. 아두이노 나노로 만든 스마트 모션 감지 물총
  9. 피봇(PiBot): 아두이노 기반 88건반 피아노 연주 로봇
  10. 아두이노 RGB LED 컬러 믹서: 입문자 친화적 DIY 프로젝트