이전에 예상되는 unqualified-id

이것은 내 스케치 또는 코드입니다.

const int EchoPin = 5; const int TriggerPin = 6; const int LedPin = 13; void setup() { Serial.begin(9600); pinMode(LedPin, OUTPUT); pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(13, OUTPUT); } void loop() { int cm = ping(TriggerPin, EchoPin); Serial.print("Distancia: "); Serial.println(cm); delay(1000); } int ping(int TriggerPin, int EchoPin) { long duration, distanceCm; digitalWrite(TriggerPin, LOW); delayMicroseconds(4); digitalWrite(TriggerPin, HIGH); delayMicroseconds(10); digitalWrite(TriggerPin, LOW); duration = pulseIn(EchoPin, HIGH); distanceCm = duration * 10 / 292/ 2; return distanceCm; } if (distanceCm <= 20) { digitalWrite(13, HIGH); } if (distanceCm >= 20) { digitalWrite(13, LOW); } 

두 번째 경우에 오류가 나타납니다.

댓글

  • Lean C 구문. 코드가 함수에 들어갑니다!

답변

2 개의 if 문이 함수 외부에 있습니다. 오류를 수정하는 ping () 함수로 이동할 수 있지만 2에는 논리 오류가있는 것 같습니다. if 문도 마찬가지입니다.

distanceCm 가 20이면 둘 다 if 문이 차례로 실행되고 따라서 LED가 켜지는 것을 볼 수 없을 것 같습니다. 아마도 if / else 가 작동 할 수 있습니다.

if(distanceCm < 21){ digitalWrite(13, HIGH); } else{ digitalWrite(13, LOW); } 

Answer

오류는 “if (distanceCm> = 20) 전에 ping 메서드를 닫았 기 때문입니다. ) “clausule. 올바른 코드입니다.

const int EchoPin = 5; const int TriggerPin = 6; const int LedPin = 13; void setup() { Serial.begin(9600); pinMode(LedPin, OUTPUT); pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(13, OUTPUT); } void loop() { int cm = ping(TriggerPin, EchoPin); Serial.print("Distancia: "); Serial.println(cm); delay(1000); } int ping(int TriggerPin, int EchoPin) { long duration, distanceCm; digitalWrite(TriggerPin, LOW); delayMicroseconds(4); digitalWrite(TriggerPin, HIGH); delayMicroseconds(10); digitalWrite(TriggerPin, LOW); duration = pulseIn(EchoPin, HIGH); distanceCm = duration * 10 / 292/ 2; if (distanceCm <= 20) { digitalWrite(13, HIGH); } if (distanceCm >= 20) { digitalWrite(13, LOW); } return distanceCm; } 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다