Код
const int Trig = 3; //используем порт3 под тригер эхолокатора
const int Echo = 2; //исользуем порт2 под эхолокатор
const int ledPin4 = 4; //порт 4 левый мотор вперед
const int ledPin5 = 5;// порт 5 левый мотор назад
const int ledPin6 = 6;// порт 6 правый мотор вперед
const int ledPin7 = 7;// порт 7 правый мотор назад
#include <Servo.h>
Servo myservo; // создаём объект для контроля сервы
// максимальное количество таких объектов - 8
int pos = 0; // переменная для хранения позиции сервы
void setup()
{
pinMode(Trig, OUTPUT);//выход передает сигнал эхолокатора
pinMode(Echo, INPUT);//принимает от эхолокатора сигнал
pinMode(ledPin4, OUTPUT);//4 пин на выход
pinMode(ledPin5, OUTPUT);//5 пин на выход
pinMode(ledPin6, OUTPUT);//6 пин на выход
pinMode(ledPin7, OUTPUT);//7 пин на выход
myservo.attach(9); // серва подключена к 8-му пину
Serial.begin(9600);
}
unsigned int time_us=0;
unsigned int distance_sm=0;
void loop()//крутит в цикле то что есть в setap с возможностью добавлен чего либо для сравнения или изменения
{
{
for(pos = 0; pos < 180; pos += 1) // от 0 до 180 градусов
{ // с шагом в 1 градус
myservo.write(pos); //
delay(15); // ждём 15ms пока серва займёт новое положение
}
for(pos = 180; pos>=1; pos-=1) // от 180 до 0 градусов
{
myservo.write(pos);
delay(15);
}
}
digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
delayMicroseconds(10); // Удерживаем 10 микросекунд
digitalWrite(Trig, LOW); // Затем убираем
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=time_us/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт
if (distance_sm<100) // Если расстояние менее 100. сантиметром вставляем время срабатывания
{
digitalWrite(ledPin5, 1); // левый мотор назад
digitalWrite(ledPin6, 1); // правый мотор вперед
digitalWrite(ledPin4, 0); // 4 пин левый мотор вперед освободить
digitalWrite(ledPin7, 0); // 7 пин правый мотор назад освободить
}
else // Если расстояние более 100 сантиметром
{
digitalWrite(ledPin6, 1); //правый мотор вперед
digitalWrite(ledPin4, 1); // левый мотор вперед
digitalWrite(ledPin5, 0); //5 пин левый мотор назад освободить
digitalWrite(ledPin7, 0); //7 пин правый мотор назад освободить
}
delay(100);
}