#define red 11
#define green 10
#define blue 9 //3색 led
#define redb 4
#define greenb 3
#define blueb 2 //버튼
int r=0,g=0,b=0;
void setup() {
pinMode(redb,INPUT);
pinMode(greenb,INPUT);
pinMode(blue,INPUT); //버튼
}
void loop() {
if(digitalRead(redb)==HIGH){
++r;
if(r>255){
r=0; //빨강버튼을 눌렀다면 red의 값이 1씩 올라가는데 만약 r값이 255 이상이 되면 0으로 다시 초기화 된다??
}
}
if(digitalRead(greenb)==HIGH){
++g;
if(g>255){
g=0;
}
}
if(digitalRead(blueb)==HIGH){
++b;
if(b>255){
b=0;
}
}
analogWrite(red,r);
analogWrite(green,g);
analogWrite(blue,b);
delay(1000);
}
사용한 회로도와 코드입니다.
제가 하고싶은건 각각 red값, green값, blue값을 의미하는 버튼을 누를때마다 (ex.red 버튼 누를시 빨강색이 강해짐) 3색led의 색이 변화하는 것을 만들고 싶은데요.
1.실행 시켜보니 하얀색 빛만 나오고 버튼을 눌러도 아무 변화가 없더라구요.
혹시 회로도나 코드상에 문제가 있다면 알려주세요 ㅜㅜ
2. 강의 보고 그대로 따라하는거라서 코드에 대해서 제가 이해한게 맞는지도 궁금한데요
int r=0,g=0,b=0; 에서 0의 의미가 on의 의미이고 255가 off의 의미 맞나요? (0 으로 갈수록 색의 세기?가 강해지고 255로 갈수록 약해지는것 맞나요?..)
처음에 이해한건 0이 off고 255가 on이여서 맨처음 led가 꺼져있다가 버튼을 누를수록 각 빛의 색이 강해지는건줄 알았는데
해보니까 0이 on의 의미인것 같더라구요... 뭐가 맞는건가요?...
3.
void setup() {
pinMode(redb,INPUT);
pinMode(greenb,INPUT);
pinMode(blue,INPUT); //버튼
}
여기서 LED에 대한 초기화 코드
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
를 따로 안쓰는 이유는 뭔가요??
강의만 들을때는 잘 넘어갔었는데 직접 해보려니까 주변에 물어볼 사람은 없는데 막히는 부분은 많고 어렵네요.. ㅠㅠ
1,2,3 번 질문중 하나라도 아시는거 있으시다면 답변 부탁드려요