RGB LED
하나의 LED에 RGB색을 모두 낼수 있다.
저항과 함께 연결하는 방법 및 각 핀에서 내는 색은 아래 그림을 참고한다.
그리고 보통 저항은 330ohm을 연결한다(그림에선 값이 다르지만)
아래 소스는 3개의 버튼을 이용하여
버튼을 누룰때마다 각 색의 밝기가 증가하도록 작성하였다.
스케치소스
-------------------------------------------------------------------------
/*RGBled*/
int redb = 2; //red버튼 연결핀
int greenb = 3; //green버튼 연결핀
int blueb = 4; //blue버튼 연결핀
int redPin = 9; //pwm
int greenPin = 10; //pwm
int bluePin = 11; //pwm
int redval = 0; // 각 색의 버튼에 의해 증가 감소되는 밝기 값
int greenval = 0;
int blueval = 0;
int greenb = 3; //green버튼 연결핀
int blueb = 4; //blue버튼 연결핀
int redPin = 9; //pwm
int greenPin = 10; //pwm
int bluePin = 11; //pwm
int redval = 0; // 각 색의 버튼에 의해 증가 감소되는 밝기 값
int greenval = 0;
int blueval = 0;
void setup(){
pinMode(redb, INPUT); // red스위치 입력 설정
pinMode(greenb, INPUT); // green스위치 입력 설정
pinMode(blueb, INPUT); // blue스위치 입력 설정
digitalWrite(redb, HIGH); //풀업저항 스위치 설정
digitalWrite(greenb, HIGH); //풀업저항으로 스위치가 눌러졌을때 LOW
digitalWrite(blueb, HIGH);
}
void loop(){
if(digitalRead(redb)==LOW){
redval++;
greenval--;
blueval--;
}
if(digitalRead(greenb)==LOW){
redval--;
greenval++;
blueval--;
}
if(digitalRead(blueb)==LOW){
redval--;
greenval--;
blueval++;
}
redval = constrain(redval, 0,255);
greenval = constrain(greenval, 0,255);
blueval = constrain(blueval, 0,255); //아두이노가 아날로그값을 출력할때 0~5V를
// 0~255단계로 출력함. 따라서 val값을 0~255까지로 제한
analogWrite(redPin, redval);
analogWrite(greenPin, greenval);
analogWrite(bluePin, blueval); // led 아날로그 출력
delay(20); //delay를 주지 않으면 사람이 버튼을 한번 누른다고 생각하지만
//전기적으로는 신호가 여러번 보내져 val값이 단번에 증가 또는 감소됨.
//그다음 버튼신호를 받을 때 까지의 간격을 둠
}
pinMode(redb, INPUT); // red스위치 입력 설정
pinMode(greenb, INPUT); // green스위치 입력 설정
pinMode(blueb, INPUT); // blue스위치 입력 설정
digitalWrite(redb, HIGH); //풀업저항 스위치 설정
digitalWrite(greenb, HIGH); //풀업저항으로 스위치가 눌러졌을때 LOW
digitalWrite(blueb, HIGH);
}
void loop(){
if(digitalRead(redb)==LOW){
redval++;
greenval--;
blueval--;
}
if(digitalRead(greenb)==LOW){
redval--;
greenval++;
blueval--;
}
if(digitalRead(blueb)==LOW){
redval--;
greenval--;
blueval++;
}
redval = constrain(redval, 0,255);
greenval = constrain(greenval, 0,255);
blueval = constrain(blueval, 0,255); //아두이노가 아날로그값을 출력할때 0~5V를
// 0~255단계로 출력함. 따라서 val값을 0~255까지로 제한
analogWrite(redPin, redval);
analogWrite(greenPin, greenval);
analogWrite(bluePin, blueval); // led 아날로그 출력
delay(20); //delay를 주지 않으면 사람이 버튼을 한번 누른다고 생각하지만
//전기적으로는 신호가 여러번 보내져 val값이 단번에 증가 또는 감소됨.
//그다음 버튼신호를 받을 때 까지의 간격을 둠
}
------------------------------------------------------------------------------
작동 영상
'아두이노_프로세싱 > 아두이노' 카테고리의 다른 글
블루투스 모듈(RN-42) 설정 (2) | 2012.06.26 |
---|---|
soft potentiometer + RGBLED (0) | 2012.06.26 |
2button으로 LED ON OFF하기 constrain()함수 (0) | 2012.06.26 |
FND (0) | 2012.06.26 |
74hc595 shift register를 이용한 아두이노 포트 확장 (0) | 2012.06.26 |