Я продолжаю получать сообщение об ошибке "ожидаемый unqualified-id before if" при попытке запустить мою программу
Это мой код:
const int Speaker = 11;
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup() {
// поместите свой установочный код сюда, чтобы запустить его один раз:
pinMode(Speaker, OUTPUT); // устанавливает выход в качестве зуммера, который находится на выводе 11
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// поместите свой основной код здесь, чтобы запустить его повторно:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034/2;
if (distance > 10);
Serial.print("Distance: ");
Serial.println(distance);
}
if (distance <= 10); {
Serial.print("Distance: ");
Serial.println(distance);
tone(Speaker, 440, 750);
delay(375);
tone(Speaker, 349, 750);
delay(375);
tone(Speaker, 587, 750);
delay(375);
tone(Speaker, 523, 1500);
delay(750);
tone(Speaker, 440, 750);
delay(375);
tone(Speaker, 1500);
delay(750);
tone(Speaker, 294, 750);
delay(375);
tone(Speaker, 392, 3000);
delay(1500);
tone(Speaker, 349, 750);
delay(375);
tone(Speaker, 392, 750);
delay(375);
tone(Speaker, 440, 750);
delay(375);
tone(Speaker, 587, 750);
delay(750);
tone(Speaker, 659, 750);
delay(375);
tone(Speaker, 698, 750);
delay(375);
tone(Speaker, 523, 750);
delay(1875);
}
else {
Serial.print("Distance: ");
Serial.println(distance);
}
}
к сожалению, я не смог понять, как ввести его так, чтобы он выглядел так же, как на arduino. В чем моя вина? я новичок в программировании, так что вам, возможно, придется объяснить это как можно проще.
@hamish geraghty, 👍1
Обсуждение1 ответ
Корень вашей проблемы-вот эта строка:
if (distance > 10);
У вас есть посторонняя точка с запятой и отсутствует открывающая скобка блока, который он должен начать. Она должна гласить:
if (distance > 10) {
Кроме того, позже у вас будет что-то подобное:
if (distance <= 10); {
Вот вы вспомнили скобку, но все равно проскочили в точку с запятой, чего не хотели.
Важно помнить, что каждая открывающая скобка должна иметь соответствующую закрывающую скобку, и каждая закрывающая скобка должна иметь соответствующую открывающую скобку.
Если вы будете строги к себе и будете держать свои отступы строго правильными, то поймаете такие ошибки гораздо быстрее.
Еще одна хитрость заключается в том, чтобы начать с самого верха и подсчитать свои скобки - добавить по одной для каждой открывающей скобки и вычесть по одной для каждой закрывающей скобки. Если вы когда-нибудь становитесь негативным, то знаете, что у вас есть несоответствие. Если вы идете к нулю и все еще находитесь внутри функции, то у вас есть несоответствие. Вы должны закончить на нуле. Если нет, то вы знаете, что у вас есть несоответствие.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Я голосую за то, чтобы закрыть этот вопрос, потому что это чисто синтаксическая ошибка C++ и не связана с Arduino., @Majenko
Строка 36, блок "если" не находится внутри функции (он должен быть). Утверждение плохо сформировано, как и есть, строка 31. Есть дополнительное"}". Я предполагаю, что вы имели в виду " {"вместо"; " в конце строки 31. Если вы удалите"; " в строках 31 и 36, ваш код будет скомпилирован., @JRobert