Este é meu esboço ou código:

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); } 

O erro aparece no segundo if.

Comentários

  • Sintaxe Lean C. O código entra nas funções!

Resposta

O erro está ocorrendo porque você 2 if instruções fora de uma função. Você poderia movê-los para a função ping () que corrigiria o erro, mas parece haver um erro lógico com o 2 instruções if também.

Se distanceCm for 20, ambas as instruções if são executadas uma após a outra, portanto, duvido que você verá o LED acender. Talvez um if / else possa funcionar.

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

Resposta

O erro ocorre porque você fecha o método ping antes de “if (distanceCm> = 20 ) “cláusula. Este é um código correto:

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; } 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *