среда, 23 февраля 2011 г.

Программируем Arduio: первые шаги.

Здрайвствуйте, читатели. В предыдущей статье я рассказал как подключить Arduino/Seeeduino к компьютеру, настроить драйвера и софт. Сегодня я научу вас, как создать простенькую прошивку и заставить эту плату выполнять определенные действия.


Для написания прошивок в Arduino IDE используется используется язык Wiring - надстройка над C++ в виде готовых функций, классов и набора библиотек. Подробное описания языка Wiring можно найти на оффициальном сайте. Микроконтроллер на плате уже прошит так называемым Bootloader'ом. Он принимает с компьютера наш скетч (прошивку) и записывает его в память микроконтроллера. Это сильно упрощает процесс прошивки, больше не нужны никакие программаторы и сопотствующие сложности. Прошивать таким образом можно сколько угодно раз до полного износа флеш-памяти микроконтроллера.


Скетч для Arduino состоит из двух функций - setup() и loop(). Первая из них вызывается один раз во время запуска или перезагрузки платы, вторая вызывается сразу после первой и зацикливается до бесконечности, пока не перезагрузим плату. В функции setup() нужно указывать действия, которые микроконтроллер должен выполнить одиножды: определение переменных, назначение пинов платы на ввод/вывод, а в функции loop() - основную часть нашей программы.


Рассмотрим как это работает на примере скетча Blink из стандартных примеров Arduino IDE. Для этого выберите пункт меню File - Examples - Basics - Blink:
 В итоге увидим вот такой скетч:

  1. /*
  2.   Blink
  3.   Turns on an LED on for one second, then off for one second, repeatedly.
  4.   This example code is in the public domain.
  5.  */
  6. void setup() {                
  7.   // initialize the digital pin as an output.
  8.   // Pin 13 has an LED connected on most Arduino boards:
  9.   pinMode(13, OUTPUT);    
  10. }
  11. void loop() {
  12.   digitalWrite(13, HIGH);   // set the LED on
  13.   delay(1000);              // wait for a second
  14.   digitalWrite(13, LOW);    // set the LED off
  15.   delay(1000);              // wait for a second
  16. }
Итак, разберем поетапно наш код. Функция setup(), как я уже упоминал, запускается один раз при старте платы.


pinMode(номер, режим); - стандартная функция языка Wiring. Устанавливает пин (в нашем случае это пин под номером 13) в режим ввода или вывода (в нашем случае это вывод - OUTPUT). Если на пин вывести 1, на нем появится +5В, а если 0 - Нулевой потенциал


digitalWrite(номер, сигнал); - передает на пин сигнал HIGH - 1, или LOW - 0. Пин должен быть в режиме вывода.


delay(миллисекунды); - приостанавливает выполнение программы на определенное количество миллисекунд. В нашем случае - на 1000, то есть на секунду.


Как я уже сказал раньше, функция loop() зацикливается, а значит на пине 13 сеунду времени будет +5В, затем секунду времени 0В и так до бесконечности. К пину 13 на плате через ограничительный резистор подключен светодиод. Собственно, он будет то засвечитваться, то угасать. Вот у нас и получилась простая мигалка. Можно поиграться со значениями delay, тем самым повысив или понизив частоту мигания, время свечения. Таким образом можно управлять и другими пинами платы, только надо помнить, что максимальный ток через пин - 40мА, а значит светодиоды и другие детали надо подключать через ограничительные резисторы, если не хотите спалить микроконтроллер.


Нам осталось скомпилировать скетч и загрузить его на плату. Нажимаем на кнопочку "Verify".


Если компиляция прошла успешно, появится вот такое сообщение:



Подключаем плату к USB, нажимаем на кнопочку "Upload"


и видим как наша Arduino весело мигает светодиодом :-). 

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

  1. Отшельник, какой стартовый набор кроме платы подключаемой по юсб надо купить чтобы начать эксперименты?

    ОтветитьУдалить
  2. ChoosenOne тут главное определиться, для каких целей. Тоесть с чем хочешь экспериментировать. Для роботов, например нужно докупить сервомоторчики, сенсоры и тому подобные вещи. Для умного дома - набор оптронов, релюшек, симмисторов.

    В любом случае купи себе плату для прототипирования с проводами-перемычками как у меня здесь (http://electro-sketch.blogspot.com/2011/02/seeeduino_22.html), наборчик резисторов, светодиодов. В любом случае придется на радиорынок бегать по мере надобности.

    На сайте SEEEDSTUDIO есть уже готовый набор для начинающих, но он дорогой и не очень качественный с кучей ненужных вещей: http://www.seeedstudio.com/depot/seeeduino-catalyst-pack-trimmed-version-p-428.html

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