Основы программирования Arduino какие программы

Обновлено: 21.11.2024

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

Опубликовано 24 января 2020 г.

Как вы можете писать программы для своей платы Arduino?

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

Этот язык основан на платформе разработки Wiring, которая, в свою очередь, основана на Processing, на котором, если вы не знакомы, лежит p5.js. Это длинная история проектов, основанных на других проектах, с очень открытым исходным кодом. Arduino IDE основана на Processing IDE и Wiring IDE, которая надстраивается над ней.

Когда мы работаем с Arduino, мы обычно используем Arduino IDE (интегрированная среда разработки), программное обеспечение, доступное для всех основных настольных платформ (macOS, Linux, Windows), которое дает нам 2 вещи: редактор программирования с поддержкой встроенных библиотек. , а также способ легко компилировать и загружать наши программы Arduino на плату, подключенную к компьютеру.

Язык программирования Arduino — это, по сути, фреймворк, созданный на основе C++. Вы можете возразить, что это не настоящий язык программирования в традиционном понимании, но я думаю, что это помогает новичкам избежать путаницы.

Программа, написанная на языке программирования Arduino, называется эскизом. Эскиз обычно сохраняется с расширением .ino (от Ardu ino ).

Основное отличие от «обычного» языка C или C++ заключается в том, что весь код помещается в две основные функции. Конечно, у вас может быть больше 2, но любая программа для Arduino должна обеспечивать хотя бы эти 2.

Один называется setup() , другой — loop() . Первый вызывается один раз при запуске программы, второй вызывается повторно во время работы вашей программы.

У нас нет функции main(), к которой вы привыкли в C/C++, в качестве точки входа в программу. Как только вы скомпилируете эскиз, среда IDE проследит за тем, чтобы конечным результатом была правильная программа на C++, и в основном добавит отсутствующий клей путем предварительной обработки.

Все остальное — это обычный код C++, а поскольку C++ — это надмножество C, любой допустимый C также является допустимым кодом Arduino.

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

Частью языка программирования Arduino являются встроенные библиотеки, которые позволяют легко интегрироваться с функциями, предоставляемыми платой Arduino.

Ваша первая программа для Arduino наверняка будет включать в себя включение светодиода, а затем его выключение. Для этого вы будете использовать функции pinMode() , delay() и digitalWrite() вместе с некоторыми константами, такими как HIGH , LOW , OUTPUT .

Вот так, канонический первый проект Arduino («Hello, World!»):

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

Поддержка другого языка

Напоминаю, что вы не ограничены использованием этого языка и IDE для программирования Arduino. Среди прочего существуют проекты, позволяющие запускать на нем код Node.js с помощью проекта Johnny Five, код Python с использованием pyserial и код Go с Gobot, но язык программирования Arduino, безусловно, является тем, на котором вы увидите большинство руководств, основанных на нем. поскольку это стандартный и канонический способ работы с этими устройствами.

Встроенные константы языка программирования Arduino

Arduino устанавливает две константы, которые мы можем использовать для

HIGH соответствует высокому уровню напряжения, которое может различаться в зависимости от аппаратного обеспечения (> 2 В на платах 3,3 В, таких как Arduino Nano,> 3 В на платах 5 В, таких как Arduino Uno). LOW соответствует низкому уровню напряжения. Опять же, точное значение зависит от используемой платы

Тогда у нас есть 3 константы, которые мы можем использовать в сочетании с функцией pinMode():

  • INPUT устанавливает контакт как входной.
  • OUTPUT устанавливает контакт как выходной.
  • INPUT_PULLUP устанавливает контакт как внутренний подтягивающий резистор

Другая константа, которая у нас есть, это LED_BUILTIN , которая указывает на номер встроенного контакта, который обычно соответствует числу 13 .

Кроме того, у нас есть константы C/C++ true и false .

Математические константы Arduino

  • M_PI - константа числа пи ( 3,14159265358979323846 )
  • M_E константа e
  • M_LN10 — натуральный логарифм числа 10.
  • M_LN2 – натуральный логарифм числа 2.
  • M_LOG10E логарифм e по основанию 10.
  • M_LOG2E – логарифм e по основанию 2.
  • M_SQRT2 — квадратный корень из 2.
  • NAN — константа NAN (не число).

Встроенные функции языка программирования Arduino

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

Жизненный цикл программы

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

Обработка ввода-вывода

Следующие функции помогают обрабатывать ввод и вывод с вашего устройства Arduino.

Цифровой ввод-вывод

  • digitalRead() считывает значение с цифрового контакта. Принимает номер вывода в качестве параметра и возвращает константу HIGH или LOW.
  • digitalWrite() записывает значение HIGH или LOW на контакт цифрового выхода. Вы передаете номер вывода и HIGH или LOW в качестве параметров.
  • pinMode() устанавливает контакт как вход или выход. Вы передаете номер вывода и значение INPUT или OUTPUT в качестве параметров.
  • pulseIn() считывает цифровой импульс от LOW до HIGH, а затем снова до LOW, или от HIGH до LOW и снова до HIGH на выводе. Программа будет блокироваться до тех пор, пока не будет обнаружен пульс. Вы указываете номер вывода и тип импульса, который хотите обнаружить (LHL или HLH). Вы можете указать необязательный тайм-аут, чтобы прекратить ожидание этого импульса.
  • pulseInLong() аналогична pulseIn(), за исключением того, что она реализована по-другому и ее нельзя использовать, если отключены прерывания. Прерывания обычно отключаются, чтобы получить более точный результат.
  • shiftIn() считывает байт данных по одному биту за раз с контакта.
  • shiftOut() побитно записывает байт данных на вывод.
  • tone() отправляет прямоугольную волну на контакт, используемый для зуммеров/динамиков для воспроизведения тонов. Вы можете указать пин и частоту. Он работает как с цифровыми, так и с аналоговыми выводами.
  • noTone() останавливает сгенерированную тоном() волну на булавке.

Аналоговый ввод/вывод

  • analogRead() считывает значение с аналогового контакта.
  • analogReference() настраивает значение, используемое для верхнего диапазона аналогового входа, по умолчанию 5 В для плат 5 В и 3,3 В для плат 3,3 В.
  • analogWrite() записывает аналоговое значение на вывод
  • analogReadResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogRead() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)
  • analogWriteResolution() позволяет изменить разрешение аналоговых битов по умолчанию для AnalogWrite() , по умолчанию 10 бит. Работает только на определенных устройствах (Arduino Due, Zero и MKR)

Функции времени

  • delay() приостанавливает выполнение программы на количество миллисекунд, указанное в качестве параметра
  • delayMicroseconds() приостанавливает выполнение программы на количество микросекунд, указанное в качестве параметра
  • micros() количество микросекунд с момента запуска программы. Сбрасывается примерно через 70 минут из-за переполнения.
  • millis() количество миллисекунд с момента запуска программы. Сбрасывается примерно через 50 дней из-за переполнения.

Математические функции

  • abs() абсолютное значение числа
  • constrain() ограничивает число в диапазоне, см. использование
  • map() повторно отображает число из одного диапазона в другой, см. использование
  • max() максимум два числа
  • min() минимальное из двух чисел
  • pow() значение числа, возведенного в степень
  • sq() квадрат числа
  • sqrt() квадратный корень числа
  • cos() косинус угла
  • sin() синус угла
  • tan() тангенс угла

Примечание. Если вам нужны встроенные математические функции, они описаны здесь.

Работа с буквенно-цифровыми символами

  • isAlpha() проверяет, является ли символ альфа-каналом (буквой)
  • isAlphaNumeric() проверяет, является ли символ буквенно-цифровым (буквой или цифрой)
  • isAscii() проверяет, является ли char символом ASCII
  • isControl() проверяет, является ли char управляющим символом
  • isDigit() проверяет, является ли char числом
  • isGraph() проверяет, является ли char печатаемым символом ASCII и содержит ли он содержимое (например, это не пробел)
  • isHexadecimalDigit() проверяет, является ли char шестнадцатеричной цифрой (A-F 0-9)
  • isLowerCase() проверяет, является ли char буквой нижнего регистра
  • isPrintable() проверяет, является ли char печатаемым символом ASCII
  • isPunct() проверяет, является ли символ пунктуацией (запятая, точка с запятой, восклицательный знак и т. д.)
  • isSpace() проверяет, является ли char пробелом, переводом страницы \f , новой строкой \n , возвратом каретки \r , горизонтальной табуляцией \t или вертикальной табуляцией \v .
  • isUpperCase() проверяет, является ли char буквой в верхнем регистре
  • isWhitespace() проверяет, является ли символ пробелом или горизонтальной табуляцией \t

Генерация случайных чисел

  • random() генерирует псевдослучайное число
  • randomSeed() инициализирует генератор псевдослучайных чисел произвольным начальным числом

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

Работа с битами и байтами

  • bit() вычисляет значение бита (0 = 1, 1 = 2, 2 = 4, 3 = 8…)
  • bitClear() очищает (устанавливает в 0) часть числовой переменной. Принимает число и номер бита, начиная справа
  • bitRead() считывает часть числа. Принимает число и номер бита, начиная справа
  • bitSet() устанавливает в 1 бит числа. Принимает число и номер бита, начиная справа
  • bitWrite() записывает 1 или 0 в определенный бит числа Принимает число, номер бита, начиная справа, и значение для записи (0 или 1)
  • highByte() получает старший (самый левый) байт словарной переменной (которая имеет 2 байта)
  • lowByte() получает младший (самый правый) байт словарной переменной (которая имеет 2 байта)

Прерывания

  • noInterrupts() отключает прерывания
  • interrupts() снова включает прерывания после того, как они были отключены
  • attachInterrupt() позволяет цифровому входу быть прерыванием. Разные доски имеют разные разрешенные контакты, проверьте официальные документы.
  • detachInterrupt() отключает прерывание, включенное с помощью attachInterrupt()

Хотите стать лучшим веб-разработчиком? Присоединяйтесь к учебному лагерю веб-разработки 2022!

Программирование на Arduino для детей — это идеальный способ познакомить детей с совершенно новым миром электроники и технологий. Знакомство с технологиями не только дает вашим детям уверенность в своих силах, но и дает им возможность быть на шаг впереди других.

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

Так что же такое Arduino? Arduino — это платформа с открытым исходным кодом, представляющая собой комбинацию аппаратного и программного обеспечения. Arduino легко доступен — даже для тех, кто мало разбирается в электронике. Платы Arduino представляют собой простой тип микроконтроллера. Они могут считывать входные данные с датчиков и преобразовывать эти входные данные в выходные данные.

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

Ответы на распространенные вопросы о программировании Arduino для детей

В этой статье мы ответим на некоторые распространенные вопросы, связанные с отработкой схем. Arduino для детей кажется очень сложным. Но не волнуйтесь - мы здесь, чтобы помочь! Если вы действительно хотите узнать, как работает электроника, Arduino — лучший микроконтроллер для начала.

Какое программирование использует Arduino?

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

Язык программирования Arduino представляет собой модифицированную версию C/C++. Обычно мы программируем на C++ с добавлением методов и функций. Программа, написанная на языке программирования Arduino, называется эскизом и сохраняется с расширением .ino. Вы даже можете использовать Python для написания программы для Arduino. Все эти языки являются текстовыми языками программирования.

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

Подходит ли Arduino для начинающих?

Да, Arduino хорош для начинающих. Есть много электронных плат. Зачем использовать Arduino для начинающих? Что ж, есть несколько моментов, которые делают этот микроконтроллер уникальным:

  • Каждый раз, когда мы собираемся что-то купить, мы всегда должны сначала смотреть на стоимость. Платформа Arduino экономична и легкодоступна.
  • Arduino легче изучать как язык программирования, так как это упрощенная версия языка программирования C++.
  • Arduino является кроссплатформенным, что упрощает его работу на любых устройствах по сравнению с другими микроконтроллерами, которые могут работать только в Windows.
  • Arduino имеет множество вариантов на выбор, и вы можете легко выбрать в соответствии со своими потребностями.

Изучите пошаговое руководство по настройке среды программирования Arduino

Вот как использовать физическую плату Arduino Uno. Arduino Uno — одна из нескольких плат для разработки. Он имеет 14 цифровых входных/выходных контактов, 6 аналоговых входных контактов, разъем питания, кнопку сброса, USB-соединение, разъем ICSP.

1. Загрузите и установите среду Arduino (IDE)

Если вы только что приобрели плату Arduino Uno, вам сначала необходимо установить Arduino IDE (интегрированную среду разработки) на другой компьютер. Код вводится в IDE и отправляется на Arduino через USB-кабель.

