Как составить скетч ардуино

Синтаксис и структура кода

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

Синтаксис


  • Тела функций заключаются в фигурные скобки { }. Код внутри фигурных скобок иногда называют блоком кода.
  • Каждая команда заканчивается точкой с запятой ;
  • Метод применяется к объекту через точку. Пример: Serial.begin();
  • Вызов функции или метода всегда заканчивается скобками, даже если функция не принимает параметров. Пример: loop()
  • Разделитель десятичных дробей – точка. Пример: 0.25 У запятой тут другое применение.
  • Запятыми перечисляются аргументы функций и методов, члены массива, также через запятую можно выполнить несколько действий в одну строчку. Пример: digitalWrite(3, HIGH); массив – int myArray[] = {3, 4, 5 ,6};
  • Одиночный символ заключается в одиночные кавычки 'а'
  • Строка и массив символов заключается в двойные кавычки "строка"
  • Имена переменных могут содержать латинские буквы в верхнем и нижнем регистре (большие и маленькие), цифры и подчеркивание. Пример: myVal_35 .
  • Имена переменных не могут начинаться с цифры. Только с буквы или подчёркивания.
  • Регистр имеет значение, т.е. большая буква отличается от маленькой. Пример: имена val и Val – не одно и то же.

К синтаксису также можно отнести комментарии, т.к. в разных языках они выделяются по-разному. Комментарий это обычный текст, который игнорируется на этапе компиляции и не попадает в итоговую программу для МК. Комментарии нужны для пояснения кода, как себе самому, так и другим возможным его читателям. В C++ у нас два типа комментариев:

  • Однострочный комментарий
    // однострочный комментарий
    // компилятор меня игнорирует =(
  • Многострочный комментарий
    /* Многострочный
    комментарий */

Оформление


Есть такое понятие, как форматирование (выравнивание) кода, то есть соблюдение пробелов и интервалов. Чисто для примера, сравните эти два куска кода. Какой смотрится более понятно?
Не бойтесь, во всех серьезных средах разработки есть автоформатирование кода, оно работает как в процессе написания, так и “по кнопке”. Arduino IDE – не исключение, в ней код форматируется комбинацией клавиш Ctrl+T:

  • Между математическими действиями, знаками сравнения, присваивания и всем подобным ставится пробел.
  • Как и в обычном тексте, пробел ставится после и не ставится перед запятой, двоеточием, точкой с запятой.
  • Отступ от левого края экрана – знак табуляции, код сдвигается вправо и на одном расстоянии формируются команды из одного блока кода. В Arduino IDE одна табуляция равна двум пробелам. Можно использовать клавишу Tab.
  • Каждое действие выполняется с новой строки (автоформатирование это не исправляет).
  • Имена функций и переменных принято называть с маленькой буквы. Пример: value
  • Если имя состоит из двух и более слов, то их принято разделять. Есть два способа:
    • camelCase (верблюжий стиль): первая буква маленькая, каждая первая буква следующего слова – большая.
    • under_score (подчёркивание): все буквы маленькие, разделитель – подчёркивание.
  • Имена типов данных и классов принято писать с большой буквы. Пример: Signal, Servo
  • Имена констант принято писать в верхнем регистре, разделение – подчеркивание. Пример: MOTOR_SPEED
  • При написании библиотек и классов, имена внутренних (приватных) переменных принято писать, начиная со знака подчёркивания. Пример: _position
  • Несколько общепринятых сокращений для названий переменных, вы часто будете встречать их в чужих прошивках и библиотеках:
    • button – btn, кнопка
    • index – idx – i, индекс
    • buffer – buf, буфер
    • value – val, значение
    • variable – var, переменная
    • pointer – ptr, указатель
  • Имена функций и методов принято начинать с глагола, кратко описывающего действие функции. Вот те из них, которые вы будете встречать постоянно:
    • get – получить значение (getValue)
    • set – установить значение (setTime)
    • print, show – показать что-то
    • read – прочитать
    • write – записать
    • change – изменить
    • clear – очистить
    • begin, start – начать
    • end, stop – закончить, остановить

