Arduino:Примеры/RobotRemotecontrol
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Удаленное управление[1]
Этот пример создавался как экспериментальный – для его работы на вашей IDE необходимо установить библиотеку IR-Remote от Кена Ширриффа (Ken Shirriff).
Чтобы узнать о ней более подробно, смотрите сам код.
При помощи инфракрасного ресивера роботом можно управлять как телевизором – с пульта управления. В этом примере мы возьмем пульт управления, совместимый с Sony, и назначим некоторым его кнопкам определенные действия. Благодаря этому мы сможем управлять роботом, даже не прикасаясь к нему.
Необходимое оборудование
- Arduino Robot - 1 шт.
- Инфракрасный датчик - 1шт.
- Кабель (чтобы подключить этот датчик) - 1шт.
- Пульт управления, совместимый с Sony - 1шт.
Инструкция
- При помощи кабеля подключите датчик к контакту TKD2 (на верхней плате);
- Зафиксируйте датчик на плате;
- Загрузите скетч, отключите USB и включите питание;
- После того, как робот покажет загрузочную картинку, возьмите пульт и начните давать роботу те или иные команды, нажимая на запрограммированные вами кнопки;
- Если робот распознает посылаемые вами сигналы и команды, то будет показывать их на своем экране;
- Если хотите перенастроить команды, то проделайте следующее. Нажимайте на кнопки на пульте – благодаря этому на экране начнут появляться определенные значения. Запишите их куда-нибудь. Затем найдите в коде следующие строчки: «#define IR_CODE_FORWARD 0x2C9B», «#define IR_CODE_BACKWARDS 0x6C9B», «#define IR_CODE_TURN_LEFT 0xD4B8F» и «#define IR_CODE_TURN_RIGHT 0x34B8F». Замените имеющиеся в этих строчках значения на те, что увидели на экране.
Пробуем
Код
/* Удаленное управление
Если подключить к роботу инфракрасный ресивер, им можно будет
управлять так же, как и радиоуправляемой машинкой. Используя
пульт для дистанционного управления (идет в комплекте с набором
датчиков), вы можете управлять роботом, даже не прикасаясь к нему!
Цепь:
* Arduino Robot
* Ресивер, подключенный к D2
* Пульт управления из набора датчиков Arduino
Основан на библиотеке IRremote от Кена Ширриффа
(Ken Shirriff, http://arcfn.com).
Создан 1 мая 2013 Х. Янгом (X. Yang),
модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
Этот код не защищен авторским правом.
*/
// Подключаем необходимые библиотеки:
#include <IRremote.h>
#include <IRremoteTools.h>
#include <ArduinoRobot.h>
#include <Wire.h>
#include <SPI.h>
// Задаем несколько команд для пульта управления:
#define IR_CODE_FORWARD 284154405
#define IR_CODE_BACKWARDS 284113605
#define IR_CODE_TURN_LEFT 284129925
#define IR_CODE_TURN_RIGHT 284127885
#define IR_CODE_CONTINUE -1
boolean isActing = false; // переменная, которая определяет, выполняет ли робот команду, посланную пультом
long timer;
const long TIME_OUT = 150;
void setup() {
// Инициализируем робота, SD-карту и дисплей:
Serial.begin(9600);
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// Выводим на экране немного текста:
beginIRremote(); // запускаем ресивер
}
void loop() {
// Если получили команду, обрабатываем ее:
if (IRrecived()) {
processResult();
resumeIRremote(); // возобновляем работу ресивера
}
// Если робот не получил никакой команды, останавливаем его:
if (isActing && (millis() - timer >= TIME_OUT)) {
Robot.motorsStop();
isActing = false;
}
}
void processResult() {
unsigned long res = getIRresult();
switch (res) {
case IR_CODE_FORWARD:
changeAction(1, 1); // двигаем робота вперед
break;
case IR_CODE_BACKWARDS:
changeAction(-1, -1); // двигаем робота назад
break;
case IR_CODE_TURN_LEFT:
changeAction(-0.5, 0.5); // двигаем робота влево
break;
case IR_CODE_TURN_RIGHT:
changeAction(0.5, -0.5); // двигаем робота вправо
break;
case IR_CODE_CONTINUE:
timer = millis(); // продолжаем последнее действие и сбрасываем таймер
break;
}
}
void changeAction(float directionLeft, float directionRight) {
Robot.motorsWrite(255 * directionLeft, 255 * directionRight);
timer = millis();
isActing = true;
}
См.также
- begin()
- motorsWrite()
- https://github.com/shirriff/Arduino-IRremote
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino
- Arduino Robot
- Robot
- Робот
- Программирование робота
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом