Что такое робот?
Есть много различных определений для слова робот. Одно из них предполагает, что машина, которая будет рассматриваться как робот, должна ощущать динамично изменяемую среду и реагировать на эти изменения практически без вмешательства человека. Исходя из этого определения, наш робот – еще машина, но сейчас мы превратим её в робота, добавив «орган чувств».

Ультразвуковые датчики
Одним из популярных УЗ датчиков является HC-SR04. Функционально он напоминает датчик Parallax PING. Эти датчики излучают импульс с частотой 40 КГц при подаче сигнала на вход синхронизации. Датчик измеряет время, за которое звуковой импульс вернется обратно, после чего на выходе формирует пропорциональный этому времени широтно-модулированный сигнал. В случае Parallax PING линия для подачи сигнала и для приема является одной и той же, в HC-SR04 эти линии разделены. Заявленная дальность действия HC-SR04 составляет 450 см, а у PING – 300 см, хотя PING дороже.

Использование датчика HC-SR04
После установки соответствующей библиотеки для Arduino IDE использование HC-SR04 покажется довольно простым. Сама библиотека доступна здесь. А здесь можно найти инструкцию по установке библиотеки (англ.).
Ниже приведен простой код для проверки датчика. Выходные данные будут поступать на монитор последовательной передачи данных в Arduino IDE. Но для начала нужно выполнить некоторые соединения:
- с вывода 5V платы Arduino на вывод VCC датчика
- с цифрового вывода 12 платы Arduino на вывод TRIG датчика
- с цифрового вывода 13 платы Arduino на вывод ECHO датчика
- с вывода GND платы Arduino на вывод GND датчика
Теперь загрузите в Arduino следующий код:
#include<Ultrasonic.h> /*включить установленную пользователем библиотеку*/
Ultrasonic ultrasonic(12,13); /*создать экземпляр УЗ датчика и определить выводы*/
void setup() {
Serial.begin(9600); /*начать передачу данных на скорости 9600 bps */
}
void loop()
{
Serial.print(ultrasonic.Ranging(INC)); /* INC для дюймов, CM для сантиметров */
Serial.println("in");
delay(100);
}
После загрузки кода можете открыть монитор последовательной передачи данных в Arduino IDE, после этого можно будет видеть измеряемое датчиком расстояние, обновляемое 10 раз в секунду.
Соединяем HC-SR04 с нашим роботом
Теперь мы добавим роботу датчик. Также для большей функциональности присоединим к нему светодиод и динамик:
- с вывода 5V платы Arduino на вывод VCC датчика
- с цифрового вывода 10 платы Arduino на вывод TRIG датчика
- с цифрового вывода 11 платы Arduino на вывод ECHO датчика
- с вывода GND платы Arduino на вывод GND датчика
- с вывода 7 платы Arduino на светодиод
- с вывода 9 платы Arduino на динамик
Код
#include<Ultrasonic.h>
Ultrasonic ultrasonic( 10, 11);
#define PWMA 3
#define AIN1 0
#define AIN2 1
#define PWMB 5
#define BIN1 2
#define BIN2 4
#define STBY 6
#define LED 7
#define SPEAKER 9
#define FREQ 1000
void setup() {
pinMode(PWMA,OUTPUT);
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(PWMB,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
pinMode(STBY,OUTPUT);
pinMode(LED,OUTPUT);
}
void loop() {
startUp();
while(ultrasonic.Ranging(INC) < 9) {
rotateLeft();
digitalWrite(LED,HIGH);
tone(SPEAKER,FREQ);
delay(20);
digitalWrite(LED,LOW);
noTone(SPEAKER);
delay(20);
}
goForward();
digitalWrite(LED,HIGH);
}
void goForward ()
{
digitalWrite (AIN1,HIGH);
digitalWrite (AIN2,LOW);
analogWrite(PWMA,233);
digitalWrite (BIN1,HIGH);
digitalWrite (BIN2,LOW);
analogWrite(PWMB,255);
}
void rotateLeft ()
{
digitalWrite (AIN1,LOW);
digitalWrite (AIN2,HIGH);
analogWrite(PWMA,255);
digitalWrite (BIN1,HIGH);
digitalWrite (BIN2,LOW);
analogWrite(PWMB,255);
}
void startUp ()
{
digitalWrite(STBY,HIGH);
}
Запуск
Вот как функционирует робот с ультразвуковым датчиком:
Таким образом, с помощью Arduino можно построить достаточно интересного робота. Конечно, он пока может не многое, но при желании разработчик может добавить ему больше датчиков и манипуляторов и запрограммировать его на что-нибудь более полезное.
Робот на основе Arduino. Часть I – управление двигателями
Робот на основе Arduino. Часть II – шасси, средства передвижения и питание
Робот на основе Arduino. Часть III – подключение, программирование и пробный пуск
Перевод © digitrode.ru