Ультразвуковой датчик определяет расстояние до объекта так же, как это делают летучие мыши или дельфины. Датчик HC-SR04 генерирует узконаправленный сигнал на частоте 40 кГц и ловит отраженный сигнал (эхо). По времени распространения звука до объекта и обратно можно достаточно точно определить расстояние до него.
По этому же принципу работает множество приборов для исследования пространства — эхолот, сонар, радиолокатор и даже полицейский радар для определения скорости автомобиля. Все эти приборы излучают узконаправленный ультразвуковой сигнал и получают обратно отраженный сигнал. В отличии от инфракрасных дальномеров (IR), на показания ультразвукового датчика не влияет цвет объекта.
int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
void setup() {
Serial.begin (9600); // подключаем монитор порта
pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
}
void loop() {
int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
digitalWrite(trigPin, 0); // изначально датчик не посылает сигнал
delayMicroseconds(2); // ставим задержку в 2 ммикросекунд
digitalWrite(trigPin, 1); // посылаем сигнал
delayMicroseconds(10); // ставим задержку в 10 микросекунд
digitalWrite(trigPin, 0); // выключаем сигнал
duration = pulseIn(echoPin, 1); // включаем прием сигнала
cm = duration / 58; // вычисляем расстояние в сантиметрах
Serial.print(cm); // выводим расстояние в сантиметрах
Serial.println(" cm");
delay(1000); // ставим паузу в 1 секунду
}
Пояснения к коду:
для подключения выходов Trig и Echo на датчике можно использовать любые цифровые входы на Ардуино;
чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: cm = duration / 5,8;.
#include <Ultrasonic.h> // подключаем библиотеку Ultrasonic
Ultrasonic ultrasonic(8,9); // назначаем выходы для Trig и Echo
void setup() {
Serial.begin(9600); // подключаем монитор порта
pinMode (11, OUTPUT); // подключаем к пину светодиод
pinMode (12, OUTPUT); // подключаем к пину светодиод
}
void loop () {
distance = ultrasonic.read();
Serial.print("Distance in CM: ");
Serial.println(distance); // выводим расстояние в сантиметрах
Serial.println(" cm");
// переключаем цвета светодиода
if (distance< 50) {digitalWrite(12,0); digitalWrite(11,1);}
if (distance< 50) {digitalWrite(12,1); digitalWrite(11,0);}
delay(100);
}
Пояснения к коду:
команда Ultrasonic ultrasonic(8,9); назначает имя для нашего датчика «ultrasonic» и назначаем выходы на Ардуино для Trig и Echo.
расстояние при котором будут переключаться светодиоды можно изменить.