Посетите arduino.cc, чтобы загрузить последнюю версию Arduino IDE для своего компьютера. Существуют разные версии для Mac, Windows и ОС Linux.

  • На странице загрузки нажмите «Установщик» для самой простой установки, а затем
  • Сохраните файл .exe на диске.
  • Откройте файл .exe.
  • Нажмите кнопку, чтобы принять лицензионное соглашение.
  • Решите, какие компоненты добавить, и нажмите "Далее".
  • Выберите, в какую папку поместить программу, затем нажмите «Установить».
  • Дождитесь завершения установки программы, затем нажмите "Закрыть".

2. Запустите IDE Arduino

После загрузки программного обеспечения Arduino IDE распакуйте папку. Для этого дважды щелкните ярлык Arduino на рабочем столе. IDE откроется, и вы увидите редактор кода.

3. При необходимости установите драйверы

Если вы использовали установщик, он автоматически установит драйверы, как только вы подключите плату.

4. Подключите плату к компьютеру через USB-кабель

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

5. Выберите свою доску

Затем убедитесь, что программное обеспечение готово для вашей конкретной платы Arduino. Перейдите в меню компьютера «Инструменты» из строки меню. Выберите опцию «Плата», и появится другое меню, в котором вы сможете выбрать свою модель Arduino из списка.

6. Выберите свой последовательный порт

Выберите последовательное устройство на плате Arduino. Перейдите в Инструменты, а затем в меню последовательного порта. Вы можете увидеть COM3 или выше (COM1 и COM2 обычно зарезервированы для аппаратных последовательных портов). Чтобы узнать, к какому порту подключена ваша плата Arduino, отключите плату Arduino и снова откройте меню. Запись, которая исчезнет, ​​должна быть платой Arduino. Снова подключите плату и выберите этот последовательный порт.

7. Откройте пример мерцания

Мы начнем с примера мигания светодиода, который входит в состав Arduino IDE. Просто перейдите в Файл->Примеры->Основы->Blink.

Вот несколько моментов, о которых следует помнить при написании кода:

  • Код чувствителен к регистру
  • Все операторы должны заканчиваться точкой с запятой
  • Комментарии следуют за // или начинаются с /* и заканчиваются */
  • Void loop() и void setup() — это две обязательные функции. Раздел настройки кода просто запускается один раз при первом включении или сбросе платы Arduino. После завершения настройки цикл повторяется снова и снова. Он продолжает работать до тех пор, пока на плату не подается питание.
  • В строке состояния показано, что программа скомпилирована или загружена.
  • В области уведомлений программы отображаются ошибки в коде, если таковые имеются.

8. Загрузить программу

Пришло время загрузить ваш первый скетч (код). Убедитесь, что плата Arduino подключена и горит зеленый индикатор — следовательно, выбраны правильная плата и порт. Выберите «Загрузить» в раскрывающемся меню «Эскиз».

Через несколько секунд появится этот экран с сообщением "Загрузка завершена".

Откройте для себя онлайн-курсы Arduino

В Create & Learn мы стремимся сделать процесс обучения легким и увлекательным благодаря структурированному пути обучения, разработанному экспертами Google и Стэнфорда, а также обратной связи от преподавателей на протяжении всего занятия. Если вам интересно узнать, как работает электроника, Arduino — лучший микроконтроллер для начала, и у нас есть отличный виртуальный курс для вас.

Попробуйте нашу программу Circuit Wizard: Introduction to Arduino, чтобы открыть для себя основы схем, использовать резисторы и познакомиться с законом Ома, создавая серию интересных проектов и экспериментов. В этом курсе Arduino вы также будете кодировать Arduino для создания интеллектуальных устройств, которые воспринимают окружающую среду и реагируют соответствующим образом. Но не волнуйтесь, вам не нужно покупать физическую плату. Мы используем симулятор (хотя код будет работать и на физическом устройстве, если оно у вас есть). Вы даже можете начать с нашего вводного урока за 5 долларов, чтобы убедиться, что он вам понравится!

Стартовые наборы Arduino для детей

Существует множество доступных плат Arduino, и все они имеют одну общую черту: микроконтроллер. Микроконтроллер — это, по сути, очень маленький компьютер. Если вы хотите приобрести физические комплекты Arduino для своих детей, вот некоторые варианты:

  1. Стартовый комплект Arduino. Этот стартовый комплект Arduino знакомит вас с основами Arduino и электроники на практике. Предварительный опыт не требуется. В этот комплект входит самая последняя плата управления Arduino UNO. В нем есть все необходимые компоненты, такие как плата управления, индикаторы, кнопки, переключатели, резисторы и многое другое.
  2. Базовый стартовый комплект ELEGOO UNO Project: этот базовый стартовый комплект является самым дешевым и самым основным набором электронных компонентов для начинающих Arduino с новейшей платой разработки UNO R3 + USB-кабелем и всеми основными компонентами.
  3. ELEGOO UNO Project Super Starter Kit: этот суперстартовый комплект является наиболее экономичным набором на базе платформы Arduino для начинающих программировать. Он на 100% совместим с Arduino UNO R3, NANO, MEGA 2560 R3.

Программирование на Arduino для детей — это весело!

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

Если вам интересно, с чего начать, присоединяйтесь к мастеру схем: введение в Arduino. Ваш ребенок (4-7 классы) узнает об основах схем и о том, как использовать резисторы, создавая серию крутых проектов и экспериментов (и вам даже не нужен физический Arduino, мы используем потрясающий виртуальный) . Мы также напишем код Arduino, чтобы приступить к созданию некоторых интеллектуальных устройств, которые будут чувствовать окружающую среду и реагировать соответствующим образом. Для младших школьников (2–4 классы) мы рекомендуем начать с урока Micro;Bit coding for kids.

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

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

Как вы узнали из Модуля 01, IDE означает Интегрированная среда разработки. Довольно причудливое звучание, и вы должны чувствовать себя умным каждый раз, когда используете его. IDE — это программа, похожая на текстовый редактор, которая позволяет вам писать код для Arduino.

Когда вы открываете программу Arduino, вы открываете IDE. Он намеренно оптимизирован, чтобы все было максимально просто и понятно. Когда вы сохраняете файл в Arduino, этот файл называется скетч — скетч — это место, где вы сохраняете написанный вами компьютерный код.

Язык программирования, который использует Arduino, очень похож на C++ («см. плюс плюс»), который является распространенным языком в мире вычислений. Код, который вы научитесь писать для Arduino, будет очень похож на код, который вы пишете на любом другом языке программирования — все основные концепции остаются прежними — это просто вопрос изучения нового диалекта, если вы будете изучать другие языки программирования.

Код, который вы пишете, «читается человеком», то есть он будет иметь смысл для вас (иногда) и будет организован так, чтобы человек мог ему следовать.Часть работы IDE состоит в том, чтобы взять удобочитаемый код и преобразовать его в машиночитаемый код, который будет выполняться Arduino. Этот процесс называется компиляцией.

Процесс компиляции прост для пользователя. Все, что вам нужно сделать, это нажать кнопку. Если в вашем компьютерном коде есть ошибки, компилятор отобразит сообщение об ошибке в нижней части IDE и выделит строку кода, которая кажется проблемой. Сообщение об ошибке предназначено для того, чтобы помочь вам определить, что вы, возможно, сделали неправильно. Иногда сообщение может быть очень явным, например, "Эй, вы забыли точку с запятой", а иногда сообщение об ошибке может быть расплывчатым.

Зачем беспокоиться о точке с запятой, спросите вы? Точка с запятой является частью синтаксиса языка Arduino, правил, определяющих способ написания кода. Это как грамматика в письме. Скажем, например, мы не использовали точки, когда мы писали — у всех была бы чертовски много времени, пытаясь понять, когда предложения начинаются и заканчиваются. Или, если бы мы не использовали запятую, как бы мы передали читателю драматическую паузу?

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

Давайте запачкаем руки и познакомимся с синтаксисом.

Точка с запятой

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

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

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

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

Теперь, через 3 месяца, когда я пересматриваю эту программу, я знаю, куда воткнуть свой светодиод.

Комментарии будут игнорироваться компилятором, поэтому вы можете писать в них все, что хотите. Если вам нужно многое объяснить, вы можете использовать многострочный комментарий, показанный ниже…

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

Фигурные скобки

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

Помните: ни одна фигурная скобка не может оставаться незакрытой!

Функции ( )

Давайте немного переключимся и поговорим о функциях.

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

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

В Arduino есть определенные функции, которые используются так часто, что они встроены в IDE. При их вводе название функции будет отображаться оранжевым цветом. Например, функция pinMode() — это обычная функция, используемая для обозначения режима вывода Arduino.

Что делать со скобками после функции pinMode? Для работы многих функций требуются аргументы. Аргумент — это информация, которую функция использует при выполнении.

Для нашей функции WashDog аргументами могут быть имя собаки и тип мыла или температура и размер ведра.

Аргумент 13 относится к контакту 13, а ВЫХОД — это режим, в котором вы хотите, чтобы контакт работал. Когда вы вводите эти аргументы, терминология называется передачей. Вы передаете необходимую информацию функциям. Не всем функциям требуются аргументы, но открывающие и закрывающие круглые скобки останутся пустыми, несмотря ни на что.

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

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

Однако мы поговорим о двух функциях, используемых почти в КАЖДОЙ программе Arduino.

аннулировать установку ( )

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

Возможно, вам интересно, что означает void перед функцией setup(). Void означает, что функция не возвращает информацию.

Некоторые функции возвращают значения. Наша функция DogWash может возвращать количество ведер, необходимое для мытья собаки. Функция AnalogRead() возвращает целочисленное значение от 0 до 1023. Если сейчас это кажется немного странным, не волнуйтесь, поскольку мы подробно рассмотрим все распространенные функции Arduino по мере продолжения курса.

Давайте рассмотрим пару моментов, которые вам следует знать о setup()…

<р>1. setup() запускается только один раз.

<р>2. setup() должна быть первой функцией в вашем скетче Arduino.

<р>3. setup() должен иметь открывающую и закрывающую фигурные скобки.

пустой цикл ( )

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

Как и в случае с setup(), функция loop() не возвращает никаких значений, поэтому перед ней стоит слово void.

Вам не кажется странным, что код работает в одном большом цикле? Это кажущееся отсутствие вариаций — иллюзия. Большая часть вашего кода будет иметь определенные условия, ожидающие запуска новых действий.

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

Попробуйте сами

Этот курс основан на примерах скетчей, поставляемых вместе с Arduino IDE. Откройте IDE Arduino, перейдите в меню «Файл» > «Пример» > «01.Основы» и откройте три разных скетча. Определите следующий синтаксис и функции, которые вы найдете в эскизах:

    <ли>; точки с запятой
  • // однострочные комментарии
  • /* */ многострочные комментарии
  • < >открывающие и закрывающие фигурные скобки
  • ( ) круглая скобка
  • void setup() — определяет открывающую и закрывающую фигурные скобки
  • void loop() — идентифицирует открывающую и закрывающую фигурные скобки
  • некоторые ключевые слова синего цвета, такие как ВЫВОД или ВВОД.

Дополнительная литература

Перейдите на страницу справки по Arduino и ознакомьтесь со всем синтаксисом в разделе «Дополнительный синтаксис», о котором мы говорили. Вы найдете дополнительную полезную информацию о каждом из этих элементов.

В этом уроке мы обсудим основы программирования Arduino, чтобы помочь вам понять основные концепции языка Arduino: структуру, функции, переменные и операторы.

На предпоследнем уроке нашего 7-курсового вводного курса по Arduino мы собираемся обсудить основы программирования Arduino.

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

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

Что еще более важно, вам нужно знать, как писать собственный код.

Комбинация

  1. понимание основ программирования,
  2. понимание основ электроники,
  3. и понимание того, как использовать совместную работу других,

позволит вам создавать удивительные вещи.

Вот о чем этот (и следующий и последний урок): помочь вам понять основные концепции программирования Arduino.

Язык Arduino

Языком Arduino является C++.

В большинстве случаев люди будут использовать небольшое подмножество C++, которое очень похоже на C. Если вы знакомы с Java, вам будет легко работать с C++ и узнавать его. Если вы никогда раньше не программировали, не беспокойтесь и не бойтесь. В следующих нескольких абзацах вы узнаете все, что вам нужно для начала работы.

Самая важная «высокоуровневая» характеристика C++ заключается в том, что он является объектно-ориентированным.В таком языке объект представляет собой конструкцию, сочетающую функциональный код (код, выполняющий такие действия, как вычисления и операции с памятью) с «состоянием» (результатами таких вычислений или просто значениями, хранящимися в переменных).

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

Например, вы можете смоделировать адаптер Ethernet как объект, содержащий атрибуты (например, его IP- и MAC-адреса) и функции (например, запрос сведений о конфигурации сети у DHCP-сервера). Программирование с использованием объектов стало наиболее распространенной парадигмой в программировании, и C++ оказал сильное влияние на большинство современных языков, таких как Java, Ruby и Python.

Большая часть кода скетча, который вы будете писать и читать, будет ссылаться на библиотеки, содержащие определения объектов (эти определения называются «классами»). Ваш исходный код в значительной степени будет состоять из «связующего» кода и настроек. Таким образом, вы сможете практически сразу приступить к работе, изучив небольшое подмножество C++.

Код, из которого состоит ваш скетч, должен быть скомпилирован в машинный код, понятный микроконтроллеру Arduino. Эта компиляция выполняется специальной программой — компилятором. Arduino IDE поставляется с C++ с открытым исходным кодом, поэтому вам не нужно беспокоиться о деталях. Представьте: каждый раз, когда вы нажимаете кнопку «Загрузить», IDE запускает компилятор, который преобразует ваш человекочитаемый код в единицы и нули, а затем отправляет его на микроконтроллер по USB-кабелю.

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

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

Давайте рассмотрим самые важные из этих вещей, чтобы рассмотреть их по очереди.

Структура скетча Arduino

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

Этот код содержит две функции.

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

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

Обратите внимание, что и setup(), и loop() имеют открывающую и закрывающую скобки? Функции могут получать параметры, то есть способ, с помощью которого программа может передавать данные между своими различными функциями. В функции настройки и цикла не передаются никакие параметры. Если вы добавите что-либо в скобках, компилятор выдаст ошибку компиляции и остановит процесс компиляции.

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

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

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

Пользовательские функции

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

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

Определение состоит как минимум из:

  • тип возвращаемого значения
  • имя
  • список параметров

Вот пример

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

В первой строке тела мы создаем новую переменную c целочисленного типа ( int ). Мы добавляем a и b, а затем присваиваем результат c .

И, наконец, во второй строке тела функции мы возвращаем значение, хранящееся в c, вызывающей стороне do_a_calc .

Допустим, вы хотите вызвать do_a_calc из функции настройки. Вот полный пример, показывающий, как это сделать:

В функции setup() вторая строка определяет новую переменную, файл .В той же строке он вызывает функцию do_a_calc и передает ей целые числа 1 и 2. Функция do_a_calc вычисляет сумму двух чисел и возвращает вызывающей стороне значение 3, которое является второй строкой функции setup(). Затем значение 3 сохраняется в переменной a , и функция setup() завершается.

Есть несколько вещей, на которые следует обратить внимание и запомнить.

Комментарии

Любая строка, начинающаяся с //, или несколько строк, начинающихся с /* и заканчивающихся */, содержат комментарии.

Комментарии игнорируются компилятором. Они предназначены для чтения программистом.

Комментарии используются, чтобы объяснить функциональность кода или оставить заметки для других программистов (или для себя).

Область

В функции setup() есть определение переменной с идентификатором a . В функции do_a_calc также есть определение переменной с таким же идентификатором (не имеет значения, что это определение находится в строке определения функции).

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

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

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

Вы поблагодарите себя позже.

Переменные

Программы полезны, когда они обрабатывают данные. Обработка данных — это то, что программы делают постоянно. Программы либо получат некоторые данные для обработки от пользователя (возможно, через клавиатуру). От датчика (например, термистора, измеряющего температуру), сети (например, удаленной базы данных), локальной файловой системы (например, SD-карты), локальной памяти (например, EEPROM) и многих других мест.

Независимо от того, откуда ваша программа получает данные, она должна хранить их в памяти, чтобы работать с ними. Для этого мы используем переменные. Переменная — это программная конструкция, которая связывает ячейку памяти с именем (идентификатором). Вместо того, чтобы использовать адрес ячейки памяти в нашей программе, мы используем легко запоминающееся имя. Вы уже встречались с переменной. В предыдущем разделе о пользовательских функциях мы определили набор переменных a , b и c , каждая из которых содержит целое число.

Переменные могут содержать различные типы данных, кроме целых чисел. Язык Arduino (напомню, что это C++) имеет встроенную поддержку некоторых из них (здесь перечислены только наиболее часто используемые и полезные):

Читайте также: