Еще один вариант робота "Бродяги", но в отличии от
Робота "Бродяги" с датчиками касания.
В торцевой части робота установлен ультразвуковой датчик HC-SR04, который
позволяет определять расстояние до препятствия. Сразу после включения питания
робот начинает двигаться вперед. Если перед роботом появлется препятствие, то
робот останавливается, отъезжает назад, поворачивается на заданный угол,
делает паузу и снова возобновляет движение.
Принципиальная схема робота:
Напишем простую программу, в соответствии с которой робот будет двигаться прямо в течении одной секунды, останавливаться на одну секунду, поворачивать направо в течении 0.7 секунды, опять останавливаться на секунду и далее процесс будет повторяться. Вот код:
/* Робот */ #define PIN_TRIG A1 #define PIN_ECHO A0 void setup() { pinMode(PIN_TRIG,OUTPUT); pinMode(PIN_ECHO,INPUT); pinMode(11,OUTPUT); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(6,OUTPUT); } void loop() { motor(1,0,1,0); if(echo()<=50) { motor(0,1,0,1); delay(500); motor(1,0,0,1); delay(350); } } void motor(int M1W,int M1S,int M2W,int M2S) { digitalWrite(11,M1W); digitalWrite(10,M1S); digitalWrite(9,M2W); digitalWrite(6,M2S); } int echo(){ long duration=0; digitalWrite(PIN_TRIG,0); delayMicroseconds(5); digitalWrite(PIN_TRIG,0); delayMicroseconds(10); digitalWrite(PIN_TRIG,1); duration=pulseIn(PIN_ECHO,1); delay(10); return (duration)/29.1; }
Попробуйте запрограммировать робота на более сложные движения, включая,
например, движение задним ходом, разворот на месте, плавный поворот и т.п.