Теперь немного о среде программирования Arduino IDE. Эту программу можно скачать на сайте https://www.arduino.cc/en/software/. Обратите внимание, что последний релиз 2.3.6 предназначен для WIN10 и старше. У меня стоит WIN7, поэтому я пользуюсь старой 1.8.7. Думаю, что новый релиз не сильно отличается от моего :)). Но на этом сайте версии, конечно, англоязычные. Русскоязычные версии можно скачать здесь.
Интерфейс интуитивно понятный и не перегруженный, есть контекстные подсказки. Пройдемся по меню.
Самым интересным во вкладке "Файл" является пункт "Примеры".
Там находится множество примеров готовых скетчей, которые вы можете загрузить в окно программы, а оттуда - в микропроцессор. Причем вы можете изменить текст скетча, экспериментируя с ним. Не забывайте только сохранять изменения под новым именем.
Очень полезно, что скачивая разные библиотеки (это типа подпрограмм, к которым обращается ваша основная программа), вы увидите примеры применения этой библиотеки и сможете с этими примерами поэкспериментировать.
В "Правке" все как обычно, а вот вкладка "Скетч" будет использоваться часто, но там ничего сложного.
Очень важна и папка "Инструменты."
Здесь нужно выбрать из списка тип вашей платы.
А затем тип процессора, иногда он один единственный и выбирать не надо, в этом случае и пункта такого нет.
Сложнее всего с портом. через который компьютер будет общаться с вашей платой.
Пока не подключена ваша плата, там обычно обозначен COM1. Но как только вы подключите плату, там появится и еще один порт, номер которого зависит от USB разъема вашего компьютера и не только.
Но тут ошибиться трудно: новый порт или появится .... или не появится. Во втором случае нужно будет икать "кто виноват и что делать" :)). Но с Уно и Нано у меня проблем с портом не было.
Есть еще один интересный пункт - "Программатор". Он выбирается автоматически, и, если вы правильно выбрали тип платы и процессора на ней, никаких проблем не возникает.
Но дядюшка Ху большой кудесник, и с его разнообразными клонами Ардуино может понадобиться копаться в списке загрузчиков, выбирая правильный. Конечно, опытные товарищи могут перепрограммировать загрузчик, присутствующий на плате, но моих знаний на это, увы, не хватает.
Ну, что ж, если у вас есть плата Уно или Нано, то можно ее подключить и попробовать залить в нее простейшую программу, взятую из пункта "Примеры", а именно Blink. Эта программа заставляет мигать пользовательский светодиод L, имеющийся на плате. Итак, Файл, Примеры, Basics, Blink.
Эта программа откроется в новом окне.
В начале - большой текст комментария, выделенный знаками /* и */, я выделил этот текст. Никакого влияния на работу программы он не оказывает и его можно просто удалить.
Вот что останется:
Вот то же самое с переводом:
Меня несколько напряло по началу, что в комментариях setup () и loop () называют функциями, а на сайте https://all-arduino.ru/, по которому я и учился, это операторы.
Но и здесь нет ясности: "Для всех функций есть небольшие примеры .....", но примеры есть и для операторов, и для констант, и для всего другого. Поэтому я просто стал воспринимать все в соответствии с приведенным на этой странице. Поэтому прошу меня извинить, если что-то не так :)).
Вернемся к тексту программы. Кое-что добавлю к комментариям. Оператор setup () может содержать внутри фигурных скобок { } объявление переменных и констант, их начальные значения, названия подключаемых библиотек и т.д., т.е. данные, которые будут использоваться при исполнении программы. В данной маленькой программе setup () содержит инициацию цифрового вывода, связанного с светодиодом L, как цифрового выхода, на котором могут появляться или высокий, или низкий логические уровни. Причем использование константы LED_BUILTIN позволяет не заморачиваться, отыскивая к какому выводу на плате подключен светодиод. это происходит автоматически.
В теле оператора loop(), также ограниченного фигурными скобками, содержится собственно текст программы, который будет выполняться бесконечно, пока не отключится питание платы или не будет нажата кнопка RESET.
digitalWrite() — это функция из стандартной библиотеки Arduino, которая используется для записи логического уровня (низкого (LOW) или высокого (HIGT)) на указанный цифровой вывод платы. Первый аргумент этой функции - это номер цифрового вывода, на котором устанавливается логический уровень. В нашем случае можно написать digitalWrite(13, HIGH);, так как в Уно и Нано светодиод подключен к выводу D13. У нас же вместо номера - универсальная константа LED_BUILTIN, которая автоматически принимает значение, в зависимости от типа платы.
Итак, светодиод сначала загорается, т.к. на него подается +5 В и продолжает гореть 1 с. Затем он гаснет, так как на него подается 0 В. и не светится 1 с. Затем все повторяется.
Теперь нужно проверить и скомпилировать эту программу. Заходим в вкладку Скетч и выбираем пункт Проверить/Компилировать.
Если все нормально, то на черном фоне появляется информация о количестве используемой памяти. Теперь нужно загрузить программу в процессор: заходим в вкладку Скетч и выбираем пункт Загрузка.
Если загрузка прошла корректно, то на зеленой полоске появляется "Загрузка завершена", а черном фоне появляется оранжевый текст.
И светодиод на плате послушно мигает. Попробуем немного изменить программу: пусть светодиод горит 4 с, а гаснет на 1 с. Для этого нужно поменять только одну цифру:
Компилируем и загружаем. Все работает.
А теперь попробуем модифицировать программу так, чтобы светодиод два раза загорался на 4 с и гас на 1 с, а потом три раза загорался на 3 с, а гас на 2 с. Копируем и вставляем строки, изменяя, где нужно цифры.
Текст конечно длинноват, но все понятно и работает. Конечно, можно использовать циклы for, почти как в Бейсике.
Работает эта программа также, как и предыдущая. И какая разница? А разница есть: вариант без циклов занимает 1076 байт, а с циклом - 986 байт. Скажете: разница маленькая, стоит ли овчинка выделки? Так и программа маленькая, а при бОльшем количестве циклов и выигрыш будет будет больше.
Пора выпить чашечку кофе :)).
Всем здоровья и успехов!