мозг

Урок 1. «Мозг робота». Как он работает. Как его программировать. Учимся подавать первые признаки жизни – мигаем светодиодом.

«Мозги» робота, также как и мозги человека, служат для достижения Основной цели этих разных и одновременно одинаковых субъектов. В случае с сумороботом Основная цель проще – достичь победы в поединке. (В случае, если робота будет проектировать девушка – вероятно еще и красиво достичь победы J).

В нашем роботе и  книге в качестве «думающего органа»  используется открытая микропроцессорная платформа Arduino, включающая в себя «железную» и программные части. Основными преимуществами данной платформы является ее широкая распространенность, относительная дешевизна, огромное количество «клонов» (DFRduino, SeeDuido, Lillipad  и многие прочие), огромное сообщество последователей в сети интернет, применимость платформы во вполне серьезных «взрослых» проектах автоматизации в «умных» домах, промышленности, быту.

Для построения нашего робота мы выбрали микропроцессорную плату A-Star 32U4 Micro за ее миниатюрность и отличный функционал, соотношение цены и качества.

Как работают мозги нашего будущего робота?

Что же могут наши «мозги»? Очень многое для столь миниатюрной платы. Получать и обрабатывать информацию от «органов чувств» робота – датчиков дистанции, управлять исполнительными устройствами робота – «ногами и руками» (двигателями). Датчики и управляемые устройства подключаются к контактам платы A-Star 32U4 Micro. Внутри микропроцессора уже есть программа, которая позволяет подключить плату к компьютеру или планшету с установленным программным обеспечением – интегрированной средой разработки Arduino (подробная информация на сайте www.arduino.cc) для «загрузки» сценариев обработки сигналов с датчикой и реакции на них Ваших исполнительных устройств. Данные сценарии называются программами и мы научимся их писать.

 

Начинаем разбираться с контактами A-Star 32U4 Micro. Официальная документация содержит картинку, которая дает возможность понять, как подключить контакты датчиков исполнительных устройств к плате.

Все просто. Желтые цифры на сером фоне – номера цифровых контактов, которые могут быть использованы в Вашей программе. Зеленые цифры с буквой «А» на сером фоне – номера аналоговых контактов.

Резонный вопрос  — цифровой контакт 19 и аналоговый контакт А1 совпадают. Ответ также прост – решите, что будет подключено к данному контакту и программно задайте данному контакту либо цифровой либо аналоговый статус.

Питание от батарейки подключается с контакту VIN – плюс (от 5.5 до 15 вольт) и контакту GND – минус.

5V output и 3.3V output – контакты для питания датчиков нашего робота. Контакты ISP и SCL SDA TXD1 и  RXD1 – искатели приключений сами смогут найти информацию в документации. :)

Обратите внимание – на плате есть светодиоды – одним из которых (LED) мы сейчас помигаем миру с целью заявить о своих правах на будущие победы на рингах.

Надеюсь, у Вас получилось установить среду разработки Arduino с сайта www.arduino.сс  на Ваш компьютер или планшет. Подробные инструкции для установки последней версии среды, ссылки для скачивания среды для различных операционных систем, вся последняя информация о Arduino есть на этом сайте.

Итак, открываем интегрированную среду разработки Arduino на вашем компьютере (планшете) и выбираем из примеров скетч Blink. [Скетчем в сообществе Arduino называется программа или сценарий поведения Вашего робота, который будет записан в микропроцесссор и затем исполнен.]


Видим следующий текст:

Давайте разберемся в структуре скетча. Все что представлено серым цветом – это комментарии к скетчу для Вас – не для «мозгов» платы.

Для «мозгов» платы в теле скетча мы объявляем что переменной led будет соответствовать 13 вывод платы, который имеет тип «int» от слова integer – целое число.

int led = 13;

В теле скетча есть две процедуры setup() и loop(). Процедура setup() исполняется один раз при включении питания платы и обычно в ней содержится объявление контактов платы и инициализация этих контактов). В частности в теле процедуры (между фигурными скобками { и }) расположена следующая строка:

pinMode(led, OUTPUT);

Эта строка инициализирует контакт 13 на вывод данных – т.е. к данному контакту будет присоединено исполнительное устройство (светодиод в нашем случае).

Процедура loop() интересна тем, что все, что мы располагаем в ее теле будет исполненяться «по кругу» — от первой до последней строки и затем опять от первой до последней строки и так пока ваши батарейки не «сядут». В теле нашей процедуры loop() расположены 4 строки с командами для микропроцессора платы:

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

Команда digitalWrite(led, HIGH) указывает нашему микропроцессору дать на контакт 13 (переменная led) высокий уровень напряжения (HIGH)

Следующая за ним команда delay(1000); задерживает все действия микропроцессора на 1000 милисекунд или 1 секунду.

Следующая команда digitalWrite(led, LOW) снижает напряжение на контакте 13 до низкого (почти 0 вольт) и после нее опять по команде delay(1000); опять ожидаем секунду. Затем исполнение опять передается первой строке в теле процедуты loop и программа повторяется.

Загрузим данную программу (круглая кнопка со стрелкой вправо в панели меню) в нашу плату предварительно подключив ее кабелем в USB разъем порта и посмотрим, что получилось. Перед загрузкой обязательно убедитесь, что Вы выбрали именно плату Pololu A-Star 32U4 [По умолчанию, драйверов этой платы пока нет в стандартной установке Ардуино. Для ее установки необходимо скачать драйверы USB и установить их на Ваш компьютер (пункт 6 по порядку — драйверы, затем директорию в ардуино — Успеха!)

Выбрали COM – порт

Выполнили загрузку:

После окончания загрузки плата начинает мигать светодиодом с частотой 1 секунда. – мы научились «подмигивать» миру!!!

Вопросы для проверки:

  1. Какие основные типы контактов на микропроцесссорной плате A-Star 32U4 Вы знаете? Для чего они используются?
  2. Что такое скетчи? Для чего они нужны?
  3. Какая интегрированная среда разработки используется для создания скетчей для Arduino роботов? Как загрузить программу в Вашу микропроцессорную плату?
  4. Какие основные процедуры должны обязательно быть в скетче для Arduino?

Aboutadmin