BASIC4MCU | 질문게시판 | 아두이노 AUTO LIGHTING 시스템 질문
페이지 정보
작성자 master 작성일2018-07-23 09:30 조회11,458회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2543
본문
제가 아두이노 UNO에 조도센서, LED만을 연결해서 AUTO LIGHTING 시스템을 만들려고하는데요.제가 코딩에 지식이 부족해서요ㅜㅜ
조도센서 값이 일정값 이상이되면 LED가 켜지고 일정값보다 낮으면 켜지는 형식입니다.그런데 밤/낮을 구별하기 위해서 LED가 10분간 켜져있을시에는 저녁으로 간주하여 조도센서에 의지하지않고 LED가 계속 켜지게하고 LED가 10분간 켜져 있을시에는 낮으로 간주하여 센서값이 일정값 이상됬을시에만 작동하게 코딩 해주실 수 있나요?int led=13;int cnt=0;int n_cnt=0;void setup(){Serial.begin(9600);pinMode(led,OUTPUT);}void loop(){int sensorValue=analogRead(A0);Serial.print("A0=");Serial.println(sensorValue);if(sensorValue>500){digitalWrite(led,HIGH);Serial.println("LED ON(A0>500)");cnt++;n_cnt=0;}else{digitalWrite(led,LOW);Serial.println("LED OFF(A0<500)");n_cnt++;cnt=0;}if(cnt>6000){digitalWrite(led,HIGH);Serial.println("LED ON (Night)");}if(n_cnt > 6000){digitalWrite(led,LOW);Serial.println("LED OFF (Day)");}delay(100);if(cnt > 10000) cnt = 8000;if(n_cnt > 10000) n_cnt = 8000;}위에는 제가 코딩하고 있던겁니다.//// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-07-12 오후 8:39:50// by Ok-Hyun Park//int led=13;int flag=0;//void setup(){Serial.begin(9600);pinMode(led,OUTPUT);}//void loop(){int Val=analogRead(A0); Serial.print("A0="); Serial.println(sensorValue);//if(Val>500){if(flag==0){ flag=1; digitalWrite(led,HIGH); Serial.println("LED ON(A0>500)"); }}else if(Val>450){ }else{ // if(Val<450)if(flag==1){ flag=0; digitalWrite(led,LOW); Serial.println("LED OFF(A0<450)"); }}}
오차 등에 의해서 오동작하는 것을 막으려고 10분을 주는 것 같은데요
소프트웨어 히스테리시스를 주는 방법을 사용하면 됩니다.
flag 변수는 시리얼 모니터에 1회만 출력하기 위해서 사용하고 있습니다.
어려운 코드가 아니니 잘 분석해보세요
댓글 0
조회수 11,458등록된 댓글이 없습니다.