Что понадобится
- Arduino Uno или Nano.
- Ультразвуковой датчик HC-SR04.
- Пассивная пищалка (зуммер), провода.
Как подключить
У HC-SR04: VCC — к 5V, GND — к GND, Trig — к выводу 9, Echo — к выводу 10. Пищалку — к выводу 8 и GND. Датчик рассчитан на 5 В: на платах с логикой 3,3 В (ESP32) сигнал Echo понижают делителем.
Программа из блоков
Соберите в BloX такую программу — или нажмите «Открыть в BloX», и она появится в редакторе готовой.
Код C++, который BloX собирает из этих блоков, — его можно скопировать в Arduino IDE:
long distance;
long readUltrasonic_9_10() {
digitalWrite(9, LOW);
delayMicroseconds(2);
digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);
return pulseIn(10, HIGH) / 58;
}
void setup() {
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(10, INPUT);
}
void loop() {
distance = readUltrasonic_9_10();
Serial.println(distance);
if (distance < 20) {
tone(8, 1000);
} else {
noTone(8);
}
delay(200);
}
Как это работает
Датчик посылает ультразвуковой «щелчок» и ждёт эхо. Блок «УЗ датчик расстояние» меряет, сколько микросекунд летел звук туда и обратно, и делит на 58 — получаются сантиметры.
Расстояние кладём в переменную distance: иначе датчик пришлось бы опрашивать дважды — для печати и для сравнения. Дальше «если distance < 20»: ближе — пищалка звучит на 1000 Гц, дальше — молчит. Монитор порта в Arduino IDE открывается на скорости 9600.
Как загрузить в плату
BloX собирает код, а в плату его заливает Arduino IDE. Нажмите в BloX «Код C++», скопируйте его, вставьте в новый скетч Arduino IDE, выберите плату и порт в меню «Инструменты» и нажмите «Загрузить».
Платы под рукой нет? Нажмите «Проверить в симуляторе» — код откроется на виртуальной плате урокробототехники.рф. Добавьте датчик HC-SR04 и пищалку; расстояние до препятствия в симуляторе задаётся двойным кликом по датчику.
Попробуйте сами
- Поменяйте порог 20 на 50 см.
- Сделайте три зоны: дальше 50 см — тишина, 20–50 — низкий тон, ближе 20 — высокий.
- Добавьте светодиод, который горит вместе с пищалкой.