Здрайвствуйте, читатели. В предыдущей статье я рассказал как подключить Arduino/Seeeduino к компьютеру, настроить драйвера и софт. Сегодня я научу вас, как создать простенькую прошивку и заставить эту плату выполнять определенные действия.
Для написания прошивок в Arduino IDE используется используется язык Wiring - надстройка над C++ в виде готовых функций, классов и набора библиотек. Подробное описания языка Wiring можно найти на оффициальном сайте. Микроконтроллер на плате уже прошит так называемым Bootloader'ом. Он принимает с компьютера наш скетч (прошивку) и записывает его в память микроконтроллера. Это сильно упрощает процесс прошивки, больше не нужны никакие программаторы и сопотствующие сложности. Прошивать таким образом можно сколько угодно раз до полного износа флеш-памяти микроконтроллера.
Скетч для Arduino состоит из двух функций - setup() и loop(). Первая из них вызывается один раз во время запуска или перезагрузки платы, вторая вызывается сразу после первой и зацикливается до бесконечности, пока не перезагрузим плату. В функции setup() нужно указывать действия, которые микроконтроллер должен выполнить одиножды: определение переменных, назначение пинов платы на ввод/вывод, а в функции loop() - основную часть нашей программы.
Рассмотрим как это работает на примере скетча Blink из стандартных примеров Arduino IDE. Для этого выберите пункт меню File - Examples - Basics - Blink:
В итоге увидим вот такой скетч:
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 весело мигает светодиодом :-).
Для написания прошивок в Arduino IDE используется используется язык Wiring - надстройка над C++ в виде готовых функций, классов и набора библиотек. Подробное описания языка Wiring можно найти на оффициальном сайте. Микроконтроллер на плате уже прошит так называемым Bootloader'ом. Он принимает с компьютера наш скетч (прошивку) и записывает его в память микроконтроллера. Это сильно упрощает процесс прошивки, больше не нужны никакие программаторы и сопотствующие сложности. Прошивать таким образом можно сколько угодно раз до полного износа флеш-памяти микроконтроллера.
Скетч для Arduino состоит из двух функций - setup() и loop(). Первая из них вызывается один раз во время запуска или перезагрузки платы, вторая вызывается сразу после первой и зацикливается до бесконечности, пока не перезагрузим плату. В функции setup() нужно указывать действия, которые микроконтроллер должен выполнить одиножды: определение переменных, назначение пинов платы на ввод/вывод, а в функции loop() - основную часть нашей программы.
Рассмотрим как это работает на примере скетча Blink из стандартных примеров Arduino IDE. Для этого выберите пункт меню File - Examples - Basics - Blink:
В итоге увидим вот такой скетч:
Итак, разберем поетапно наш код. Функция setup(), как я уже упоминал, запускается один раз при старте платы.
/*
Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second }
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 весело мигает светодиодом :-).
Клевая штука, надо юзать
ОтветитьУдалитього да ты спец!
ОтветитьУдалитьОтшельник, какой стартовый набор кроме платы подключаемой по юсб надо купить чтобы начать эксперименты?
ОтветитьУдалить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