BASIC4MCU | 질문게시판 | 초음파센서 프로그램
페이지 정보
작성자 행복지수업 작성일2022-05-29 16:07 조회1,246회 댓글1건본문
초음파센서를 이용하여 거리측정 결과에 따라 led색이 다르게 출력되는 프로그램을 만들었는데 else쪽에서 오류가 나오는데 어디가 틀렀을까요?ㅜ else는 맞는거 같은데..
#define LED1 5
#define LED2 6
#define LED3 7
#define LED4 8
#define echo1 9
#define trig1 10
void setup(){
Serial.begin(9600);
pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED4,OUTPUT);
pinMode(trig1,OUTPUT); pinMode(echo1, INPUT);
}
int getUltrasonicSensor(int trigPin, int echoPin) {
unsigned long duration;
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH, 30000);
return int(duration * 0.17); // 정수형으로 변환하여 리턴
}
void loop() {
int dist;
dist = getUltrasonicSensor(trig1, echo1);
if (dist<=30) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,1); digitalWrite(LED2,0); digitalWrite(LED3,0); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". so close");
}
dist = getUltrasonicSensor(trig1, echo1);
else if (dist<=60) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,1); digitalWrite(LED3,0); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". close");
}
dist = getUltrasonicSensor(trig1, echo1);
else if (dist<=90) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,0); digitalWrite(LED3,1); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". far");
}
dist = getUltrasonicSensor(trig1, echo1);
else (dist<=120) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,0); digitalWrite(LED3,0); digitalWrite(LED4,1);
Serial.println(dist); Serial.println(". so far");
}
delay(1000);
}
댓글 1
조회수 1,246master님의 댓글
master 작성일
void loop() {
int dist = getUltrasonicSensor(trig1, echo1);
if(dist<=30){ // 리턴값이 0이면 시간 초과
digitalWrite(LED1,1); digitalWrite(LED2,0); digitalWrite(LED3,0); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". so close");
}
else if (dist<=60) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,1); digitalWrite(LED3,0); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". close");
}
else if (dist<=90) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,0); digitalWrite(LED3,1); digitalWrite(LED4,0);
Serial.println(dist); Serial.println(". far");
}
else (dist<=120) { // 리턴값이 0이면 시간 초과
digitalWrite(LED1,0); digitalWrite(LED2,0); digitalWrite(LED3,0); digitalWrite(LED4,1);
Serial.println(dist); Serial.println(". so far");
}
delay(1000);
}