Arduino:Примеры/RobotRemotecontrol: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Удаленное управление<ref>[https://www.arduino.cc/en/Tutorial/RobotRemoteControl Arduino - Remote Control]</ref>= | |||
''Этот пример создавался как экспериментальный – для его работы на вашей IDE необходимо установить библиотеку '''IR-Remote от Кена Ширриффа (Ken Shirriff)'''.'' | ''Этот пример создавался как экспериментальный – для его работы на вашей [[IDE]] необходимо установить библиотеку '''IR-Remote от Кена Ширриффа (Ken Shirriff)'''.'' | ||
Чтобы узнать о ней более подробно, смотрите сам код. | Чтобы узнать о ней более подробно, смотрите сам код. | ||
При помощи инфракрасного ресивера | При помощи [[инфракрасного ресивера]] [[робот]]ом можно управлять как телевизором – с пульта управления. В этом примере мы возьмем пульт управления, совместимый с [[Sony]], и назначим некоторым его кнопкам определенные действия. Благодаря этому мы сможем управлять [[робот]]ом, даже не прикасаясь к нему. | ||
==Необходимое оборудование== | ==Необходимое оборудование== | ||
* | * [[Arduino:Продукты/Продукты Arduino/Arduino Robot|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». Замените имеющиеся в этих строчках значения на те, что увидели на экране. | ||
==Пробуем== | ==Пробуем== | ||
[[File:LottieLemon_Remote_780.png]] | [[File:LottieLemon_Remote_780.png|center|frame|Рис. 1. |alt=]] | ||
Дистанционное управление роботом | Дистанционное управление роботом |
Версия от 13:45, 5 февраля 2023
Содержание | Знакомство с 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