Я продолжаю получать сообщение об ошибке "ожидаемый 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. В чем моя вина? я новичок в программировании, так что вам, возможно, придется объяснить это как можно проще.

, 👍1

Обсуждение

Я голосую за то, чтобы закрыть этот вопрос, потому что это чисто синтаксическая ошибка C++ и не связана с Arduino., @Majenko

Строка 36, блок "если" не находится внутри функции (он должен быть). Утверждение плохо сформировано, как и есть, строка 31. Есть дополнительное"}". Я предполагаю, что вы имели в виду " {"вместо"; " в конце строки 31. Если вы удалите"; " в строках 31 и 36, ваш код будет скомпилирован., @JRobert


1 ответ


0

Корень вашей проблемы-вот эта строка:

if (distance > 10); 

У вас есть посторонняя точка с запятой и отсутствует открывающая скобка блока, который он должен начать. Она должна гласить:

if (distance > 10) {

Кроме того, позже у вас будет что-то подобное:

if (distance <= 10); {

Вот вы вспомнили скобку, но все равно проскочили в точку с запятой, чего не хотели.

Важно помнить, что каждая открывающая скобка должна иметь соответствующую закрывающую скобку, и каждая закрывающая скобка должна иметь соответствующую открывающую скобку.

Если вы будете строги к себе и будете держать свои отступы строго правильными, то поймаете такие ошибки гораздо быстрее.

Еще одна хитрость заключается в том, чтобы начать с самого верха и подсчитать свои скобки - добавить по одной для каждой открывающей скобки и вычесть по одной для каждой закрывающей скобки. Если вы когда-нибудь становитесь негативным, то знаете, что у вас есть несоответствие. Если вы идете к нулю и все еще находитесь внутри функции, то у вас есть несоответствие. Вы должны закончить на нуле. Если нет, то вы знаете, что у вас есть несоответствие.

,