«Серийный номер не указывает тип ошибки»

Я получаю ошибку serial does not name a type, ожидалось объявление перед токеном '}' на строке 69

const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 11;
const int ledPin = 13;

// определяет переменные
long duration;
int distance;
int safetyDistance;

void setup() {
  pinMode(trigPin, OUTPUT); // Устанавливает trigPin как выход
  pinMode(echoPin, INPUT); // Устанавливает echoPin как вход
  pinMode(buzzer, OUTPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600); // Запускает последовательную связь
}

void loop() {
// Очищает тригПин
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

// Устанавливает trigPin в состояние HIGH на 10 микросекунд
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

// Считывает echoPin, возвращает время прохождения звуковой волны в микросекундах
  duration = pulseIn(echoPin, HIGH);

// Расчет расстояния
  distance = duration * 0.034 / 2;

  safetyDistance = distance;
  if (safetyDistance <= 5) {
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledPin, HIGH);

    tone(buzzer, 1000);
    delay(100);
    noTone(buzzer);
    delay(100);
  }

  else {
    digitalWrite(buzzer, LOW);
    digitalWrite(ledPin, LOW);
  }
  if (safetyDistance > 5 && safetyDistance <= 10) {
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledPin, HIGH);

    tone(buzzer, 3000);
    delay(3000);
    noTone(buzzer);
    delay(3000);
  } else {
    digitalWrite(buzzer, LOW);
    digitalWrite(ledPin, LOW);
  }
  }
  Serial.print("Distance: ");
  Serial.println(distance);

}

, 👍0

Обсуждение

Я отформатировал ваш код, и теперь вы видите, что у вас есть лишняя скобка } перед строкой с сообщением об ошибке., @Juraj


1 ответ


1
  if (safetyDistance > 5 && safetyDistance <= 10) {
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledPin, HIGH);

    tone(buzzer, 3000);
    delay(3000);
    noTone(buzzer);
    delay(3000);
  } else {
    digitalWrite(buzzer, LOW);
    digitalWrite(ledPin, LOW);
  }
  }                           //<--
  Serial.print("Distance: ");
  Serial.println(distance);

}

После закрытия предложения else есть дубликат }. Удалите его, и ваш код скомпилируется.

,

стоит ли отвечать на этот вопрос?, @Juraj

@Juraj Потому что это отвечает на вопрос, да. Даже вопросы новичков заслуживают ответа. Нам нужно быть более инклюзивными, как я прочитал в https://stackoverflow.blog/2018/04/26/stack-overflow-isnt-very-welcoming-its-time-for-that-to-change/., @Maximilian Gerhardt

Максимилиан, мне как-то не нравится, что я отформатировал код, чтобы показать проблему, а вы пишете ответ, эквивалентный моему комментарию., @Juraj

@Юрай, это верно и хорошо, что ты отформатировал вопрос 3 часа назад, но на вопросы всё равно нужно отвечать в ответах, а не в комментариях. И поскольку вопрос не допускает никаких других ответов, кроме этого, у нас также одинаковые ответы., @Maximilian Gerhardt