четверг, 22 августа 2013 г.

Arduino UNO R3. Hello World!

Список ссылок на статьи(для удобной навигации):
0. Пилотная статья
1. Разбираем набор, первое подключение платы(и первая лабораторка!)

Привет. Уже вечер и я таки решил наконец написать первую статью. Постараюсь выкладывать по одной статье в неделю, в зависимости от свободного времени. Сегодня мы распакуем пришедший набор из Китая, рассмотрим все его детали, подключим плату к компьютеру и делаем Hello World, который одинаковый для всех подобных плат и который уже всех достал, а именно, поморгаем светодиодом. Более подробное описание платы я решил поместить в следующую статью,чтобы они не получались слишком громоздкими и большими. Если интересно, то добро пожаловать под кат.



Для начала рассмотрим лабораторки, чтобы наметить план на будущее. Вот что нам предлагает продавец:

Hello World !1
LED flashes experiments.2
PWM -control light levels experiment3
Advertising light water experiment 4
Button control LED experiment5
Traffic light design experiments6
Responder experiments 7
Buzzer experiments8
Analog value read experimental9
Light control sound experiment10
Photosensitive light experiment11
LM35 temperature sensor experiment12
Tilt switch experiments 13
Fire alarm experimental14
Digital tube experiments 15
Four digital tube display experiment16
A 74HC595 application experiments17
Servo control experiments18
Infrared remote experiments19
1602 LCD module experiment20
PS2 joysticks experiment21
Stepper motor experiment22
Three-color RGB module experiment23
Relay Module Experiment24

Что же, 24 лабораторные работы! Достаточно интересно. Осталось разобраться, насколько правдиво. В принципе по списку все детали для почти всех лабораторок есть. Почему почти? Потому что мне не ясно, как делать эксперимент с пожарной сигнализацией из-за отсутствия дымо-датчика, который я не обнаружил в наборе(да и в списке деталей его не было). Ладно, разберёмся.
Пришло время рассмотреть детали более подробно:

 Собственно вот весь набор в распакованном виде. На первый взгляд не густо.


 Коробочка, где было всё достаточно хорошо упаковано. Все детали пришли рабочие и конечно же в подарок был прислан пупырчатый пакет! Который занял у меня какое то время(если вы понимаете о чём я сейчас..^_^). Коробку удобно в дальнейшем использовать для хранения каких либо деталей.


Сама плата с двух сторон. Сделана хорошо, все контакты спаяны добротно, ничего не шатается и не отрывается. Назначение разъёмов мы рассмотрим потом(хотя они на плате подписаны).


Деталь для последней лабораторки. Реле для управления питанием домашней сети(220 вольт).


Цифровые панели. Или по другому Digita tube. Думаю для многих знакомый элемент, так как много где присутствует. Один-и-четырёх секционный. 


Аналоговый стик или в простонародье "сосок". Думаю с ним можно будет сделать эмулятор несложной приставки.


Я в начале думал, что это такое, потом понял - драйвер для управления шаговым мотором. Но только я всё равно не понял одного - зачем ему 4 светодиода ещё? Разберёмся.


Регулируемый резистор(Потенциометр). То есть крутя его туда-сюда мы можем регулировать силу сопротивления, например изменяя яркость свечения светодиода.


Микросхема расширения выходов\входов для платы. То есть когда нам не хватает выходов, можно использовать её. Например, сделать массив светодиодов.


Пачка резисторов. Отличаются цветовой маркировкой. Онлайн справочник по маркировкам резисторов здесь. Просто указываем цвета и получаем значения. По 5 штук на 1 кОм и 10 кОм. 8 штук на 220 Ом.


Сам шаговый мотор, о чём гордо написано на корпусе. 


Так называемый RGB светодиод. Меняет цвет светимости в зависимости..от программы, которую мы напишем, чтобы им поморгать! Имеет сразу 3 цвета.(а может и больше, сам пока точно не знаю).


Кнопочки, большие и маленькие + 2 пьезодинамика. Можно мутить 8-битную музыку!


Вот..ВОТ! Именно эта деталь меня больше всего интересует. Многострочный экранчик. Прикрутим джоустик и замутим мини-марио на нём!


Пульт управления, специально для mp3. Не знаю, к чему это, но для эксперимента с инфракрасной связью точно. Для проекта простого mp3 плеера или трекерной музыки.


Шилд для подключения. Пока не разобрался зачем он и что с ним делать. Плата для прототипирования и расширения контактов Arduino. Требует пайки.

Маленькая площадка для беспаечного соединения всех деталей.


Набор светодиодов. Предполагаю, трёх разных цветов.


Фоторезистор. Меняет своё сопротивление в зависимости от яркости источника света поблизости.


Сервопривод. Для осуществления движения какой-нибудь детали.


