Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/RobotCompass

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Компас [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()

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

  1. Arduino - Compass