Arduino:Примеры/RobotCompass

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Перевел 364226 статей для сайта.</br>Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Компас [1]

Arduino Robot имеет компас-модуль, и этот прибор позволяет ему определять, в каком направлении он движется. Что касается этого скетч, то он позволяет роботу двигаться в строго определенном направлении. Если взять робота в руки и повертеть, экранный компас начнет показывать соответствующие изменения.

Внимание! Убедитесь, что рядом с роботом нет магнитов – они могут помешать работе компаса.

Необходимое оборудование

  • Arduino Robot;

Инструкция

  1. Загрузите скетч, отключите USB и включите питание;
  2. Поставьте робота на землю;
  3. После загрузочной картинки на экране появится картинка с компасом;
  4. Робот начнет двигаться в определенном направлении (в данном случае на юг). Если повернуть его, он развернется и снова начнет движение туда, куда ему было запрограммировано.
  5. Если вы хотите поменять это направление , найдите в коде строчку «int direc=180». Вместо «180» можно поставить любую цифру в диапазоне от «0» до «359». Если вписать «0», то робот будет двигаться на север, если «90» – на восток, если «180» – на юг, а если «270» – на запад. Куда бы вы хотели направить своего робота?

Пробуем

LottieLemon illustration compass 780.png

Проверяем, как работает компас

Код

 1 /* Компас-модуль Arduino Robot
 2 
 3 Робот оснащен встроенным компас-модулем, который подсказывает ему,
 4 в каком направлении двигаться. Этот скетч делает так, чтобы робот
 5 двигался в строго определенном направлении. 
 6 
 7 Внимание, если рядом будут находиться магниты, они могут помешать
 8 работе компаса.
 9 
10 Цепь:
11 * Arduino Robot
12 
13 Создан 1 мая 2013 Х. Янгом (X. Yang),
14 модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
15 
16 Этот код не защищен авторским правом.
17 */
18 
19 // Подключаем библиотеку робота:
20 #include <ArduinoRobot.h>
21 #include <Wire.h>
22 #include <SPI.h>
23 
24 int speedLeft;
25 int speedRight;
26 int compassValue;
27 int direc = 180;  // направление, в котором будет двигаться робот
28 
29 void setup() {
30   // Инициализируем модули:
31   Robot.begin();
32   Robot.beginTFT();
33   Robot.beginSD();
34   Robot.displayLogos();
35 }
36 
37 void loop() {
38   // Считываем данные от компаса:
39   compassValue = Robot.compassRead();
40 
41   // Насколько градусов мы сбились с курса?
42   int diff = compassValue - direc;
43 
44   // Модифицируем градусы:
45   if (diff > 180) {
46     diff = -360 + diff;
47   } else if (diff < -180) {
48     diff = 360 + diff;
49   }
50 
51   // Подгоняем градусный диапазон к диапазону скорости колесиков робота:
52   diff = map(diff, -180, 180, -255, 255);
53 
54   if (diff > 0) {
55     // Делаем так, чтобы правое колесо вертелось со скоростью «255»,
56     // а левое поменяло свою скорость, чтобы робот подстроился под нужный курс:
57     speedLeft = 255 - diff;
58     speedRight = 255;
59   } else {
60     // Делаем так, чтобы левое колесо вертелось со скоростью «255»,
61     // а правое поменяло свою скорость, чтобы робот подстроился под нужный курс:
62     speedLeft = 255;
63     speedRight = 255 + diff;
64   }
65   // Передаем данные о скорости моторам:
66   Robot.motorsWrite(speedLeft, speedRight);
67 
68   // Отображаем информацию о направлении на экране робота:
69   Robot.drawCompass(compassValue);
70 }

См.также

  1. begin()
  2. beginTFT()
  3. compassRead()
  4. drawDire()
  5. motorsWrite()

Внешние ссылки