Роботы данного типа у нас называются "Бродягами". Все что делает робот - просто
бродит по помещению. В торцевой части робота установлены два концевых
выключателя, которые позволяют детектировать столкновение с препятствием. Сразу
после включения питания робот начинает двигаться вперед до столкновения с
препятствием. При столкновении происходит остановка. Затем, после паузы, робот
объезжает назад, поворачивается на заданный угол, делает паузу и снова
возобновляет движение.
Принципиальная схема робота:
Для того чтобы робот мог реагировать не острые препятствия, можно добавить бампер, изготовить который можно из проволоки, отрезок которой можно закрепить на рычажках микропереключателей с помощью термоусадочной трубки.
Напишем простую программу, в соответствии с которой робот будет двигаться прямо в течении одной секунды, останавливаться на одну секунду, поворачивать направо в течении 0.7 секунды, опять останавливаться на секунду и далее процесс будет повторяться. Вот код:
/* Робот */ void setup() { pinMode(6,OUTPUT); // управление левым мотором pinMode(9,OUTPUT); // pinMode(10,OUTPUT); // управление правым мотором pinMode(11,OUTPUT); // pinMode(4,INPUT); // для подключения левого датчика pinMode(5,INPUT); // для подключения правого датчика } void loop() { motor(0,255,0,255); // движение вперед if(digitalRead(4) == 0 || digitalRead(5) == 0) // если сработал какой-либо датчик, { // то: motor(0,0,0,0); // остановка delay(1000); // на 1 секунду motor(255,0,70,0); // назад и влево delay(300); // в течении 0.3 секунды. } } void motor(int L1,int L2,int R1,int R2) // подпрограмма управления двигателем { analogWrite(6,L1); analogWrite(9,L2); analogWrite(10,R1); analogWrite(11,R2); }
Попробуйте запрограммировать робота на более сложные движения, включая,
например, движение задним ходом, разворот на месте, плавный поворот и т.п.