Частый вопрос: влияет ли длина названия переменной на занимаемую прошивкой память? На вес файла с программой на компьютере – влияет. На вес загруженной в микроконтроллер прошивки – не влияет, потому что код преобразуется в машинный, в котором нет имён.

Структура кода


Прежде чем переходить к структуре и порядку частей кода, нужно кое-что запомнить:

  • Переменная любого типа должна вызываться только после своего объявления. Иначе будет ошибка
  • Объявление и использование классов или типов данных из библиотеки/файла должно быть после подключения библиотеки/файла
  • Функция может вызываться как до, так и после объявления, потому что C++ компилируемый язык, компиляция проходит в несколько этапов, и функции “выделяются” отдельно, поэтому могут вызываться в любом месте программы

При запуске Arduino IDE даёт нам заготовку в виде двух обязательных функций: setup() и loop()

Код в блоке setup() выполняется один раз при каждом запуске МК. Код в блоке loop() выполняется “по кругу” на всём протяжении работы программы, начиная с момента завершения выполнения setup(). Для любознательных: если вы уже знакомы с языком C++, то вероятно спросите “а где же int main() и вообще файл main.cpp?”. Всё очень просто: int main() за вас уже написали внутри файла main.cpp, который лежит глубоко в файлах “ядра”, а setup() и loop() встроены в него следующим образом:

// main.cpp
// где-то в глубинах ядра Arduino
int main() {
  setup();    
    for (;;) {
      loop();
    }        
  return 0;
}

На протяжении нескольких лет работы с Arduino я сформировал для себя следующую структуру скетча:

  1. Описание прошивки, ссылки, заметки
  2. Константы-настройки (define и обычные)
  3. Служебные константы (которые следует менять только с полным осознанием дела)
  4. Подключаемые библиотеки и внешние файлы, объявление соответствующих им типов данных и классов
  5. Глобальные переменные
  6. setup()
  7. loop()
  8. Свои функции

Пример кода

/*
  Данный скетч плавно крутит
  сервопривод туда-обратно
  между мин. и макс. углами
  by AlexGyver
*/

// -------- НАСТРОЙКИ ---------
#define SERVO_PIN 13    // сюда подключена серво
#define SERVO_SPEED 3   // скорость серво
#define MIN_ANGLE 50    // мин. угол
#define MAX_ANGLE 120   // макс. угол

// ------- БИБЛИОТЕКИ -------
#include <Servo.h>
Servo myservo;

// ------- ПЕРЕМЕННЫЕ -------
uint32_t servoTimer;
boolean servoDirection;
int servoAngle;

// --------- SETUP ----------
void setup() {
  myservo.attach(SERVO_PIN);
}

// ---------- LOOP ----------
void loop() {
  turnServo();
}

// --------- ФУНКЦИИ --------
void turnServo() {
  if (millis() - servoTimer >= 50) {  // каждые 50 мс
    servoTimer = millis();
    if (servoDirection) {
      servoAngle += SERVO_SPEED;
      if (servoAngle >= MAX_ANGLE) {
        servoAngle = MAX_ANGLE;
        servoDirection = false;
      }
    } else {
      servoAngle -= SERVO_SPEED;
      if (servoAngle <= MIN_ANGLE) {
        servoAngle = MIN_ANGLE;
        servoDirection = true;
      }
    }
    myservo.write(servoAngle);
  }
}

Это удобная структура для “скетча”, крупные проекты так писать не рекомендуется и следует приучать себя к более взрослым подходам, описанным в уроке по разработке крупных проектов.

Подключение библиотек и файлов


В реальной работе вы очень часто будете использовать библиотеки или просто внешние файлы, они подключаются в главный файл (файлу прошивки) при помощи директивы #include. Данная команда сообщает компилятору, что нужно найти и добавить в программу указанный файл. Этот файл может содержать свои #include и тянуть за собой и другие файлы, таким образом программа может быть разбита на множество независимых файлов. Рассмотрим пример:

