Первый микро-проект на ARDUINO
Ну вот и настало время приобщиться к DUINO-культуре и написать свою первую прошивку для микроконтроллера.
Для начала введем начинающих в курс дела. Чтобы воплотить наш текущий, да и все последующие проекты в жизнь нам придется скачать последнюю версию IDE ARDUINO с официального сайта http://arduino.ru/Arduino_environment . IDE ARDUINO - это среда разработки микропрограмм для контроллеров DUINO . Подробнее про нее можете прочитать по той же ссылке. Нам всего лишь необходимо знать, что в этой среде мы будем писать наши микропрограммы так называемые «скетчи». Если вы не умете программировать или плохо программируете – ничего страшного в этом нет, тут все достаточно просто.
Итак, Вы скачали необходимый дистрибутив по ссылке выше, установили драйвера, если это потребовалось (данный процесс описывать не буду, так как все есть по ссылке). Настало время писать код.
Чтож, не буду первооткрывателем, если скажу, что в данной среде разработки уже есть готовый примеры практически по каждому разделу. Не будем усложнять н аш первый микро-проект.
Что он будет делать? Будет моргать светодиодом, встроенным в плату DUINO. Ничего сверхъестественного в этом нет.
Если Вы опытный ардуинщик – можете пропустить эту часть, пролистайте ниже, там разберем немного теории.
Подключаем DUINO к компьютеру шнурком USB, открываем IDE ARDUINO . Далее открываем пример как на скриншоте:
Открывается пример программы:
Не вникая (пока что) в код, быстренько настраиваем IDE ARDUINO . Выберите как на рисунке тип Вашей платы:
Выбираем виртуальный ком порт, к которому подключена ваша плата. В идеале он должен быть единственный:
Загружаем нашу первую программу в DUINO. Для этого нажмем кнопку как на рисунке:
А теперь восторг! На нашей плате мигает маленький встроенный светодиод!
Как это все работает – пока настоящая магия. На самом деле ничего волшебного в этом нет. И чтобы вы убедились в этом, разберем пример:
int led = 13; // целочисленная переменная led содержит номер контакта (пина) DUINO, которым мы будем мигать (13 – тк именно на этой ноге установлен встроенный светодиод)
//в этом языке программирования всего 2 главные функции без которых не обходится ни один скетч
//функция начальной установки значений
pinMode ( led , OUTPUT ); //устанавливаем 13 ногу для вывода информации
// основная функция выполнения наших полезных действий (выполняется в цикле)
digitalWrite ( led , HIGH ); // включаем ногу 13 (на ней расположен светодиод)
delay (1000); // задержка выполнения всех операций на 1 секунду
digitalWrite(led, LOW); // выключаем ногу 13
delay(1000); // опять ждем 1 секунду
Этот же пример есть на официальном сайте http://arduino.cc/en/Tutorial/Blink . Все в принципе просто. Если у Вас возникли трудности с пониманием данного языка программирования, то я бы посоветовал следующие ссылки:
- http://arduino.ru/Reference - официальный сайт;
- http://arduino.shopium.ua/pages/arduino-getting-started/ - наши украинские товарищи;
- http://mkpochtoi.narod.ru/arduino_book_rus.pdf - отличный краткий справочник;
- http://robocraft.ru/blog/RoboCraft/41.html - тоже замечательный сайт.
Опытным ардуинщикам можно читать дальше =)
На это первый проект не заканчивается. Идем дальше, для углубленного понимания всего происходящего подключим свой светодиод к цифровому выводу DUINO. Например к pin 10.
С программой все понятно. Изменим значение переменной led на 10. А вот со схемой придется немного разобраться.
Для нетерпеливых просто скажу, что нужно подключить светодиод соблюдая полярность через резистор 470 Ом. Если интересно понять суть процесса – читаете далее.
Как подключить вообще что-либо к микроконтроллеру? Да и зачем вообще нужен резистор? Начинающие электронщики часто дают ответ: «Мол, напряжение после сопротивления будет ниже и светодиод не сгорит». По сути, они правы только на половину – светодиод не сгорит. Но проблема не в напряжении, а в силе тока.
У светодиода, как и у любого электронного устройства есть своя ВАХ (вольтамперная характеристика). Она показывает, при каких параметрах напряжения и соответствующей силы тока устройство будет работать нормально. Из ВАХ видно, что для светодиода важна сила тока, протекающего через него.
Для примера рассчитаем значение токоограничивающего резистора. Для выводов ARDUINO максимально допустимый ток 40mA при напряжении 5V. А для светодиодов данные колеблются. Сила тока 10-20mA и падение напряжения от 1,6 до 3,7 вольт (зависит от модели и цвета свечения). Покопавшись в даташитах, я нашел, что для небольших (не сверхярких) светодиодов падение напряжения порядка 2 – 2,1V, вот и будем от этого отталкиваться.
Вспомним закон Ома:
I = U / R
Представим все известные нам данные на схеме:
k – это коэффициент надежности светодиода, он влияет на срок службы светодиода (возьмем равным 0,75).
Найдем крайние значения:
для I=10mA R=400 Ом;
для I=20mA R=200 Ом ;
Исходя из этого, возьмем резистор 470 Ом, так как точной маркировки у меня лично на светодиодах нет, если яркость слишком мала, можно уменьшить номинал резистора. Для больших светодиодов беру соответственно 220 Ом.
Далее все очень просто, подключаем как на схеме:
Ну и последнее, чтобы уже не возвращаться к этой теме про светодиоды (ведь есть еще куча всего интересного), в этом примере будем менять яркость светодиода. Схему переделывать не нужно, просто немного изменим прорамму.
На нашем DUINO есть так называемые ШИМ выходы, в том числе и pin10, к которому подключен наш светодиод. ШИМ – широтно-импульсная модуляция, если интересно, то можно почитать об этом на официальном сайте. Если вкратце… то представьте, что на pin 10 постоянно чередуются 0 и 1: 01010101010101010101010101. Время одного такта «01» фиксировано, а мы можем изменять, как долго будет в этом такте «включена» 1. Для использования этой воистину замечательной штуки есть отличная функция:
analogWrite (номер ноги, 0..255);
Приведу небольшой и очень простой пример, при его выполнении светодиод будет ступенчато менять свою яркость: