Arduino:Примеры/RobotCompass
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Компас [1]
Arduino Robot имеет компас-модуль, и этот прибор позволяет ему определять, в каком направлении он движется. Что касается этого скетч, то он позволяет роботу двигаться в строго определенном направлении. Если взять робота в руки и повертеть, экранный компас начнет показывать соответствующие изменения.
Внимание! Убедитесь, что рядом с роботом нет магнитов – они могут помешать работе компаса.
Необходимое оборудование
- Arduino Robot;
Инструкция
- Загрузите скетч, отключите USB и включите питание;
- Поставьте робота на землю;
- После загрузочной картинки на экране появится картинка с компасом;
- Робот начнет двигаться в определенном направлении (в данном случае на юг). Если повернуть его, он развернется и снова начнет движение туда, куда ему было запрограммировано.
- Если вы хотите поменять это направление , найдите в коде строчку «int direc=180». Вместо «180» можно поставить любую цифру в диапазоне от «0» до «359». Если вписать «0», то робот будет двигаться на север, если «90» – на восток, если «180» – на юг, а если «270» – на запад. Куда бы вы хотели направить своего робота?
Пробуем
Проверяем, как работает компас
Код
/* Компас-модуль Arduino Robot
Робот оснащен встроенным компас-модулем, который подсказывает ему,
в каком направлении двигаться. Этот скетч делает так, чтобы робот
двигался в строго определенном направлении.
Внимание, если рядом будут находиться магниты, они могут помешать
работе компаса.
Цепь:
* Arduino Robot
Создан 1 мая 2013 Х. Янгом (X. Yang),
модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
Этот код не защищен авторским правом.
*/
// Подключаем библиотеку робота:
#include <ArduinoRobot.h>
#include <Wire.h>
#include <SPI.h>
int speedLeft;
int speedRight;
int compassValue;
int direc = 180; // направление, в котором будет двигаться робот
void setup() {
// Инициализируем модули:
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
Robot.displayLogos();
}
void loop() {
// Считываем данные от компаса:
compassValue = Robot.compassRead();
// Насколько градусов мы сбились с курса?
int diff = compassValue - direc;
// Модифицируем градусы:
if (diff > 180) {
diff = -360 + diff;
} else if (diff < -180) {
diff = 360 + diff;
}
// Подгоняем градусный диапазон к диапазону скорости колесиков робота:
diff = map(diff, -180, 180, -255, 255);
if (diff > 0) {
// Делаем так, чтобы правое колесо вертелось со скоростью «255»,
// а левое поменяло свою скорость, чтобы робот подстроился под нужный курс:
speedLeft = 255 - diff;
speedRight = 255;
} else {
// Делаем так, чтобы левое колесо вертелось со скоростью «255»,
// а правое поменяло свою скорость, чтобы робот подстроился под нужный курс:
speedLeft = 255;
speedRight = 255 + diff;
}
// Передаем данные о скорости моторам:
Robot.motorsWrite(speedLeft, speedRight);
// Отображаем информацию о направлении на экране робота:
Robot.drawCompass(compassValue);
}
См.также
- begin()
- beginTFT()
- compassRead()
- drawDire()
- motorsWrite()
Внешние ссылки
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