цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Робот на основе Arduino. Часть IV – ультразвуковой датчик HC-SR04

Робот на основе Arduino. Часть IV – ультразвуковой датчик HC-SR04

Автор: Mike(admin) от 4-05-2014, 07:15

Что такое робот?


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


HC-SR04



Ультразвуковые датчики


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


Робот на основе Arduino. Часть IV – ультразвуковой датчик HC-SR04


Использование датчика 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


<Источник>


Теги: Arduino, робот, HC-SR04



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий