Arduino:Примеры/RobotCompass: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
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">») |
Нет описания правки |
||
Строка 30: | Строка 30: | ||
== Код == | == Код == | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* Компас-модуль Arduino Robot | /* Компас-модуль Arduino Robot | ||
Версия от 12:33, 20 мая 2023
Содержание | Знакомство с 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()