の前に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); } 

2番目の場合にエラーが表示されます。

コメント

  • リーンC構文。 コードは関数に入ります!

回答

エラーが発生しているのは関数外の2つの if ステートメント。それらを ping()関数に移動すると、エラーが修正されますが、2には論理エラーがあるようです。 ifステートメントも同様です。

distanceCm が20の場合、両方のifステートメントが次々に実行されます。 LEDが点灯するのではないかと思います。おそらく if / else が機能する可能性があります。

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

回答

エラーは、 “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; } 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です