Arduino:Примеры/RobotLineFollowing
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Следование по линии[1]
Возьмите большой кусок белой бумаги (либо склейте между собой несколько кусков) и, воспользовавшись толстым черным маркером, нарисуйте на нем какую-нибудь фигуру. Эта фигура будет вашим «гоночным треком». Поставьте робота поверх этой линии, а затем включите его. Он начнет сканировать пол на предмет этой линии, а когда найдет, начнет вдоль нее двигаться. Попробуйте этот скетч с разными роботами, чтобы узнать, какой придет к финишу первым!
Необходимое оборудование и инструменты
- Arduino Robot;
- Большой кусок белой бумаги;
- Толстый черный маркер;
- Изолента;
Инструкция
- Подготовьте свой «гоночный трек». Нарисуйте на большом куске бумаги толстую линию (ее концы должны соединяться друг с другом). Если большого куска бумаги нет, склейте скотчем несколько кусков поменьше. Ширина линии должна составлять около 3 см.
- Приклейте ваш «трек» к полу, чтобы из-за движений робота он не елозил. Цвет бумаги должен быть светлым.
- Загрузите скетч, отключите USB и включите питание.
- Поставьте робота на трек – так, чтобы он мог увидеть линию.
- Показав экран загрузки, робот начнет двигаться, тем самым подстраиваясь под линию.
- Настроившись, робот начнет движение вдоль линии. Если все в порядке, он так и будет двигаться по треку. Впрочем, он может съехать с трассы, и тут может помочь калибровка функции lineFollowConfig(). Почитать об этом можно здесь.
Пробуем
Нарисуйте свой собственный «гоночный трек»!
А теперь пускай робот по нему прокатится.
Код
/* Робот следует за линией
Этот скетч демонстрирует способность Arduino Robot следовать
нарисованной на бумаге линии. Лист бумаги должен быть приклеен
к полу скотчем или изолентой. Чтобы сделать «финиш», приклейте поперек
линии кусок темной изоленты.
Цепь:
* Arduino Robot
Создан 1 мая 2013 Х. Янгом (X. Yang),
модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
Этот код не защищен авторским правом.
*/
#include <ArduinoRobot.h> // подключаем библиотеку Robot
#include <Wire.h>
#include <SPI.h>
long timerOrigin; // с помощью этой переменной будем считать время, прошедшее с момента старта
void setup() {
// Инициализируем робота, SD-карту, дисплей и динамик
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
Robot.beginSpeaker();
// Показываем на TFT-экране логотипы:
Robot.displayLogos();
Robot.drawBMP("lf.bmp", 0, 0); // показываем фоновую картинку:
Robot.playFile("chase.sqm"); // проигрываем песенку, хранящуюся на SD-карте
// Показываем на экране инструкции:
Robot.text("Line Following\n\n place the robot on\n the track and \n see it run", 5, 5); // "Следование линии\n\n Поставьте робота\n на трек, чтобы он\n начал движение"
Robot.text("Press the middle\n button to start...", 5, 61); // "Нажмите среднюю\n кнопку, чтобы начать..."
Robot.waitContinue();
// Для того, чтобы робот следовал за линией, нужно указать несколько значений.
// От этих значений также зависит то, как робот будет подстраиваться под линию.
// Чтобы увидеть разницу, попробуйте разные варианты.
// Например, два варианта, предложенных ниже:
//Robot.lineFollowConfig(14, 9, 50, 10);
Robot.lineFollowConfig(11, 7, 60, 5);
// Выставляем моторную плату в режим следования за линией:
Robot.setMode(MODE_LINE_FOLLOW);
// Начинаем:
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 80); // стираем предыдущий текст
Robot.stroke(0, 0, 0);
Robot.text("Start", 5, 5); // "Старт"
Robot.stroke(0, 0, 0); // выбираем цвет для текста
Robot.text("Time passed:", 5, 21); // "Прошло времени:"
timerOrigin = millis(); // ведем отчет времени
while (!Robot.isActionDone()) { // ждем финишного сигнала
Robot.debugPrint(millis() - timerOrigin, 5, 29); // показываем, сколько прошло времени
}
Robot.stroke(0, 0, 0);
Robot.text("Done!", 5, 45); // "Готово!"
}
void loop() {
// Ничего не делаем. Программа срабатывает лишь один раз.
// Чтобы начать еще раз, робота нужно перезагрузить.
}
Как это работает
В нижней части моторной платы робота имеется пять инфракрасных датчиков, которые умеют определять, в каких местах свет отражается, а в каких – нет. Робот, в свою очередь, использует эту информацию, чтобы либо двигаться по прямой, либо поворачивать.
Остановка
Если робот наткнется на черную фигуру, которая будет захватывать сразу пять датчиков, он остановится. Пользуйтесь этим, чтобы робот мог в определенных местах останавливаться и выполнять какие-нибудь действия.
См.также
- Tutorial.RobotRescue
Внешние ссылки
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