Глава 24. Arduino и Bluetooth
317
Рис. 24.3. Шасси для робота 4WD
Сначала необходимо запрограммировать модуль Bluetooth HC05 (см.
разд. 24.2).
Прежде всего подключаемся по схеме, показанной на рис. 24.2. Затем переводим
модуль в режим приема AT-команд, замкнув контакт PIO11 на +3,3 В. Отправляем
тестовую команду:
AT\r\n
Ответ должен быть:
OK
. Теперь можно программировать.
Сначала даем команду сброса всех настроек:
AT+ORGL\r\n
Далее установим имя модуля:
AT+NAME=robot1\r\n
Установим пароль:
AT+PSWD=1111\r\n
Установим параметры UART:
AT+UART=38400,0,0\r\n
Переводим модуль в режим slave (ждет подключения):
AT+ROLE=0\r\n
Все. Переводим модуль HC05 в рабочий режим.
318
Часть III. Практическое применение Arduino
Рис. 24.4. Электрическая схема
Далее пишем скетч получения кодов из Android-устройства. За основу берем скетч
из листинга 21.4
главы 21, описывающий управление гусеничным роботом с по-
мощью инфракрасного пульта. Из Android-устройства для управления роботом
будем передавать коды, аналогичные кодам пульта Marmitek, что позволит при не-
обходимости перейти быстро на управление роботом по ИК. Код скетча представ-
лен в листинге 24.2.
Листинг 24.2
// коды клавиш ИК-пульта (marmitek)
#define FORWARD 1936
#define BACK 3984
#define SPEED_UP 144 //ch+
#define SPEED_DOWN 2192 //ch-
#define LEFT 3472
#define RIGHT 1424
#define CIRCLE_LEFT 3216 //vol+
Глава 24. Arduino и Bluetooth
319
#define CIRCLE_RIGHT 1168 //vol-
#define STOP 2320 //0
#define EXT 16 //1
#define LOCAL 1040 //3
int local=0;
// состояние моторов робота
struct POZ // структура для хранения статусов моторов
{
int poz1; // позиция для 1 мотора
int poz2; // позиция для 2 мотора
int direction12; // направление до поворота
};
// моторы
struct MOTOR // структура для хранения номеров пинов, к которым подключены
моторчики
{
int in1; // INPUT1
int in2; // INPUT2
int enable; // ENABLE1
};
// определяем порты, к которым подключены моторчики
MOTOR MOTOR1 = { 4, 5, 6 };
MOTOR MOTOR2 = { 7, 8, 9 };
// начальная позиция робота
// 1,2 мотор - выключены
POZ POZ12={5,5,5};
// массив возможных состояний моторов
// max down -> min down -> stop -> min up -> max up
int arrpoz[9][11]={
// in1 первого мотора
{0,0,0,0,0,0,1,1,1,1,1},
// in2 первого мотора
{1,1,1,1,1,0,0,0,0,0,0},
// скорости (enable1) первого мотора
{250,230,210,190,170,0,170,190,210,230,250},
// in3 второго мотора
{0,0,0,0,0,0,1,1,1,1,1},
// in4 второго мотора
{1,1,1,1,1,0,0,0,0,0,0},
// скорости (enable2) второго мотора
{250,230,210,190,170,0,170,190,210,230,250},
// скорость++
{0,-1,-1,-1,-1,0,1,1,1,1,0},
// скорость--
{0,-1,-1,-1,-1,0,1,1,1,1,0},
320
Do'stlaringiz bilan baham: |