첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

▶ 부품 내역

구분 모델 수량 비고
RGB LED Module   1  

 

728x90

 

▶ 회로 구성도

아두이노 RGB LED Module
GND GND
D11 R
D12 G
D13 B

 

300x250

 

▶ 소스 코드

#define RED   11 // 3색 LED R
#define GREEN 12 // 3색 LED G
#define BLUE  13 // 3색 LED B

// 빨강
#define red1   255
#define green1 0
#define blue1  0

// 노랑 (빨강 + 초록)
#define red2   0
#define green2 0
#define blue2  255

// 초록
#define red3   0
#define green3 255
#define blue3  0

// 시안 (초록 + 파랑)
#define red4   0
#define green4 255
#define blue4  255

// 파랑
#define red5   0
#define green5 0
#define blue5  255

// 마젠타 (파랑 + 빨강)
#define red6   255
#define green6 0
#define blue6  255

void setup() 
{
}

void loop()
{
    ChangeColor(red1, green1, blue1, red2, green2, blue2, 3);
    ChangeColor(red2, green2, blue2, red3, green3, blue3, 3);
    ChangeColor(red3, green3, blue3, red1, green1, blue1, 3);
}

// 색상 변경하기
// fromRed   : FROM 빨강색 (0-255)
// fromGreen : FROM 녹색   (0-255)
// fromBlue  : FROM 파랑색 (0-255)
// toRed     : TO   빨강색 (0-255)
// toGreen   : TO   녹색   (0-255)
// toBlue    : TO   파랑색 (0-255)
// delayTime : 지연 시간   (1/1000초 단위)
void ChangeColor(int fromRed, int fromGreen, int fromBlue, int toRed, int toGreen, int toBlue, int delayTime)
{
    for(int i = 0; i < 256; i++)
    {
        analogWrite(RED  , (fromRed   + ((255 - i) * (toRed   - fromRed  ) / 255)));
        analogWrite(GREEN, (fromGreen + ((255 - i) * (toGreen - fromGreen) / 255)));
        analogWrite(BLUE , (fromBlue  + ((255 - i) * (toBlue  - fromBlue ) / 255)));

        delay(delayTime);
    }
}

// 색상 설정하기
// red   : 빨강색 (0-255)
// green : 녹색   (0-255)
// blue  : 파랑색 (0-255)
void SetColor(int red, int green, int blue)
{
    analogWrite(RED  , red  );
    analogWrite(GREEN, green);
    analogWrite(BLUE , blue );
}

// 대기하기
// delayTime : 지연 시간 (1/1000초 단위)
void Wait(int delayTime)
{
    delay(delayTime);
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요