if(Distance_mm < 480) {
delay(600);
Serial.print("Distance = ");
Serial.println(Distance_mm);
mySerial.println(Distance_mm);
delay(1600);
}
else if(Distance_mm > 300 && Distance_mm <= 480) {
CRY1();
delay(600);
Serial.print("Distance = ");
Serial.println(Distance_mm);
mySerial.println(Distance_mm);
delay(1600);
}
else if(Distance_mm > 200 && Distance_mm < 300) {
CRY1();
delay(600);
Serial.print("Distance = ");
Serial.println(Distance_mm);
mySerial.println(Distance_mm);
delay(1600);
}
CRY1()이라는 함수 만들고, if문 조건 만족할 때 함수 호출하려는데
else if문에 들어가있는 CRY1() 함수들은 무슨 이유 때문인지 호출이 안되더라... 왜그럴까?
그러게..
if에서 480이랑 비교할 때의 부등호 방향이 반대이기 때문이지
else if로 들어간다는 건 그 위의 조건이 다 안 맞는다는 얘기이기 때문에, 사실 각 else if에서 && 뒷부분은 굳이 적어줄 필요가 없고, 그렇게 해야 덜 헷갈리기도 함. if (Distance_mm >= 480) { /* ... */ } else if (Distance_mm >= 300) { /* ... */ } else if (Distance_mm >= 200) { /* ... */ } 이면 부등호 방향이 통일되어 있으니까 애초에 이런 실수를 안 했겠지
다시 보니까 어떤 게 의도인지 모르겠네. 첫 번째 if문에서 480보다 작은지 비교하는데, 실제로는 큰지 (또는 크거나 같은지) 비교하고 싶은 거라고 생각해서 위의 댓글을 달았음. 만약 진짜로 480보다 작으면 첫 번째 if로 들어가는 게 맞다면 if~else if~else 구조를 사용한 것 자체가 잘못임.