BASIC4MCU | 질문게시판 | 답변 : 아두이노 코딩
페이지 정보
작성자 master 작성일2019-05-06 21:35 조회7,984회 댓글3건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=8469
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-06 오후 9:34:10// by Ok-Hyun Park//1.LED2개,Switch,VR(Variable Resistor)를사용한다.2.평소스위치가 눌려지지 않았을 때는 VR을돌리면 LED2개가교차로 깜박이는 속도가 바뀐다.3.스위치를누른 상태에서 VR을돌리면 LED의밝기가 조절된다.단,하나의LED는밝아지고 다른 LED는어두워지는 식으로 서로 반대되는 동작을 한다.2번까지는 동작이 되는데 3번은 잘안되네요..코드에 문제가 있는 걸까요..도와주세요 ㅠ//const int sensorPin=A0;const int LED=11,LED1=10,BUTTON=8;//void setup(){pinMode(10,OUTPUT); pinMode(11,OUTPUT);pinMode(8,INPUT);}//void loop(){int rate=analogRead(0);rate=map(rate,0,1023,25,1000);//if(digitalRead(8)){digitalWrite(11,0); digitalWrite(10,1); delay(rate);digitalWrite(11,0); digitalWrite(10,0); delay(rate);}else{digitalWrite(11,0); digitalWrite(10,1); delay(1023-rate);digitalWrite(11,1); digitalWrite(10,0); delay(1023-rate);}}
1로 적어야하는데 0 으로 적었군요
소스코드 정렬을 잘 해야지 가독성이 좋아져서 디버깅이나 수정이 쉬워집니다.
//
rate=map(rate,0,1023,25,1000);
25~1000 범위이므로
digitalWrite(11,0); digitalWrite(10,1); delay(1023-rate);digitalWrite(11,1); digitalWrite(10,0); delay(1023-rate);1023-rate가 아닌 1025-rate를 해야겠죠// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-06 오후 9:41:09// by Ok-Hyun Park//1.LED2개,Switch,VR(Variable Resistor)를사용한다.2.평소스위치가 눌려지지 않았을 때는 VR을돌리면 LED2개가교차로 깜박이는 속도가 바뀐다.3.스위치를누른 상태에서 VR을돌리면 LED의밝기가 조절된다.단,하나의LED는밝아지고 다른 LED는어두워지는 식으로 서로 반대되는 동작을 한다.//const int sensorPin=A0;const int LED=11,LED1=10,BUTTON=8;//void setup(){pinMode(10,OUTPUT); pinMode(11,OUTPUT);pinMode(8,INPUT);}//void loop(){int rate=analogRead(0);rate=map(rate,0,1023,25,1000);//if(digitalRead(8)){digitalWrite(11,0); digitalWrite(10,1); delay(rate);digitalWrite(11,1); digitalWrite(10,0); delay(rate);}else{digitalWrite(11,0); digitalWrite(10,1); delay(1025-rate);digitalWrite(11,1); digitalWrite(10,0); delay(1025-rate);}}
원하는대로 동작하는지 체크 해보세요
아래 소스처럼 해야 할 듯
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-06 오후 9:45:58// by Ok-Hyun Park//1.LED2개,Switch,VR(Variable Resistor)를사용한다.2.평소스위치가 눌려지지 않았을 때는 VR을돌리면 LED2개가교차로 깜박이는 속도가 바뀐다.3.스위치를누른 상태에서 VR을돌리면 LED의밝기가 조절된다.단,하나의LED는밝아지고 다른 LED는어두워지는 식으로 서로 반대되는 동작을 한다.//const int sensorPin=A0;const int LED2=11,LED1=10,BUTTON=8;//void setup(){pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT);pinMode(8,INPUT);}//void loop(){int rate=analogRead(0);rate=map(rate,0,1023,25,1000);//if(digitalRead(8)){digitalWrite(LED2,0); digitalWrite(LED1,1); delay(rate); // LED1 ON & LED2 OFFdigitalWrite(LED2,1); digitalWrite(LED1,0); delay(1025-rate); // LED1 OFF & LED2 ON}else{digitalWrite(LED2,0); digitalWrite(LED1,1); delay(1025-rate); // LED1 ON & LED2 OFFdigitalWrite(LED2,1); digitalWrite(LED1,0); delay(rate); // LED1 OFF & LED2 ON}}
//------------------
PWM 소스
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-05-06 오후 9:57:45// by Ok-Hyun Park//const int sensorPin=A0;const int LED2=11,LED1=10,BUTTON=8;//void setup(){pinMode(8,INPUT);}//void loop(){int rate=analogRead(0)/4;//if(digitalRead(8)){ analogWrite(LED1,rate); analogWrite(LED2,255-rate); }else { analogWrite(LED1,255-rate); analogWrite(LED2,rate); }}
댓글 3
조회수 7,984대구간님의 댓글
대구간 작성일스위치를 누르고 돌리니 밝기가 아니라 깜빡이는 속도가 바뀝니다
master님의 댓글
master
딜레이가 아주 짧으면 밝기가 변하지만
딜레이가 길어서 깜박임이 심한 것입니다.
//
답글 아래에 PWM 소스를 추가해드리죠
대구간님의 댓글
대구간 작성일아 감사합니다