Ошибка: expected unqualified-id before 'if'
Это мой скетч или код:
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);
}
Ошибка появляется во втором if.
@IMB, 👍0
Обсуждение2 ответа
▲ 1
Ошибка возникает из-за того, что у вас есть 2 оператора if вне функции. Вы можете переместить их в функцию ping(), что исправит ошибку, но, похоже, есть логическая ошибка и с 2 операторами if.
Если distanceCm равно 20, оба оператора if выполняются один за другим, поэтому я сомневаюсь, что вы увидите включение светодиода. Возможно, if/else сработает.
if(distanceCm < 21){
digitalWrite(13, HIGH);
}
else{
digitalWrite(13, LOW);
}
,
@VE7JRO
▲ 1
Ошибка возникает из-за того, что вы закрываете свой метод ping перед предложением "if (distanceCm >= 20)". Это правильный код:
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;
}
,
@Marcos Riveros
Смотрите также:
- ошибка: expected primary-expression before '(' token
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
- Ошибка: Переменная или поле объявлены недействительными
- Не могу использовать uint16_t в библиотеке
- Не удалось скомпилировать библиотеки c++11, несмотря на добавление-std=c++11 в platform.txt
- Arduino expected ')' before '{' токен
- Возврат структуры из функции порождает ошибку компиляции "does not name a type"
- C++ против языка Arduino?
Лин-синтаксис C. *Код находится в функциях!*, @Majenko