#include <Servo.h> // подключает библиотеку Servo.h

#include “Servo.h” // тоже подключает библиотеку Servo.h

В чём отличие <> и ""? Когда указываем название "в кавычках", компилятор сначала ищет файл в папке со скетчем, а затем в папке с библиотеками. При использовании <галочек> компилятор ищет файл только в папке с библиотеками! К слову о папках с библиотеками: их две, в обеих будет производиться поиск библиотек.

  • Пользовательская папка: Документы/Arduino/libraries. Сюда библиотеки попадают при добавлении их через “подключить .zip библиотеку” и при установке из менеджера библиотек.
  • Папка с программой: C:/Program Files (x86)/Arduino/libraries (или C:/Program Files/Arduino/libraries для 32-разрядной Windows). Здесь хранятся встроенные стандартные библиотеки.

Не используйте мышку!


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

  • Ctrl+← , Ctrl+→ – переместить курсор влево/вправо НА ОДНО СЛОВО
  • Home , End – переместить курсор в начало/конец строки
  • Shift+← , Shift+→ – выделить символ слева/справа от курсора
  • Shift+Ctrl+← , Shift+Ctrl+→ – выделить слово слева/справа от курсора
  • Shift+Home , Shift+End – выделить все символы от текущего положения курсора до начала/конца строки
  • Ctrl+Z – отменить последнее действие
  • Ctrl+Y – повторить отменённое действие
  • Ctrl+C – копировать выделенный текст
  • Ctrl+X – вырезать выделенный текст
  • Ctrl+V – вставить текст из буфера обмена

Местные сочетания:

  • Ctrl+U – загрузить прошивку в Arduino
  • Ctrl+R – скомпилировать (проверить)
  • Ctrl+Shift+M – открыть монитор порта
  • Ctrl+T – автоформатирование

Для отодвигания комментариев в правую часть кода используйте TAB, а не ПРОБЕЛ. Нажатие TAB перемещает курсор по некоторой таблице, из-за чего ваши комментарии будут установлены на одинаковом расстоянии.

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

Время на прочтение
3 мин

Количество просмотров 107K

Предисловие

Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.

Введение

Было бы не плохо начать со знакомства с Arduino. Arduino – аппаратно-программные средства для построения систем автоматики и робототехники. Главным достоинством есть то, что платформа ориентирована на непрофессиональных пользователей. То есть любой может создать своего робота вне зависимости от знаний программирования и собственных навыков.

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:

main(){
    void setup(){
    }
    void loop(){
    }
}

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:

void setup(){
}
void loop(){
}

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

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

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

int Led = 13; // объявляем переменную Led на 13 пин (выход)
void setup(){
    pinMode(Led, OUTPUT); // определяем переменную
}
void loop(){
    digitalWrite(Led, HIGH); // подаём напряжение на 13 пин
    delay(1000); // ожидаем 1 секунду
    digitalWrite(Led, LOW); // не подаём напряжение на 13 пин
    delay(1000); // ожидаем 1 секунду
}

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Прошивка Arduino

Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Прототипирование/макетирование

Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.

На этом у нас конец первой части. Спасибо за внимание.

На чтение 8 мин Просмотров 2.1к. Опубликовано 14.01.2023

Содержание

  1. Понятие Ардуино для начинающих
  2. Начало обучения
  3. Стартовый набор Ардуино
  4. Отличаем подделку Ардуино от оригинала
  5. Написание скетча
  6. Заключение

Понятие Ардуино для начинающих

Ардуино представляет из себя плату, в которую вводится скетч с помощью программы и компьютера. Ардуино является как бы головой собранного устройства и отвечает за многие процессы, в том числе это приём информации и передачи этой информации пользователю. Разберём пример для начинающих. Если мы возьмём ультразвуковой датчик, то он будет излучать ультразвук, который поможет прибору определить расстояние до какого-либо предмета. Информация будет передаваться на плату Ардуино, тем временем сама плата выведет нужное значение на дисплей. Её можно скачать с официального сайта: www.arduino.cc

1

