Ардуино первые шаги

Первая программа Arduino

В самой «Arduino IDE» есть масса примеров программ, работа которых хорошо описана с помощью комментариев. Для начала выберем один из таких примеров.

Из меню «Файл – Примеры – Basics» выберите «Blink»

Это очень простая программа, отвечающая за мигание светодиода, расположенного на плате Arduino, который подключен к выводу 13:

Давайте рассмотрим по порядку всю программу:

// Все что стоит после (//…) или между (/* … */) являются комментариями в коде /* Функция setup () выполняется только один раз, в начале программы. Она чаще всего используется для загрузки различных параметров. */ void setup() { pinMode(13, OUTPUT); // Установить вывод 13 в качестве выхода } //Функция loop () — это цикл, который выполняется все время пока включено питание. void loop() { digitalWrite(13, HIGH); // подать высокий уровень (+5В) на вывод 13 delay(1000); // ждать секунду (1000 мсек = 1 сек) digitalWrite(13, LOW); // подать низкий уровень (0В) на вывод 13 delay(1000); // ждать секунду // После достижения конца цикла loop () все начнется с самого начала }

Для загрузки программы в Arduino достаточно нажать на кнопку со стрелкой.

После загрузки программы, в нижней части окна появится надпись: «Загрузка завершена, после чего светодиод начнет мигать с интервалом в 1 сек.

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

Самая простая схема на Arduino

Нам удалось заставить моргать светодиод, расположенный на плате Arduino. Теперь построим максимально простую аналогичную схему: заставим мигать светодиод, подключенный через резистор (около 220 Ом) к одному из выводов Arduino.

Наша программа «Blink» из примера управляет сигналом на контакте 13, к которому подключен светодиод на плате. Однако ничто не мешает нам подключить к этому выводу (13) и «земле» (GND) любой другой внешний светодиод. Имея макетную плату мы можем быстро собрать такую схему:

Конечно, контакт 13, здесь только как пример. Мы так же можем в программе изменить номер контакта (например, на 6) и к этому контакту подключить дополнительный светодиод.

Чтобы нам не менять номер контакта в нескольких местах (в нашем примере программы он встречается 3 раза), мы можем его присвоить переменной, к которой мы будем ссылаться:

int led = 13; // назначаем переменной led номер контакта 13 void setup() { pinMode(led, OUTPUT); // подставить переменную led вместо номера контакта 13 } void loop() { digitalWrite(led, HIGH); // подставить переменную led вместо номера контакта 13 delay(1000); digitalWrite(led, LOW); // подставить переменную led вместо номера контакта 13 delay(1000); }

В коротких программах это не имеет большого значения, но в более сложных проектах, в которых мы используем десяток входов и выходов и неоднократно на них ссылаемся, использование переменных очень облегчает работу.

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

Подключение потенциометра к Arduino

Потенциометр здесь использован в роли делителя напряжения. То есть, напряжение на его крайних выводах (+5В и «земля») делится на две части, из которых одна часть подается (центральный вывод потенциометра) на вход A0 (аналоговый вход Arduino). Вращая потенциометр, мы меняем величину напряжения, которое подается на аналоговый вход.

Напряжение, поступающее на аналоговый вход, определяется Arduino как число в диапазоне от 0 (0В) до 1023 (для 5В). Таким образом, если мы, например, подадим на аналоговый вход 2,5В, это будет истолкована Arduino как 512. Надеемся, что до этого момента все ясно

Все остальное объясним уже в самой программе:

int led = 13; // это уже для нас понятно int potPin = 0; // назначаем переменной номер аналогового входа int pot; // переменная, в которой мы будем сохранять значение потенциометра int bk; // переменная, в которой мы будем сохранять значение скорости мигания светодиода void setup() { pinMode(led, OUTPUT); } void loop() { pot = analogRead(potPin); // считываем A0 и сохраняем в переменной pot /* Использованная ниже функция map() служит для преобразования одного диапазона чисел в другой. В нашем случае, перерасчет числа из диапазона от 0 до 1023 (значение, полученное с A0) на диапазон чисел от 50 до 3000 (интервал между включением и выключением светодиода). Пересчитанный диапазон чисел будет сохранен в переменной «bk». */ bk = map(pot, 0, 1023, 50, 3000); digitalWrite(led, HIGH); delay(bk); // пауза зависит от положения потенциометра digitalWrite(led, LOW); delay(bk); // пауза зависит от положения потенциометра }

