BASIC4MCU | 질문게시판 | 아두이노 가변저항을 이용한 LED제어
페이지 정보
작성자 chanbell 작성일2020-11-27 00:43 조회12,456회 댓글4건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=14179
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-09-29 오후 5:47:43// by Ok-Hyun Park////아두이노 우노//가변저항//5개 led 순차점등//int LED_pins[]={8,9,10,11,12};//void setup(){for(int i=0;i<5;i++)pinMode(LED_pins[i],OUTPUT);Serial.begin(9600);}//void loop(){int a=analogRead(A0);a=(float)a*5.0/1024.0;for(int i=0;i<5;i++){if(i==a)digitalWrite(LED_pins[i],HIGH);else digitalWrite(LED_pins[i],LOW);}}네이버에 남겨주신 답변 보고 코딩 해봤는데 제가 원하던 동작이랑 거의 비슷해서 더 여쭤보려고 질문드립니다.저 코드로는 순차적으로 켜지긴하는데 만약 LED0이 켜지고 그다음 LED0이 유지된 상태에서 LED1이켜지고 이렇게 LED 4까지 켜졌다가 아날로그값이 1024가 되면 다시 하나씩 점멸되게 하려면 어떻게 수정해야 하나요?감사합니다..
댓글 4
조회수 12,456master님의 댓글
master 작성일
int LED_pins[]={8,9,10,11};
//
void setup(){
for(int i=0;i<4;i++)pinMode(LED_pins[i],OUTPUT);
Serial.begin(9600);
}
//
void loop(){
int a=analogRead(A0);
a=(float)a*5.0/1024.0; // 0~1023 -> 0~4
a=(1<<a)-1; // 0~4 -> 0000,0001,0011,0111,1111
for(int i=0;i<4;i++){
if(a&(1<<i))digitalWrite(LED_pins[i],HIGH); // 해당비트가 1이면 ON
else digitalWrite(LED_pins[i],LOW); // 아니면 OFF
}
}
chanbell님의 댓글
chanbell
master님 질문 하나만 더할게요.. 감사합니다..
led제어나 터치 센서 제어는 시간이 지나도 다른 버튼이 잘 눌리는데
가변저항 제어는 한 10초정도 지나면 다른 버튼이 안눌리고 앱이 먹통이 되는데 그 이유가 뭔가요?
master님의 댓글
master
문제의 코드가 어떤 거죠?
chanbell님의 댓글
chanbell 작성일감사합니다!!