Найти в Дзене
Старый радио любитель

Удобства не помешают. Как я осваивал Ардуино. Часть 4.

Теперь немного о среде программирования Arduino IDE. Эту программу можно скачать на сайте https://www.arduino.cc/en/software/. Обратите внимание, что последний релиз 2.3.6 предназначен для WIN10 и старше. У меня стоит WIN7, поэтому я пользуюсь старой 1.8.7. Думаю, что новый релиз не сильно отличается от моего :)). Но на этом сайте версии, конечно, англоязычные. Русскоязычные версии можно скачать здесь. Интерфейс интуитивно понятный и не перегруженный, есть контекстные подсказки. Пройдемся по меню. Самым интересным во вкладке "Файл" является пункт "Примеры". Там находится множество примеров готовых скетчей, которые вы можете загрузить в окно программы, а оттуда - в микропроцессор. Причем вы можете изменить текст скетча, экспериментируя с ним. Не забывайте только сохранять изменения под новым именем. Очень полезно, что скачивая разные библиотеки (это типа подпрограмм, к которым обращается ваша основная программа), вы увидите примеры применения этой библиотеки и сможете с этими примерами

Теперь немного о среде программирования Arduino IDE. Эту программу можно скачать на сайте https://www.arduino.cc/en/software/. Обратите внимание, что последний релиз 2.3.6 предназначен для WIN10 и старше. У меня стоит WIN7, поэтому я пользуюсь старой 1.8.7. Думаю, что новый релиз не сильно отличается от моего :)). Но на этом сайте версии, конечно, англоязычные. Русскоязычные версии можно скачать здесь.

Рис. 1.
Рис. 1.

Интерфейс интуитивно понятный и не перегруженный, есть контекстные подсказки. Пройдемся по меню.

Самым интересным во вкладке "Файл" является пункт "Примеры".

Рис. 2.
Рис. 2.

Там находится множество примеров готовых скетчей, которые вы можете загрузить в окно программы, а оттуда - в микропроцессор. Причем вы можете изменить текст скетча, экспериментируя с ним. Не забывайте только сохранять изменения под новым именем.

Очень полезно, что скачивая разные библиотеки (это типа подпрограмм, к которым обращается ваша основная программа), вы увидите примеры применения этой библиотеки и сможете с этими примерами поэкспериментировать.

Рис. 3.
Рис. 3.

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

Рис. 4.
Рис. 4.

Очень важна и папка "Инструменты."

Рис. 5.
Рис. 5.

Здесь нужно выбрать из списка тип вашей платы.

Рис. 6.
Рис. 6.

А затем тип процессора, иногда он один единственный и выбирать не надо, в этом случае и пункта такого нет.

Сложнее всего с портом. через который компьютер будет общаться с вашей платой.

Пока не подключена ваша плата, там обычно обозначен COM1. Но как только вы подключите плату, там появится и еще один порт, номер которого зависит от USB разъема вашего компьютера и не только.

Рис. 7.
Рис. 7.

Но тут ошибиться трудно: новый порт или появится .... или не появится. Во втором случае нужно будет икать "кто виноват и что делать" :)). Но с Уно и Нано у меня проблем с портом не было.

Есть еще один интересный пункт - "Программатор". Он выбирается автоматически, и, если вы правильно выбрали тип платы и процессора на ней, никаких проблем не возникает.

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

Ну, что ж, если у вас есть плата Уно или Нано, то можно ее подключить и попробовать залить в нее простейшую программу, взятую из пункта "Примеры", а именно Blink. Эта программа заставляет мигать пользовательский светодиод L, имеющийся на плате. Итак, Файл, Примеры, Basics, Blink.

Эта программа откроется в новом окне.

Рис. 8.
Рис. 8.

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

Рис. 9.
Рис. 9.

Вот что останется:

Рис. 10.
Рис. 10.

Вот то же самое с переводом:

Рис. 11.
Рис. 11.

Меня несколько напряло по началу, что в комментариях setup () и loop () называют функциями, а на сайте https://all-arduino.ru/, по которому я и учился, это операторы.

Рис. 12. С сайта https://all-arduino.ru/programmirovanie-arduino/?ysclid=mckgzbdho2453695005
Рис. 12. С сайта https://all-arduino.ru/programmirovanie-arduino/?ysclid=mckgzbdho2453695005

Но и здесь нет ясности: "Для всех функций есть небольшие примеры .....", но примеры есть и для операторов, и для констант, и для всего другого. Поэтому я просто стал воспринимать все в соответствии с приведенным на этой странице. Поэтому прошу меня извинить, если что-то не так :)).

Вернемся к тексту программы. Кое-что добавлю к комментариям. Оператор setup () может содержать внутри фигурных скобок { } объявление переменных и констант, их начальные значения, названия подключаемых библиотек и т.д., т.е. данные, которые будут использоваться при исполнении программы. В данной маленькой программе setup () содержит инициацию цифрового вывода, связанного с светодиодом L, как цифрового выхода, на котором могут появляться или высокий, или низкий логические уровни. Причем использование константы LED_BUILTIN позволяет не заморачиваться, отыскивая к какому выводу на плате подключен светодиод. это происходит автоматически.

В теле оператора loop(), также ограниченного фигурными скобками, содержится собственно текст программы, который будет выполняться бесконечно, пока не отключится питание платы или не будет нажата кнопка RESET.

digitalWrite() — это функция из стандартной библиотеки Arduino, которая используется для записи логического уровня (низкого (LOW) или высокого (HIGT)) на указанный цифровой вывод платы. Первый аргумент этой функции - это номер цифрового вывода, на котором устанавливается логический уровень. В нашем случае можно написать digitalWrite(13, HIGH);, так как в Уно и Нано светодиод подключен к выводу D13. У нас же вместо номера - универсальная константа LED_BUILTIN, которая автоматически принимает значение, в зависимости от типа платы.

Итак, светодиод сначала загорается, т.к. на него подается +5 В и продолжает гореть 1 с. Затем он гаснет, так как на него подается 0 В. и не светится 1 с. Затем все повторяется.

Теперь нужно проверить и скомпилировать эту программу. Заходим в вкладку Скетч и выбираем пункт Проверить/Компилировать.

Рис. 13
Рис. 13

Если все нормально, то на черном фоне появляется информация о количестве используемой памяти. Теперь нужно загрузить программу в процессор: заходим в вкладку Скетч и выбираем пункт Загрузка.

Если загрузка прошла корректно, то на зеленой полоске появляется "Загрузка завершена", а черном фоне появляется оранжевый текст.

Рис. 14.
Рис. 14.

И светодиод на плате послушно мигает. Попробуем немного изменить программу: пусть светодиод горит 4 с, а гаснет на 1 с. Для этого нужно поменять только одну цифру:

Рис. 15
Рис. 15

Компилируем и загружаем. Все работает.

А теперь попробуем модифицировать программу так, чтобы светодиод два раза загорался на 4 с и гас на 1 с, а потом три раза загорался на 3 с, а гас на 2 с. Копируем и вставляем строки, изменяя, где нужно цифры.

Рис. 16.
Рис. 16.

Текст конечно длинноват, но все понятно и работает. Конечно, можно использовать циклы for, почти как в Бейсике.

Рис. 17.
Рис. 17.

Работает эта программа также, как и предыдущая. И какая разница? А разница есть: вариант без циклов занимает 1076 байт, а с циклом - 986 байт. Скажете: разница маленькая, стоит ли овчинка выделки? Так и программа маленькая, а при бОльшем количестве циклов и выигрыш будет будет больше.

Пора выпить чашечку кофе :)).

Всем здоровья и успехов!