블로그 이미지
조이키트 블로그
아두이노, 라즈베리파이, 반도체 센서/모듈 활용

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Notice

250x250
2020. 8. 1. 09:57 아두이노 기초
728x90
반응형

컬러센서를 사용하여 3색 LED를 감지하는 아두이노 프로젝트를 만들어 보겠다.

이 프로젝트에서는 TCS3200 컬러센서를 사용하여 주변의 색을 감지하고, 그 결과에 따라 3색 LED를 제어할 것이다.

 

다음은 필요한 부품들이다.

  1. TCS3200 컬러센서
  2. 3색 LED
  3. 아두이노 보드
  4. 저항 (330옴 x 3)
  5. 점퍼 와이어

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

https://link.coupang.com/a/ccbDIm

 

(당일배송) 아두이노 TCS3200 컬서 센서 Color Sensor - 케이블 | 쿠팡

쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

https://link.coupang.com/a/b2vSOT

 

ATmega328P 마이크로 컨트롤러가 있는 아두이노 우노 R3 개발 보드 - 액세서리 | 쿠팡

쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

https://link.coupang.com/a/b2vTO0

 

아두이노 LCD1602 16x2 4핀 디스플레이 모듈/ Arduino LCD1602 Module - 액세서리 | 쿠팡

쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

 

먼저, TCS3200 컬러센서를 아두이노에 연결해야 한다. 그런 다음, 아래의 코드를 사용하여 컬러센서를 통해 검출된 색을 읽고, 해당하는 색에 따라 LED를 제어할 수 있다.

 

전체 코딩:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // LCE패널 함수 선언


#define S0 6  // 컬러센서 S0 D6번 설정
#define S1 7  // 컬러센서 S1 D7번 설정
#define S2 8  // 컬러센서 S2 D8번 설정
#define S3 9  // 컬러센서 S3 D9번 설정
#define sensorOut 10  // 컬러센서 출력  D10번 설정
#define redPin 11     // LED_RED D11번 설정
#define greenPin 12   // LED_BLUE D12번 설정
#define bluePin 13    // LED_GREEN D13번 설정

int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

LiquidCrystal_I2C lcd (0x27,16,2);   // LCD1602 설정

void setup() {

  lcd.init();           // LCD 초기화
  lcd.backlight();      // LCD 뒷 전등 켬

  pinMode(S0, OUTPUT); // 출력
  pinMode(S1, OUTPUT); //
  pinMode(S2, OUTPUT); //
  pinMode(S3, OUTPUT); //
  pinMode(sensorOut, INPUT); // 입력
  pinMode(redPin, OUTPUT);  // 출력
  pinMode(greenPin, OUTPUT); //
  pinMode(bluePin, OUTPUT); //

  // 주파수 스케일링을 20%로 설정
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);

  Serial.begin(9600);
}

void loop() {
  // 빨간색 필터링된 포토다이오드를 읽을 수 있도록 설정
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // 빨간색 출력 주파수 판독
  redFrequency = pulseIn(sensorOut, LOW);

  // 시리얼 모니터에 값 출
  Serial.print("R = ");
  Serial.print(redFrequency);
  delay(100);
    
  lcd.setCursor(0, 0);
  // 측정된 RED 값을 LCD에현시
  lcd.print("R:");
  lcd.print(redFrequency); //주파수
 

  // 녹색 필터링된 포토다이오드를 읽도록 설정
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // 녹색 출력 주파수 판독
  greenFrequency = pulseIn(sensorOut, LOW);

  // 시리얼 모니터에 녹색 값 출력
  Serial.print(" G = ");
  Serial.print(greenFrequency);
  delay(100);

    lcd.setCursor(7, 0);
  // 측정된 GREEN 주파수 값을 LCD에현시
  lcd.print("G:");
  lcd.print(greenFrequency);  //주파수


  // 파란색 필터링된 포토다이오드를 읽을 수 있도록 설정
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // 파란색 출력 주파수 판독
  blueFrequency = pulseIn(sensorOut, LOW);

  // 시리얼 모니터에 파란색 값 출력
  Serial.print("B:");
  Serial.println(blueFrequency);
  delay(100);

  lcd.setCursor(0, 1);
  // 측정된 BLUE 주파수 값을 LCD에현시
  lcd.print("B:");
  lcd.print(redFrequency);     //주파수
 

  // 검출된 색상을 기반으로 한 LED 제어
  if (redFrequency > greenFrequency && redFrequency > blueFrequency) {
    // Red LED 출력
    digitalWrite(redPin, HIGH);
    digitalWrite(greenPin, LOW);
    digitalWrite(bluePin, LOW);

  } else if (greenFrequency > redFrequency && greenFrequency > blueFrequency) {
    // Green LED 출력
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, HIGH);
    digitalWrite(bluePin, LOW);
  } else if (blueFrequency > redFrequency && blueFrequency > greenFrequency) {
    // Blue LED 출력
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, LOW);
    digitalWrite(bluePin, HIGH);
  } 
  
  else if (redFrequency == greenFrequency && redFrequency == blueFrequency) {
    // 모든 LED 출력
    digitalWrite(redPin, HIGH);
    digitalWrite(greenPin, HIGH);
    digitalWrite(bluePin, HIGH);
  } else {
    // 모든 LED 전부 꺼짐
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, LOW);
    digitalWrite(bluePin, LOW);
  }
}

 

준비물 : 아두이노 우노, RGB 컬러센서, 3색 LED, 300옴 저항 등이 사용된다.

 

아두이노UNO
컬러센서
3색 LED
300옴 저항
아두이노 우노 R3 RGB 컬러센서 3색 LED 300옴 저항

 

 

회로 연결 : 

아두이노 우노 R3 RGB 컬러센서 RGB LED 다이오드 LCD1602
+5V VCC +핀 VCC
GND GND   GND
D6 S0    
D7 S1    
D8 S2    
D9 S3    
D10 OUT    
D11   RED  
D12   GREEN  
D13   BLUE  
A4     SDA
A5     SCL

 

회로도:

색상감지센서 회로도

 

 

 

위와 같이 회로를 연결하고 코드를 아두이노에 업로드하면 시리얼 모니터와 LCD에 색상에 따른 값이 출력될 것이다.

이 코드는 컬러센서를 통해 검출된 색에 따라 3색 LED를 제어한다. 따라서 감지된 색에 따라 LED가 변할 것이다.

 

출력 결과

https://www.youtube.com/watch?v=uT4cFhvfGSk

 

728x90
반응형
posted by 조이키트 블로그