Ардуино удобна для новичков по нескольким причинам, в том числе это простота использования. Для использования платы Ардуино не требуются дополнительные закупки аппаратуры к ней, сам скетч-код очень простой и пишется на упрощенном программном языке C++. Плата позволяет каждый раз усовершенствовать ваше устройство, можно добавлять как функционал, так и новые элементы, соответственно получать больше информации используя устройство. Работа с Ардуино начинается с написания первого скетча. 

Начало обучения

Обучение работе с Ардуино следует начать с основных команд. Самое основное в системе Ардуино – это программирование платы. И соответственно, нужно научиться писать команды, чтобы далее уже загружать целый скетч на плату. Можно посмотреть множество видео, много статей из открытых источников и ознакомится с полезной информацией об этом процессе. В Интернете есть много информации по этому поводу. Начать обучение и знакомство с такой программой можно использовав различные симуляторы и системы, позволяющие использовать плату, не покупая её. 

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

Основные команды для работы с программным кодом
Название Описание команды
Функция setup выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена.
Функция loop выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова.

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

Стартовый набор Ардуино

Допустим я новичок, что мне купить для самостоятельного изучения системы Ардуино? Такой вопрос актуален и очень интересен. Давай те же рассмотри, что купить новичку для ознакомления с этой темой. Составим список, который желательно купить себе для изучения:

  • Плата Ардуино – как вы все поняли, платы от этой компании бывают разные, но чаще всего берут UNO или Nano. Плата Arduino Nano по своим размер маленькая, а соответственно не требует много место и дешевле, для базового ознакомления как раз таки она подойдёт. UNO как раз таки стандартная плата, которая имеет много разъёмов и она универсальна. Для вашего удобства, Ардуино создали макетную плату. Она полностью универсально и в ней не нужно ничего паять. Все элементы провода просто вставляются в отверстия. Для начинающих пользователей данной системы подойдёт отлично. В такую макетную плату вставляется и сама плата Arduino.2 1
  • Различные модули и датчики – конечно же без них сложно представить Ардуино, ведь для этих приборов она и предназначена. Существует огромный выбор датчиков и модулей. Всё зависит от ваших потребностей и бюджета. Из полезных, можно выделить датчик измеряющий давление, температуру и влажность, датчик измеряющий дальность до предмета и другое множество полезных модулей.3 2
  • Компоненты – сюда относят резисторы, конденсаторы, диоды, кнопки, светодиоды, транзисторы, фотодиоды и остальные мелкие составляющие приборов. 4 2

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

Отличаем подделку Ардуино от оригинала

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

Иногда, продавцы специально продают поддельные платы вместо оригинальных, а как отличить? Существует специальный список, где содержатся официальный магазины, которые перепродают платы Ардуино, стоит для начала найти плату в нём. Если же данного магазина в списке нет, то следует насторожиться и лучше не покупать у этого продавца. Следует обратить внимание и на цену устройства. Оригинальные платы Ардуино поставляются в коробочках, вместе с инструкцией и наклейками.5 1

Поддельные, в частности случаев поставляются просто в запечатанных пакетиках. Если посмотреть на колодки, куда припаиваются провода, то у них дублируются надписи на корпусе колодок сбоку. Шрифт у оригинальной платы чётки и без размытий, в отличии от подделок. Можно заметить и по самому качеству платы и по надписям, что это сделано руками поддельщиков, так как их оборудование не такое точно как у оригинального производителя Ардуино. 

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

Написание скетча

