-
Введение
-
Глава 1. Аппаратная основа
- Содержание Главы 1
- Подготовка
- Плата Arduino UNO
- Плата управления моторами
- Плата связи с датчиками
- Аппаратная основа на базе набора miniQ
- Аппаратная основа на базе набора Turtle
- Аппаратная основа на базе набора ShieldBot
- Как ученики строили своих miniQ роботов
- Этапы сборки
- Система электропитания робота
- Провода энкодеров и датчиков линии
- Завершение главы 1
-
Глава 2. Начало работ с системой программирования Arduino
- Содержание Главы 2
- Подготовка
- Общие правила организации систем управления
- Входные данные. Датчики
- Обработка данных. Микроконтроллер
- Выходные данные. Исполнительные устройства
- То, что нужно всегда помнить
- Начало работы с системой Arduino
- Загрузка программы-примера “Мигающий огонь”
- Модификация программы “Мигающий огонь”
- Алгоритм программы “Мигающий огонь”
- Завершение Главы 2
-
Глава 3. Управление тяговыми моторами
-
Глава 4. Связь с ультразвуковым датчиком расстояния
- Содержание Главы 4
- Подготовка
- Постановка задач
- Электрическое подключение датчиков расстояния
- Разработка алгоритма
- Исходный текст
- Адреса Echo и Trigger как глобальные переменные
- Отладка и испытание программы
- Руководство пользователя
- Приложение 4.1. Подсказки по сложному алгоритму
- Приложение 4.2. Исходный текст (для упрощённого алгоритма)
- Завершение главы 4
- Факультативная часть главы 4
-
Глава 5. Робот следует за рукой или лидером
- Содержание главы 5
- Подготовка
- Релейный регулятор
- Пропорциональный регулятор
- Утилиты
- UTILIT_OneRangeMeter ()
- UTILIT_Motors_Control ()
- UTILIT_Hand_Follow_Proportional (int _range_needed)
- Два факультативных упражнения после перерыва
- Программа следования за лидером
- Постановка задачи
- Макрос следования за Лидером
- Отладка и испытание программы Programm_modul_5_Leader_Follow.ino
- Если что-то не так
- Исследуем робота
- Важные замечания
- Приложение 5.1 Алгоритм пропорционального регулирования
- Приложение 5.2. Исходный текст утилиты регулятора для следования за рукой
- Приложение 5.3. Документация для макроса и утилит следования за лидером
- MACROS_Leader_Follow (int _distasnce_to_leader)
- UTILIT_LeftRightRangeMeter ()
- UTILIT_Leader_Follow_Proportional (int _range_needed)
- UTILIT_Motors_Control () & UTILIT_Motors_Stop ()
- Завершение главы 5
- Как можно улучшить нашего робота?
-
Глава 6. Структура программного обеспечения
- Содержание главы 6
- Подготовка
- Уровни программного обеспечения
- loop ()
- Задачи
- Макросы
- Утилиты
- Драйверы. Библиотеки. Калькуляторы
- Ввод-вывод
- Глобальные переменные
- Правила обмена информации между уровнями
- Практическое занятие 6.1. Учтём трение в механизмах
- Практическое занятие 6.2. Доворот в сторону лидера умножением
- Практическое занятие 6.3. Доворот в сторону лидера сложением
- Практическое занятие 6.4. Доворот в сторону лидера обнулением
- Практическое занятие 6.5. Делаем калькулятор
- Гонки за лидером
- Послесловие
- Список программ для Ардуино
- Лицензионное соглашение
Подготовка
- Найти в интернете и прочитать описание принципа Широтно-Импульсной модуляции (ШИМ).
В принципе можно особо и не заморачиваться с ШИМ. Рабочую программу можно написать, двигаясь по тексту раздела “Работа в классе”. Но всё-таки лучше понимать, что собственно происходит в плате MotorShield, когда Вы задаёте в тексте программы соответствующие операторы.
- Найти в интернете и прочитать описание платы MotorShield. Особое внимание обратить на номера контактов Arduino UNO, которые задействованы для управления моторами.
- Найти в интернете и разобраться, как работают операторы
if (условие) {действие;}.
if (условие) {действие_1;} else {действие_2;}
- Если что-то непонятно – не отчаивайтесь, так бывает часто и со многими – просто переходите к следующему разделу.
В этой главе мы напишем и отладим нашу первую функцию – управление тяговыми моторами. Но прежде чем мы начнём, надо немного поговорить о том, какие функции бывают.
В прошлой главе мы познакомились с функцией delay (). Это встроенная функция. Она так называется потому, что она живёт внутри Arduino IDE (встроена в него).
Эта функция когда-то была кем-то написана, и теперь ею можно пользоваться, особенно не вникая в то, как она устроена. Для этого в рабочей документации функции есть два раздела – синтаксис и руководство пользователя.
- Синтаксис – как её надо записывать в исходном коде, чтобы компилятор знал, что делать.
- Руководство пользователя – описание того, что она делает.
Для встроенной функции delay ()
руководство пользователя записывается так –
- Функция
delay (value)
обеспечивает задержку выполнения программы.
Синтаксис функции delay ()
следующий –
delay (value);
, где value – целое число миллисекунд, на которое происходит задержка.
В этой главе мы будем создавать другой тип функции – внешнюю функцию, которая впоследствии станет встроенной для Вас и Ваших друзей.
Для этого нам надо будет последовательно выполнить несколько этапов:
- Постановка задачи.
- Разработка алгоритма и списка локальных переменных.
- Написание исходного кода.
- Отладка исходного кода совместно с аппаратной частью.
- Написание рабочей документации.
- Описание постановки задачи.
- Алгоритм и список локальных переменных.
- Исходный текст.
- Руководство пользователя.
До сих пор я не упоминал о локальных переменных.
Что это такое и для чего они нужны Вы узнаете чуть позже.