Menu
CoddyTech

Парковочный датчик: световые сигналы

Часть раздела Проекты путешествия по Arduino на Coddy. Урок 10 из 24.

При парковке никто не читает числа. Три светодиода превращают расстояние в цвет: зелёный на контакте 6, когда путь свободен, жёлтый на контакте 7, когда вы приближаетесь, красный на контакте 13, когда нужно остановиться.

Три диапазона, и для каждого — ровно один светодиод. Подходит цепочка if / else if / else, потому что выполняется только одна из её ветвей:

if (cm >= 100) {
  // зелёный
} else if (cm >= 30) {
  // жёлтый: от 30 до 99
} else {
  // красный: меньше 30
}

Во второй проверке не нужно указывать cm < 100: else означает, что первая проверка оказалась ложной, поэтому расстояние уже меньше 100.

Как и в случае со светофором, выключите все три светодиода, прежде чем включить один. Иначе жёлтый останется включённым, когда загорится красный.

challenge icon

Задание

Легко

Показывай расстояние с помощью цветов:

  • настрой пины 6, 7 и 13 как выходы
  • 100 см или больше: только зелёный
  • от 30 до 99 см: только жёлтый
  • менее 30 см: только красный

Продолжай выводить расстояние. Нажми Run, измени расстояние датчика, затем нажми Check.

Попробуйте сами

// Датчик расстояния
const int trigPin = 9;
const int echoPin = 10;

// Отправить импульс и вернуть расстояние в cm.
long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  return duration / 58;
}

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  long cm = readDistance();
  Serial.println(cm);
  delay(100);
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Arduino