Для начинающих стоит начать с основных программ в языке Arduino. Здесь рассмотрим написание скетча Ардуино с нуля. Простой скетч написать не так уж сложно. Важно понять данную тему и разобраться с основными функциями и командами в данном языке. Основные функции в изучении системы программирования Ардуино:

  • pinMode(PIN, type) – задаём нужный пин подключения проводами к модулю, компоненту или датчику.
  • digitalWrite(PIN, state) – с помощью этой командой устанавливаем состояние на каком-либо пине, может быть значение либо один либо ноль.
  • digitalRead(PIN) – возвращение в прежние состояние входа, может быть значение либо один либо ноль.
  • delay(ms) – остановка процесса, на определенное время, к примеру со светодиодом, мигание, то есть светодиод горит, а вводя эту функцию, он на несколько миллисекунд приостановит свою работу, тем самым осуществит мигание.
  • analogWrite(PIN, state) – установка нужного напряжение на выходе пина, выставляется до значения 255, а минимальное значение – ноль.
  • analogRead(PIN) – возвращает прежнее значение напряжение на пине, значение составляет от нуля до 1023.

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

// переменные с пинами подключенных устройств

 int switchPin = 8;

 int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода 

boolean lastButton = LOW;

boolean currentButton = LOW;

boolean ledOn = false;

  void setup()

{ pinMode(switchPin, INPUT);

pinMode(ledPin, OUTPUT);

}

// функция для подавления дребезга

 boolean debounse(boolean last) {

 boolean current = digitalRead(switchPin);

if(last != current) {

delay(5);

current = digitalRead(switchPin);

}

return current;

}

 void loop() {

 currentButton = debounse(lastButton);

if(lastButton == LOW && currentButton == HIGH) {

ledOn = !ledOn;

}

lastButton = currentButton;

digitalWrite(ledPin, ledOn);

}

Не менее интересная тема это ШИМ , есть специальные входы на плате, которые позволяют использовать ШИМ. Он позволяет изменять напряжение на выходе, то есть в случае со светодиодом, он будет управлять его яркостью, подавая меньшее количество напряжения. 

Заключение

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

Урок № 1
Это продолжение цикла уроков про Ардуино для начинающих.

Предыдущие уроки можно посмотреть здесь.
Урок № 0 — «Введение в программирование Ардуино»
Урок № 0.5  — «Продолжение вводного урока.»Первое подключение Ардуино к компьютеру.»

В этом уроке, видео на который можно посмотреть на канале YOUTUBE
рассказано как подключить светодиод, рассчитать значение токоограничивающего резистора, про закон Ома, и многое другое.
Что такое функция void setup() и void loop(), вообщем посмотрите, не пожалеете.

Для этого урока, для основной его части потребуются.

Ардуино Нано v 3.0
Макетная плата (беспаечная) Breadboard
Провода 5 шт.
Резисторы 220 Ом 3 шт.
Светодиоды 3 шт. 

Плату Ардуино и макетную плату вы покупаете всего 1 раз, а использовать будете на протяжении всех уроков.

Для дополнительного занятия потребуется ещё 

Этот урок надо использовать вместе с видео.

Скетчи основной части урока.
Мигание 1 светодиодом. Скачать.
Мигание 3 светодиодами. Скачать.

Теперь, как и обещал некоторые интересности.

Вот наш код из первого скетча

#define LED 13

void setup() {
  pinMode(LED, OUTPUT); // УСТАНАВЛИВАЕМ ЦИФРОВОЙ ПИН 13 НА ВЫХОД
}

void loop() {
  digitalWrite(LED, HIGH);   // ЗАЖИГАЕМ СВЕТОДИОД
  delay(1000);               // ЖДЁМ 1 СЕКУНДУ
  digitalWrite(LED, LOW);    // ГАСИМ СВЕТОДИОД
  delay(1000);               // ЖДЁМ 1 СЕКУНДУ
}

Теперь как и обещал сократим код в функции loop()
И вместо 4 строчек написать всего 2
void loop() {
digitalWrite(LED, !digitalRead(LED)); // если светодиод был выключен – включаем и наоборот
delay(1000); // ждем 1 секунду
}

Что делают эти строчки.
Мы получаем текущее значение светодиода digitalRead(LED) и !digitalRead(LED) переворачиваем его(инвертируем).
Если светодиод горел, то гасим его
Если светодиод не горел, то зажигаем его.

с Логическими операторами мы познакомимся в следующих уроках

&& (логическое И)   Истина, если оба операнда истина.