Панель для батареек, для автономного питания платы без подключения к USB. Всего на выходе 9V. Именно столько необходимо плате для питания. Батарейки каждая по 1.5 вольта. 


Кабель для подключения платы к компьютеру.


Набор проводов для соединений типа мама\папа + рейка железных контактов тоже для соединений.


Большая плата для беспаечного соединения деталей.


Набор рассыпухи. Инфракрасный приёмник(который в красивой стальной решётке) + излучатель. Показанные ранее 3 фоторезистора. Транзистор LM35 для температурных экспериментов. Остались только две неизвестные для меня детали(в красной рамке). Они очень похожи на конденсаторы, но нет какого-либо номинала на упаковке. И ещё у них внутри что-то болтается, если это именно конденсаторы, то ничего болтаться не должно. Оставим пока на выяснение(может кто из читающих знает что это?).

UPD: умный аноним в комментах подсказал, что это tilt switch, и как я понял датчики угла или вибрации. В ходе экспериментов станет яснее. Спасибо аноним!

Детали рассмотрели, теперь самое время подключить плату к компьютеру. Сначала скачиваем среду разработки: WindowsMac OS XLinux x86Linux x64. Подключаем плату к компьютеру при помощи синего кабеля. Куда чего засовывать думаю и так понятно. Плата нам весело заморгает, должен загореться светодиод ON и заморгать светодиод L. Компьютер известит о ново найденном устройстве, попытается найти у себя драйвера, но его ждёт фейл. Закрываем все эти сообщения и начинает устанавливать среду. К сожалению саму установку я не заскринил, так что сами, хотя там нет ничего сложного. После установки среды поставятся и драйвера, я советую перезагрузить компьютер(не обязательно, но на всякий случай). Так, вот и сама среда разработки версии 1.0.5:



Думаю, особых разъяснений здесь не нужно. В белом поле пишем саму программу, наверху 5 управляющих кнопок. После подключения нам надо проверить, правильно ли найдена плата. Заходим в Сервис-Плата и там должно быть Arduino UNO. Далее Сервис-Последовательный порт у меня он один и выставлено COM3. Сервис_Программатор должно быть выставлено AVRISP mkII. Кнопки которые наверху, по порядку проверить, загрузить, создать, открыть, сохранить. Ну и последняя - монитор порта. Если мы делаем проверку, то мы компилируем и проверяем написанную программу, но не зашиваем её в плату. А вот кнопка загрузить делает всё вышесказанное, но при этом программа зашивается в плату. Так, пора сделать первую прошивку! Заходим в Файл-Примеры-Basics-Blink. У нас открывается окно с текстом программы(так называемый скетч). Ардуино использует некую разновидность языка Си, поэтому те,кто когда либо с ним работал, легко смогут понять, что из себя представляет эта программа. Те же,кто с языком не знаком, советую почитать статью по основам и грамматическим конструкциям(или не читать, в принципе дело ваше, так как тут уже чисто программирование). Здесь есть все конструкции языка + полезные статьи для ознакомление с работой. Разберём программу моргания светодиодом:


/* Мигание
* включает светодиод на 1 секунду, выключает на 1 секунду,
* функция вызывается по кругу
* Created 1 June 2005 By David Cuartielles
* http://arduino.cc/en/Tutorial/Blink
* based on an orginal by H. Barragan for the Wiring i/o board
*/
int ledPin = 13; // светодиод подключен к выходу 13
// Функция начальных установок setup() вызывается 1 раз в начале скетча
void setup() { // устанавливаем 13 контакт в режим вывода:
pinMode(ledPin, OUTPUT); }
// функция loop() вызывается по кругу
// пока Arduino подключен к питанию
void loop() {
digitalWrite(ledPin, HIGH); // включение светодиода
delay(1000); // задержка 1 сек
digitalWrite(ledPin, LOW); // выключение светодиода
delay(1000); // задержка 1 сек
}

Думаю, здесь всё понятно, светодиод моргает раз в секунду. Если поменять цифры в delay(), то можно заставить его моргать с разной частотой. Изменим цифры, нажмём первую кнопку проверки и если всё хорошо, кнопку загрузки. Ждём пока программа зашьётся в микроконтроллер и радуемся собственно выставленной частоте светодиода! Это и есть тот самый пресловутый Hello World. На этом я заканчиваю статью, в следующей статье мы уже подключим внешний светодиод, поучим немного теории по светодиодам и по самой плате, а так же проверим несколько функций для работы со светодиодом. Всего хорошего!




3 комментария:

  1. Поморгал, пили следующую!

    ОтветитьУдалить
  2. Детальки в красном это tilt switch.

    ОтветитьУдалить
  3. Искал как перепаять hd 205, наткнулся на этот уютный бложик)
    А теперь еще и на эту статью. Буду следить !

    ОтветитьУдалить