BASIC4MCU | 질문게시판 | 답변 : 한번만 명령을 실행하고 다음 신호를 대기하는 아두이노 코드 질문2
페이지 정보
작성자 master 작성일2018-12-09 12:54 조회7,846회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6598
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-09 오후 12:59:01// by Ok-Hyun Park//int RAIN=A0,CDS=A1,GAS=A2;int INS1=11,INS2=10,SPEEDPIN=6;int F_LED=8,R_LED=9,LIMIT_LED=7;int LIMIT1=12,LIMIT2=13;//int mode=0;//void setup(){pinMode(LIMIT1,INPUT); pinMode(LIMIT2,INPUT);pinMode(A0,INPUT); pinMode(A1,INPUT); pinMode(A2,INPUT);pinMode(INS1,OUTPUT); pinMode(INS2,OUTPUT); analogWrite(SPEEDPIN,255);pinMode(F_LED,OUTPUT); pinMode(R_LED,OUTPUT); pinMode(LIMIT_LED,OUTPUT);Serial.begin(9600);}//void loop(){int i0=analogRead(RAIN); Serial.println(i0);int i1=analogRead(CDS); Serial.println(i1);int i2=analogRead(GAS); Serial.println(i2);int v=0;if(i0<500)v|=1;if(i1<500)v|=2;if(i2>400)v|=4;int ff=0;int rr=0;switch(v){case 7:case 6:case 5:case 4: ff=1; rr=0; break;case 3:case 1: ff=0; rr=1; break;case 2: ff=1; rr=0; break;case 0: ff=0; rr=0; break;}if(!ff&&!rr){if(mode!=0){ mode=0;digitalWrite(F_LED,0); digitalWrite(R_LED,0); digitalWrite(LIMIT_LED,0);digitalWrite(INS1,0); digitalWrite(INS2,0); analogWrite(SPEEDPIN,255);}}if(ff&&!rr){if(mode!=1){ mode=1;digitalWrite(F_LED,1); digitalWrite(R_LED,0); digitalWrite(LIMIT_LED,0);digitalWrite(INS1,1); digitalWrite(INS2,0); analogWrite(SPEEDPIN,130);}}if(!ff&&rr){if(mode!=2){ mode=2;digitalWrite(F_LED,0); digitalWrite(R_LED,1); digitalWrite(LIMIT_LED,0);digitalWrite(INS1,0); digitalWrite(INS2,1); analogWrite(SPEEDPIN,130);}}}
댓글 1
조회수 7,846이응이님의 댓글
이응이 작성일감사합니다 이런 깔끔한 방법이 있었네요. mode변수를 통한 1회성 작동제어가 안되는 오류는 'if문'에 'else [전체중지]'를 추가시켜서 해결했습니다