|| (логическое ИЛИ)  Истина, если хотя бы один операнд истина.

 ! (логическое отрицание)  Истина, если операнд Ложь, и наоборот.

Замена delay()

Эта функция служит для остановки микроконтроллера.
Как я и говорил в видео, функцию delay() надо применять очень осторожно.
Означает остановить выполнение всех программ (ну почти всех) и ждать пока не пройдёт время, указанное в скобках. Оно указывается в миллисекундах (1000 миллисекунд = 1 секунде) и пока это время не закончится ARDUINO будет бездействовать. 
Есть ещё прерывания, но это мы будем изучать в следующих уроках.

Правильнее будет использовать функцию millis();
Она возвращает количество миллисекунд с момента начала выполнения программы.
Количество миллисекунд в millis() ограничено 50 днями. При наступлении этого времени счётчик сбросится 0.

Вот что у нас теперь получилось
#define LED 13
#define STOP 1000 // 1000 миллисекунд - это 1 секунды
unsigned long prev_ms = 0;      // здесь будет храниться время последнего изменения состояния светодиода 

void setup() {
  pinMode(LED, OUTPUT); // УСТАНАВЛИВАЕМ ЦИФРОВОЙ ПИН 13 НА ВЫХОД
}

void loop()
{
  /*
    проверяем – настало ли время изменить состояние светодиода
    для этого считываем значение светодиода digitalRead(LED),      
    а затем сверяем полученный интервал с нужным интервалом 
  */
if (millis() - prev_ms > STOP) { 
// текущее время –(минус) время последнего изменения. Если он больше 1000(1 сек.) то условие верно        
    digitalWrite(LED, !digitalRead(LED)); // если светодиод был выключен – включаем и наоборот
   prev_ms = millis();
  }
/*
 Здесь могут быть другие команды, которые нужно выполнить и неважно, что будет делать микроконтроллер в данное время,Если настало время STOP, он прервётся, выполнит задачу, и начнёт с того же места, где прервался.
*/
}

Теперь переходим к самому интересному.
Дополнительной части урока.
Напишу её сегодня-завтра. Хочу, чтобы на выходные вам было чем заняться.

Удачи вам в освоении этого непростого, но интересного дела.
Изучив эти уроки, вы освоите новую, интересную профессию – Программист. Освоив её, вы можете быть спокойны за свою будущее, ведь по статистике, программист самый востребованный и высокооплачиваемый специалист в наше время. 
Смотрите новые уроки. Подписывайтесь на канал. И удачи.

Примеры.

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

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

Как мы уже изучили в предыдущем уроке — программное обеспечение, используемое для создания эскизов Arduino, называется IDE, что означает интегрированную среду разработки. Программное обеспечение бесплатно и скачать вы его можете по ссылке в Уроке 5.

Каждый скетч, каждая программа Arduino состоит из двух основных частей:

  • void setup() — часть программы где нужно указать то, будет выполняться один раз без повторений.
  • void loop() — содержит инструкции, которые повторяются снова и снова, пока плата не будет выключена.

В переводе с английского языка слово loop означает — цикл. Слово setup переводится как — настройка.

Итак, программы на языке Arduino называются «скетчами» или «эскизами» и эскиз Arduino состоит из двух основных частей:

  • функции настройки (setup),
  • функции цикла (loop).

setup() — функция setup() автоматически выполняется в самом начале программы Arduino. Внутри этой функции вы будете инициализировать переменные, пины (выводы платы) и любые библиотеки, которые вы могли бы использовать в своем эскизе. Функция setup() запускается только один раз во время выполнения скетча Arduino, прямо при включении питания или сбросе.

loop() — функция loop() содержит основную часть вашей программы. Эта функция выполняется после завершения setup(). Arduino будет выполнять команды внутри цикла снова и снова, пока плата не выключится.

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

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

Понравилась статья? Поделить с друзьями:
  • Как найти дженсена эклза
  • Как найти вещь если она потерялась дома
  • Как составить план перехода судна
  • Как найти норму амортизации линейным способом
  • Как найти площадь описанного вокруг окружности четырехугольника