Код начинает потихоньку усложнять, но мы надеемся, что все понятно. Введя в схему небольшую модификацию, мы можем добиться изменения частоты мигания светодиода, например, от интенсивности света в комнате Для этого вместо потенциометра необходимо использовать делитель напряжения, сделанный из фоторезистора и резистора.

Фоторезистор, проще говоря, это резистор, сопротивление которого изменяется в зависимости от интенсивности падающего на него света.

Как видно на рисунке выше, фоторезистор подключен между +5В и контактом A0, а затем A0 через резистор на массу. Это точно такое же подключение, как и в случае с потенциометром. Здесь просто вместо двух крайних выводов потенциометра у нас ножка от фоторезистора и резистор, а вместо среднего вывода потенциометра, мы соединили друг с другом оставшиеся свободные выводы фоторезистора и резистора.

Программу в принципе менять не нужно, потому что наша схема практически не изменился. После монтажа достаточно подать питание и можно наслаждаться светодиодом, скорость мигания которого зависит от степени освещенности фоторезистора.

На этом закончим данную статью, в который мы попытались ввести вас в основы программирования Arduino. В последующих статьях мы будем уже рассматривать конкретные проекты.

Это первое обучающее видео из цикла уроков по arduino для начинающих. В этом уроке мы узнаем: как подключить ардуино к компьютеру, как загрузить прошивку на микроконтроллер. А так же мы напишем свою первую прошивку для Arduino.

В этом уроке нам понадобится:

Arduino uno отлично подходит для начинающих. В комплекте есть провод: Купить
Макетная плата с модулем питания и проводами: Купить
Набор светодиодов из 100 штук разных цветов: Купить
Набор резисторов из 100 штук разных номиналов Купить

Как видите, список не маленький. И это только для первого урока. Если вы хотите купить все сразу не только для этого урока, но и для последующих то мы советуем вам купить полный стартовый набор arduino.

Ардуино для новичков.

Если у вас уже есть плата ардуино, то вам необходимо скачать и установить на свой компьютер Arduino IDE. Это простая и удобная программа для написания и отладки прошивок для ардуино. Я уже публиковал статью по установке и настройке Arduino IDE. Там все подробно расписано.

Если при подключении вашей ардуино в USB компьютер пишет, что устройство не опознано, это значит что вам надо установить драйвер ch340g.

Далее приведен код из видео. Давайте рассмотрим его подробнее. Эти и другие конструкции и функции языка программирования ардуино вы можете найти в справочнике языка у меня на сайте. В скором времени я постараюсь добавить и описание библиотек.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // Однострочный комментарий /* Многострочный комментарий */ int ledPin = 13; // Команды в функции setup выполняются только 1 раз при включении или после перезагрузки void setup() { pinMode(ledPin, OUTPUT); } // Инструкции в этой функции будут выполняться по кругу постоянно void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }

Символы «//» означают однострочный комментарий. Это значит что строка после двух слэшей выполняться не будет. Комментарии можно использовать для описания действий программы для наглядности.
Или для скрытия части кода при отладке. Для скрытия кода чаще используется многострочный комментарий начинающийся с комбинации «/*» и заканчивающийся «*/».

Строка «int ledPin = 13;» означает, что мы объявляем переменную с типом данных int, именем ledPin и значением 13. Переменные используются для того чтобы код был более понятен. Поэтому надо называть переменные понятными именами, описывающими их содержимое. Так же переменные нужны для легкого изменения кода. В нашем маленьком примере переменная ledPin используется 3 раза. Если мы подключим внешний светодиод на другой пин и захотим использовать этот скетч, то нам надо будет только поменять значение переменной в одном месте, а не искать по всей программе и менять значения. Понятный и хорошо оформленный код, с комментариями и говорящими названиями переменных легко можно использовать в других проектах. Это позволит упростить и ускорить разработку прошивок.