#include <Servo.h>
#define PIN_TRIG 5 //константе с именем PIN_ECHO присваивается значение 5 (вывод для подключения Trig-ножки ультразвукового датчика)
#define PIN_ECHO 4 //константе с именем PIN_ECHO присваивается значение 4 (вывод для подключения Echo-ножки ультразвукового датчика)
#define Servo_PIN 3 //константе с именем Servo_PIN присваивается значение 3 (вывод для подключения сервопривода)
long duration, cm; //задаются целочисленные переменные для измерения расстояния
Servo myservo; // Создаем объект для управления сервоприводом
void setup() {
// Определяем вводы и выводы
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
myservo.attach(Servo_PIN);
myservo.write(90);
}
void loop() {
// Сначала генерируем короткий импульс длительностью 2-5 микросекунд
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);
// Выставив высокий уровень сигнала, ждем около 10 микросекунд
// В этот момент дадчик будет посылать сигналы с частотой 40 кГц
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Время задержки акуститечского сигнала на эхолокаторе
duration = pulseIn(PIN_ECHO,HIGH);
// Теперь осталось преобразовать время в расстояние
cm = duration/58;
if (cm < 60) {
myservo.write(180); // запись позиции сервопривода - 180 градусов (открытие крышки ведра)
delay(5000); //задержка для возвращения в исходное состояние
myservo.write(0); // запись позиции сервопривода - 0 градусов (закрытие крышки ведра)
}
delay(250); // Задержка между измерениями для корректной работы программы
}