Amateur Radio Station R9AL

     Еще один вариант робота "Бродяги", но в отличии от Робота "Бродяги" с датчиками касания, в торцевой части робота установлен ультразвуковой датчик HC-SR04, который позволяет определять расстояние до препятствия. Сразу после включения питания робот начинает двигаться вперед. Если перед роботом появлется препятствие, то робот останавливается, отъезжает назад, поворачивается на заданный угол, делает паузу и снова возобновляет движение.

Принципиальная схема робота:



Монтажная схема робота:


Сборка робота:

Сначала собираем простого робота, который использовался для движения по заданному алгоритму. А далее нужно установить на нем ультразвуковой датчик 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(8,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(7,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;
}



А вот видео как это работает:



Задание

     Попробуйте запрограммировать робота на более сложные движения, включая, например, движение задним ходом, разворот на месте, плавный поворот и т.п.




Обсуждение на форуме





Copyright © R9AL 2022 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования