Arduino:Примеры/RobotLogo
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Базовые движения Arduino Robot[1]
Этот скетч демонстрирует базовые движения, на которые способен Arduino Robot. Когда скетч начнет работать, начинайте нажимать на кнопки, находящиеся на верхней (контрольной) плате, тем самым указывая для робота желаемый маршрут. Введя нужную последовательность (до 20 «шагов» за раз), нажмите на среднюю кнопку, чтобы записать ее в память. Теперь поставьте робота на пол, чтобы он начинал перемещаться согласно введенным вами инструкциям.
Необходимое оборудование
- Arduino Robot;
Инструкция
- Загрузите скетч, отсоедините USB и включите питание.
- Поставьте робота на пол – на чистую, гладкую поверхность, чтобы он мог свободно по ней перемещаться.
- Показав на своем экране загрузочные картинки, робот попросит вас ввести команды.
- Начинайте нажимать на кнопки, тем самым указывая роботу желаемый маршрут движения. Робот будет записывать эти команды, чтобы позднее приступить к их выполнению.
- Кнопка «Влево» – это левый поворот на 90 градусов, «Вправо» – правый поворот на 90 градусов, «Вверх» – робот идет вперед в течение одной секунды, «Вниз» – робот идет назад в течение одной секунды.
- Закончив с маршрутом, нажмите на среднюю кнопку. После этого робот начнет по порядку выполнять введенные вами команды. Робот может запомнить не более 20 команд, и если вы введете все 20, то робот начнет выполнять их еще до того, как вы нажмете среднюю кнопку.
- Выполнив запрограммированную последовательность, робот вернется к 3-ему шагу этой инструкции. Вводите новые команды и пробуйте еще раз!
Пробуем
Программирование движений робота на кнопочной крестовине
Попробуйте повторить эту последовательность на своем Arduino Robot
Код
Тут мы попробуем объяснить код – строчка за строчкой.
/* Базовые движения Arduino Robot
Этот скетч демонстрирует базовые движения Arduino Robot.
Когда скетч запустится, начинайте нажимать на кнопки,
находящиеся на верхней (контрольной) плате, чтобы указать роботу,
каким маршрутом двигаться. Нажав на среднюю кнопку, вы
сохраните введенную вами последовательность, а робот,
в свою очередь, согласно этой последовательности будет передвигаться.
Записать можно не более 20 команд. На выполнение одной команды будет
уходить одна секунда.
Этот пример использует изображения, хранящиеся на SD-карте.
Он ищет файлы с названиями «lg0.bmp» и «lg1.bmp», а затем
показывает их на своем экране.
Цепь:
* Arduino Robot
Создан 1 мая 2013 Х. Янгом (X. Yang),
модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
Этот код не защищен авторским правом.
*/
#include <ArduinoRobot.h> // подключаем библиотеку Robot
#include <Wire.h>
#include <SPI.h>
int commands[20]; // массив для хранения команд
void setup() {
// Инициализируем робота, SD-карту и дисплей:
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// Показываем на экране картинки «lg0.bmp» и «lg1.bmp»:
Robot.displayLogos();
}
void loop() {
Robot.drawBMP("intro.bmp", 0, 0); // фоновое изображение экрана
iniCommands(); // удаляем команды из массива
addCommands(); // добавляем команды в массив
delay(1000); // ждем секунду
executeCommands(); // следуем заданной последовательности
Robot.stroke(0, 0, 0);
Robot.text("Done!", 5, 103); // пишем на экране сообщение «Готово!»
delay(1500); // немного ждем
}
// Функция для очистки массива с командами:
void iniCommands() {
for (int i = 0; i < 20; i++) {
commands[i] = -1;
}
}
// Функция для добавления команд в массив:
void addCommands() {
Robot.stroke(0, 0, 0);
// Показываем на экране сообщение:
Robot.text("1. Press buttons to\n add commands.\n\n 2. Middle to finish.", 5, 5); // "1. Нажимайте кнопки\n, чтобы ввести команды.\n\n 2. Когда закончите\n, нажмите среднюю кнопку."
// Считываем состояния кнопок:
for (int i = 0; i < 20;) { // устанавливаем лимит в 20 команд
int key = Robot.keyboardRead();
if (key == BUTTON_MIDDLE) { // кнопка для завершения ввода последовательности
break;
} else if (key == BUTTON_NONE) { // если на среднюю кнопку не нажали, продолжаем
continue;
}
commands[i] = key; // сохраняем состояние кнопки в массив
PrintCommandI(i, 46); // показываем команду на экране
delay(100);
i++;
}
}
// Функция для «прочесывания» массива с командами
// (т.е. функция, которая будет отдавать роботу те или иные команды):
void executeCommands() {
// Выводим на монитор статусное сообщение:
Robot.text("Excuting...", 5, 70); // "Выполнение..."
// «Прочесываем» массив и двигаем робота согласно имеющимся в нем командам:
for (int i = 0; i < 20; i++) {
switch (commands[i]) {
case BUTTON_LEFT:
Robot.turn(-90);
break;
case BUTTON_RIGHT:
Robot.turn(90);
break;
case BUTTON_UP:
Robot.motorsWrite(255, 255);
break;
case BUTTON_DOWN:
Robot.motorsWrite(-255, -255);
break;
case BUTTON_NONE:
return;
}
// Печатаем текущую команду на экране:
Robot.stroke(255, 0, 0);
PrintCommandI(i, 86);
delay(1000);
// Притормаживаем робота на секунду:
Robot.motorsStop();
delay(1000);
}
}
// Конвертируем нажатие на кнопку в один символ:
char keyToChar(int key) {
switch (key) {
case BUTTON_LEFT:
return '<';
case BUTTON_RIGHT:
return '>';
case BUTTON_UP:
return '^';
case BUTTON_DOWN:
return 'v';
}
}
// Функция для показа команды на мониторе:
void PrintCommandI(int i, int originY) {
Robot.text(keyToChar(commands[i]), i % 14 * 8 + 5, i / 14 * 10 + originY);
}
См.также
- begin()
- beginTFT()
- motorsWrite()
- turn()
- keyboardRead()
Внешние ссылки
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