BASIC4MCU | 질문게시판 | While문 코딩질문
페이지 정보
작성자 CIE18 작성일2018-06-29 03:42 조회11,772회 댓글3건본문
안녕하세요. 저번에 아두이노와 적외선센서,LED코딩에 관하여 도움받았던 사람입니다.
int led1=13;
int led2=12;
int sensor1=11;
int sensor2=10;
//
void setup(){
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(sensor1,INPUT_PULLUP);
pinMode(sensor2,INPUT_PULLUP);
}
//
void loop(){
while( !digitalRead(sensor1) || !digitalRead(sensor2) ); // 센서가 검출 중이면 대기
delay(50);
while( digitalRead(sensor1) && digitalRead(sensor2) ); // 센서가 검출 될 때까지 대기
delay(50);
if( !digitalRead(sensor1) ){ // 1번 센서가 검출되면
digitalWrite(led1,HIGH); digitalWrite(led2,LOW); // LED1 ON,LED2 OFF
}
else{ // 2번 센서가 검출되면
digitalWrite(led1,LOW); digitalWrite(led2,HIGH); // LED1 OFF,LED2 ON
}
}
혹시 위의 식에서
while( !digitalRead(sensor1) || !digitalRead(sensor2) ); // 센서가 검출 중이면 대기
delay(50);
while( digitalRead(sensor1) && digitalRead(sensor2) ); // 센서가 검출 될 때까지 대기
delay(50);
이 부분이 잘 이해가 안되서 그러는데 이 부분에 대해 좀더 자세히 설명하여 주실수 있나요...?
그리고 이 부분을 if문으로 바꾸는것이 가능하다면 바꿔주시면 감사하겠습니다
댓글 3
조회수 11,772master님의 댓글
master 작성일
while( !digitalRead(sensor1) || !digitalRead(sensor2) ); // 센서가 검출 중이면 대기
검출중인 물체가 지나갈 때까지 기다립니다.(마지막 과정)
delay(500);
while( digitalRead(sensor1) && digitalRead(sensor2) ); // 센서가 검출 될 때까지 대기
새롭게 물체가 감지 될 때까지 대기.(처음 과정)
delay(500);
//
if()문은 1회만 실행하므로
if()문으로 변경하지 못합니다.
master님의 댓글
master 작성일
void loop(){
while(digitalRead(sensor1)&&digitalRead(sensor2)); // 센서가 검출 될 때까지 대기
delay(500);
if(!digitalRead(sensor1)){ // 1번 센서가 검출되면
digitalWrite(led1,HIGH); digitalWrite(led2,LOW); // LED1 ON,LED2 OFF
}
else{ // 2번 센서가 검출되면
digitalWrite(led1,LOW); digitalWrite(led2,HIGH); // LED1 OFF,LED2 ON
}
while(!digitalRead(sensor1)||!digitalRead(sensor2)); // 센서가 검출 중이면 대기
delay(500);
}
원래 순서는 이렇게 되는데
전원 투입 시 의도치 않게 센서가 검출되는 경우를 피하기 위해서
마지막 과정을 제일 처음에 넣은 것입니다.
CIE18님의 댓글
CIE18 작성일
혹시 While문을 사용하지 않고 위의 조건을 코딩할 수 있는 방법은 없는건가요...?
다른 코딩과 결합하려고 하는데 문제가되서요....ㅠㅠ