? язык программирования ардуино c++

Оглавление

Simduino для iPad

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

Эта программа имеет отличный рейтинг на iTunes. Хорошая поддержка помогает своим пользователям понять детали и описания, доступные пользователям на официальном сайте. Приблизительно за 2 доллара вы получите отличный Ардуино симулятор, совместимый с вашим iPad.

Справочник радиолюбителя конструктора

Как проверить конденсатор мультиметром на работоспособность

СОДЕРЖАНИЕ ► Конденсаторы и способы их проверки тестером Как проверить ёмкость конденсатора тестером Как проверить конденсатор на исправность Проверка конденсатора

Язык программирования Ардуино C++

СОДЕРЖАНИЕ ► Arduino команды языка программирования Операторы в языке программирования Ардуино Управляющие операторы в языке Ардуино Синтаксис в языке программирования

Ошибки компиляции Arduino IDE

СОДЕРЖАНИЕ ► Ошибки компиляции для Arduino Uno, Nano, Mega Ошибка: programmer is not responding Ошибка: a function-definition is not allowed

Библиотеки для Ардуино Уно, Нано скачать

СОДЕРЖАНИЕ ► Скачать стандартные библиотеки Arduino на русском Скачать популярные библиотеки Arduino на русском Где правильно хранить библиотеки Arduino IDE

СОДЕРЖАНИЕ ► Учебники по Ардуино в формате pdf Книги по Ардуино для начинающих 25 крутых проектов с Ардуино С чего

Arduino IDE скачать на русском

СОДЕРЖАНИЕ ► Скачать Arduino IDE бесплатно Установка Arduino IDE в Windows Настройка Arduino IDE Linux Онлайн сервис Arduino Web IDE

Типы данных Ардуино

СОДЕРЖАНИЕ ► Таблица. Типы переменных Arduino Константы, директива define в скетче Преобразование переменных Arduino Типы данных (переменная) в Ардуино —

СОДЕРЖАНИЕ ► Описание пинов платы Ардуино Цифровые и ШИМ пины Ардуино Уно Цифровые и ШИМ пины Ардуино Нано Цифровые и

Как создать библиотеку в Arduino IDE

СОДЕРЖАНИЕ ► Создание новой библиотеки в Arduino IDE Как написать библиотеку для Arduino IDE Создание заголовочного файла .h Создание файла

Макетная плата как пользоваться

СОДЕРЖАНИЕ ► Для чего нужна макетная плата (breadboard) Конструкция и устройство макетной платы Как пользоваться макетной платой Ардуино Беспаечная макетная

Ардуино: установка библиотек в Arduino IDE

СОДЕРЖАНИЕ ► Что такое библиотеки в Arduino IDE Установка библиотеки в Arduino IDE Установка библиотеки через Arduino IDE Установка библиотеки

Библиотека Adafruit NeoPixel Ардуино

СОДЕРЖАНИЕ ► Библиотека Adafruit NeoPixel для Ардуино Ошибка ‘Adafruit_NeoPixel h no such file or directory’ Библиотека Adafruit NeoPixel описание команд

Библиотека FastLED Ардуино

СОДЕРЖАНИЕ ► FastLED описание библиотеки на русском Ошибка скетча ‘fastled h no such file or directory’ Описание команд библиотеки FastLED.h

Делитель напряжения на резисторах

СОДЕРЖАНИЕ ► Работа делителя напряжения на резисторах Онлайн расчет делителя напряжения на резисторах Делитель напряжения на резисторах — это схема,

Цветовая маркировка радиоэлементов

СОДЕРЖАНИЕ ► Таблица. Цветовая маркировка резисторов Таблица. Цветовая маркировка конденсаторов Раньше маркировка наносилась на корпус резисторов, и сопротивление радиоэлемента просто

Обозначение радиоэлементов с фото

СОДЕРЖАНИЕ ► Схемное обозначение радиоэлементов с названиями Обозначение радиоэлементов на электрических схемах Для понимания принципиальных электрических схем необходимо ознакомиться с

Основной закон электричества Ома

СОДЕРЖАНИЕ ► Основные понятия: электричество, ток, напряжение Главный закон электричества — Закон Ома Параллельное и последовательное соединение Электричество — совокупность

Emulare Arduino Simulator

Заинтересованы в многозадачности Arduino? Тогда Emulare — ваш лучший выбор. Этот инновационный симулятор предоставляет пользователю возможность одновременного моделирования нескольких проектов Arduino без каких-либо сбоев. Он также объявлен как кросс-платформенный симулятор из-за того, что он поддерживает как операционные системы Linux, так и Windows.

Emulare был создан для, преимущественно, электротехнических проектов и оснащен богатой библиотекой объектов. Emulare сосредотачивается на микроконтроллерах ATMega, которые позволят вам встраивать целые схемы с элементами памяти AVR, кнопками, переключателями, таймерами, светодиодами и другими компонентами. Удивительно, но Emulare со всеми его функциями и компонентами абсолютно бесплатна и обладает достаточной поддержкой, чтобы помочь пользователям понять ее особенности.

Справочник языка

String

String класс появился в версии Arduino 0019. Этот класс позволяет хранить и манипулировать текстовыми строками, по сравнению с string (массивом символов) класс String предоставляет удобные функции для работы со строками, такие как поиск вхождения в строку, объединение строк и др. Класс String занимает несколько больше места в памяти, чем массив символов string.

Tags:

Справочник языка

Оператор goto

Условное «перемещение» выполнения программы к определенной метке-указателю в самой программе, при этом пропускается весь код до самой метки, а исполняется — после нее.

Tags:

Справочник языка

Serial.write()

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

Serial.write(val)
Serial.write(str)
Serial.write(buf, len)

Для Arduino Mega: Serial1, Serial2, Serial3

Tags:

Справочник языка

Serial.println()

Передает данные через последовательное соединение как ASCII текст с следующим за ним символом переноса строки (ASCII символ 13 или ‘\r’) и символом новой строки (ASCII 10 или ‘\n’). Пераметры и типы данных для этой функции такие же, как и для Serial.print().

Serial.println(val)
Serial.println(val, format)

Tags:

Справочник языка

Serial.print()

Передает данные через последовательный порт как ASCII текст. Эта функция может принимать различные типы данных. Так целые числа выводятся соответствующими им символами ASCII. Вещественные выводятся с помощью двух ASCII символов, для целой и дробной части. Байты передаются как символ с соответствующим номером. Симоволы и строки отсылаются как есть. Пример:

Tags:

Справочник языка

Serial.flush()

Ожидает окончания передачи исходящих данных (до версии Arduino 1.0 функция очищала буфер последовательного соединения).

Serial.flush()

Для Arduino Mega:
Serial1.flush()
Serial2.flush()
Serial3.flush()

Tags:

Справочник языка

Serial.read()

Cчитывает очередной доступный байт из буфера последовательного соединения.

Serial.read()

Для Arduino Mega:
Serial1.read()
Serial2.read()
Serial3.read()

Serial.peek()

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

Serial.peek()

Для Arduino Mega:
Serial1.peek()
Serial2.peek()
Serial3.peek()

Описание работы функции

Функция digitalRead ()  используется для того, чтобы получить информацию от внешнего устройства, подключенного к определенному пину. Таким устройством может быть кнопка или любой датчик, формирующий высокий или низкий уровень сигнала в зависимости от ситуации. Получив сигнал, мы можем как-то на него прореагировать: включить светодиод, издать звук, запустить двигатель или отправить SMS-сообщение.

Важное отличие функции от другой функции считывания показаний analogRead() заключается в том, что мы не можем узнать реальный уровень сигнала на входе, даже если мы считываем его с аналоговых пинов. digitalRead всегда возвращает лишь два варианта значений: HIGH и LOW:

  • Значение HIGH возвращается, если уровень сигнала превышает примерно половину опорного напряжения (на плате Arduino Uno это 2.6 В). В скетче ардуино HIGH соответствует логической 1, можно сравнивать полученное значение с константой HIGH или 1.
  • Значение LOW получаем при низком уровне сигнала (меньше 2.6 В). В скетче этому сигналу соответствует значение константы LOW (логический 0).

Для корректной работы функции нужно, чтобы пины находились в режиме INPUT или INPUT_PULLUP, т.к. в противном случае поступающий сигнал будет искажаться из-за падения напряжения на внутреннем резисторе, подключаемом к пинам в режимах OUTPUT.

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

Конкуренты Ардуино

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

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

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

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

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

Цепь

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

Поворачивая ручку на потенциометре, вы изменяете количество сопротивления с каждой стороны движка, подсоединенного к центральному контакту потенциометра. Это, в свою очередь, меняет на центральном контакте уровень напряжения. Когда сопротивление между центральным и боковым (тем, который подключен к на Arduino) контактами приблизится к 0 Ом (а сопротивление на противоположном контакте, соответственно, – к 10 кОм), напряжение на центральном контакте приблизится к значению в . Это напряжение является аналоговым напряжением – тем, которое вы будете считывать как входное.

В плату Arduino уже встроен аналогово-цифровой преобразователь(АЦП), который считывает меняющееся напряжение и конвертирует его в цифры от 0 до 1023. Если ручку потенциометра до упора повернуть в одном направлении, на контакт не будет подано ни одного вольта, поэтому и входное значение будет равно «0». Но если повернуть ручку потенциометра до упора в противоположном направлении, то на контакт пойдут максимальные , а входное значение станет равно «1023». А функция analogRead(), тем временем, займется считыванием значений от 0 до 1023, которые будут соответствовать тому или иному уровню напряжения, поданному на контакт.

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

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

Подключение фоторезистора к Ардуино

В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:

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

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

Circuit Lab

Перейти на сайт Circuit Lab Arduino Simulator

Circuit Lab Arduino Simulator — простой схематичный и мощный инструмент моделирования. Этот симулятор был разработан после PSpice, и он был построен преимущественно для использования электриками и инженерами электроники. Его функции позволяют пользователю изучить внутреннюю работу Arduino, реализовать отладку проектов и схем проектирования.

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

Оператор if…else

Расширенным оператором if является оператор if….else. Он обеспечивает выполнение одного фрагмента кода, когда условие выполняется (true), и выполнение второй фрагмент кода, если условие не выполняется (false). Синтаксис операторf if….else выглядит следующим образом:

if (условие)
{
// команда A
}
else
{
// команда B
}

Команды «A» будут выполняться только в том случае, если условие выполнено, команда «B» будет выполняться, когда условие не выполнено. Одновременное выполнение команды «A» и «B» невозможно. Следующий пример показывает, как использовать синтаксис if…else:

Электрический паяльник с регулировкой температуры
Мощность: 60/80 Вт, температура: 200’C-450’C, высококачествен…

Подробнее

if (init())
{
Serial.print(«ок»);
}
else
{
Serial.print(«ошибка»);
}

Подобным образом можно проверить правильность выполнения функции и информировать об этом пользователя.

Обычной практикой является отрицание условия. Это связано с тем, что функция, которая выполнена правильно возвращает значение 0, а функция, которая отработала неверно по какой-то причине, возвращает ненулевое значение.

Объяснение такого «усложнения жизни» — просто. Если функция выполнена правильно, то это единственная информация, которая нам нужна. В случае же ошибки, стоит иногда понять, что пошло не так, почему функция не выполнена правильно. И здесь на помощь приходят числа, отличающиеся от нуля, т. е. с помощью цифровых кодов мы можем определить тип ошибки. Например, 1 — проблема с чтением какого-то значения, 2 — нет места в памяти или на диске и т. д.

В последнем измененном примере показано, как вызвать функцию, которая возвращает ноль при правильном выполнении:

if (!init())
{
Serial.print(«ок»);
}
else
{
Serial.print(«ошибка»);
}

Ужасная документация

Документация по функциям в Arduino ничего не сообщает о том, какие в них используются периферийные модули (не говоря уж о более глубоком уровне), скрывая это от обычных пользователей. Раньше я использовал openFrameworks. По крайней мере, с их средой разработки можно в коде посмотреть, как реализуются те или иные функции. С Arduino вы работаете вслепую. Можно ли обращаться к таймеру из функции servo()? Будет ли отправка строки в последовательный порт блокировать выполнение программы? Будет ли функция analogWrite() влиять на другие функции времени? В руководстве по Arduino вы об этом не прочитаете.

В справочнике по Arduino также описывается её «язык программирования». В базовой структуре используются некоторые функции Си и Си++, описанные, опять же, непонятно. «Arduino» – не тот язык, который вы не постеснялись бы указать в своем резюме. Чтобы считаться программистом, надо уметь программировать на Си! Сходства и различия этих функций неясны, что приводит к путанице при переходе на другие микроконтроллеры или в среды разработки ANSI-C. Где используются классы? Где используются структуры? Я понимаю, что Arduino не хочет отпугивать новых пользователей, но как же они станут «продвинутыми» пользователями?

Дополнительные модули и сенсоры

Полностью раскрыть потенциал Arduino позволяют дополнительные модули, подключающиеся к выводам платы, которые называют пинами (англ. — pin).

Наиболее интересные и популярные модули расширения:

  1. 3D-джойстик. Своеобразный программируемый 3D-стик, способный стать способом управления спроектированного механизма или робота;
  2. Bluetooth-модуль. Даёт возможность управления механизмом или обменом данными через Bluetooth;
  3. EasyVR Shield 3.0. Разработка, служащая для распознавания голосовых команд;
  4. Espruino Pico. Контролер, позволяющий выполнять Java-скрипты, расширяя варианты применения платы;
  5. GPRS Shield. Расширение, позволяющее принимать и отправлять голос, SMS и GPRS-данные;
  6. Motor Shield. Подключаемый модуль, позволяющий программно управлять двумя моторчиками;
  7. Power Bank. Аккумулятор для переносных компактных модулей на 2000 МАч.
  8. Датчики влажности, температуры и т.п.: — датчик дождя, — датчик расстояния, — датчик температуры, — детектор пыли, — GPS приемник, — и др.

Это далеко не весь список, а лишь популярные и распространённые дополнения.

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

Разное

Использование сдвигового регистра 74HC595

Использование одного сдвигового регистра 74HC595

  • ShftOut11 — Простая передача битов
  • ShftOut12 — Один за одним
  • ShftOut13 — Использование массива
  • Управление светодиодами с помощью сдвигового регистра 74HC595
  • Создание эффекта «бегущий всадник» с помощью сдвигового регистра 74HC595
  • Гистограмма расстояния с помощью сдвигового регистра 74HC595 и ИК-датчика расстояния

Использование двух сдвиговых регистров 74HC595

  • ShftOut21 — Два светодиодных счетчика от «0» до «255» (в двоичном формате)
  • ShftOut22 — Поочередное зажигание 16 светодиодов
  • ShftOut23 — Использование двух массивов

Использование сдвигового регистра CD4021B

Использование одного сдвигового регистра CD4021B

  • ShftIn11 — Простой ввод данных
  • ShftIn12 — Какая кнопка нажата?
  • ShftIn13 — Проверка разных комбинаций
  • ShftIn14 — Нажата ли кнопка?

Использование двух сдвиговых регистров CD4021B

  • ShftIn21 — Простой ввод данных от двух сдвиговых регистров
  • ShftIn22 — Проверка разных комбинаций на двух комплектах переключателей
  • ShftIn23 — Печать включенных настроек

RFID

  • Гайд по использованию RFID-ридера MFRC522 вместе с Arduino
  • Защищенный доступ с помощью RFID-ридера MFRC522 и Arduino

LCD-дисплеи

  • Гайд по использованию LCD-дисплея Nokia 5110 вместе с Arduino
  • Вывод на LCD-дисплей произвольного текста и значения счетчика
  • Прогресс-бар на LCD-дисплее
  • Термостат с отображением информации на LCD-дисплее

Управление DC-моторами

  • Управление DC-мотором при помощи Arduino
  • Управление DC-мотором при помощи Arduino и потенциометра
  • Управление двумя DC-моторами при помощи Arduino и Bluetooth
  • Управление DC-мотором при помощи Arduino и драйвера моторов

Управление серводвигателями

  • Управление серводвигателем с помощью потенциометра
  • Радиальный ИК-датчик расстояния
  • Радиальный ультразвуковой датчик расстояния

Управление RGB-светодиодом

  • Управление RGB-светодиодом при помощи Arduino
  • Управление RGB-светодиодом при помощи Arduino и Android-приложения

Последовательный порт

  • Вывод значений потенциометра в последовательный порт
  • Применение управляющих символов при выводе значений потенциометра в последовательный порт
  • Эхо данных последовательного порта
  • Различие между char и int
  • Управление светодиодом отправкой одиночных символов
  • Управление RGB-светодиодом отправкой последовательности цифр
  • Управление цветом окна программы на Processing с помощью Arduino и потенциометра
  • Управление RGB-светодиодом с помощью палитры цветов из программы на Processing

Использование библиотеки Keyboard

  • Запись данных с датчиков в текстовый файл на ПК
  • Блокировка ПК на основе показаний фоторезистора
  • Управление курсором мыши

Использование библиотеки Wire

  • Чтение данных с I2C-датчика температуры TC74A0-5.0VAT
  • Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing

Использование библиотеки SPI

  • Регулировка яркости светодиодов с помощью двух SPI цифровых потенциометров MCP4231
  • Регулировка яркости светодиодов и громкости динамика с помощью двух SPI цифровых потенциометров MCP4231

Использование библиотеки SD

  • Запись произвольных данных на SD карту
  • Чтение и запись произвольных данных на SD карту
  • Чтение и запись произвольных данных на SD карту с использованием часов реального времени
  • Регистратор прохода через дверь

Использование прерываний

Прерывания по таймеру

  • Мигаем светодиодом с помощью прерывания по таймеру
  • Музыкальный инструмент с помощью прерывания по таймеру и аппаратного прерывания

Логический оператор OR (||)

Логический оператор OR прописывается в скетчах в виде двух вертикальных вертикальных черточек (||), расположенных на той же клавише, что и обратная косая черта (\) на клавиатуре (английская раскладка). Нажатие Shift + \ (клавиши Shift и обратная косая черта) вводит вертикальный символ вертикальной черты.

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

void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); // Светодиод на пине 13 UNO
}

void loop() {
char rx_byte;

if (Serial.available() > 0) { // доступен ли символ?
rx_byte = Serial.read();
if (rx_byte == ‘a’ || rx_byte == ‘A’) {
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

voidsetup(){

Serial.begin(9600);

pinMode(13,OUTPUT);// Светодиод на пине 13 UNO

}
 

voidloop(){

charrx_byte;

if(Serial.available()>){// доступен ли символ?

rx_byte=Serial.read();

if(rx_byte==’a’||rx_byte==’A’){

digitalWrite(13,HIGH);

}

else{

digitalWrite(13,LOW);

}

}

}

Программа включит светодиод на плате Arduino Uno, если строчная буква «а» или заглавная буква «А» отправлены из окна Монитор порта. При отправке любого другого символа светодиод гаснет.

Как работает логический оператор OR

Приведенный ниже код взят из приведенного выше скетча и показывает логический оператор OR:

if (rx_byte == ‘a’ || rx_byte == ‘A’) {
digitalWrite(13, HIGH);
}

1
2
3

if(rx_byte==’a’||rx_byte==’A’){

digitalWrite(13,HIGH);

}

Код в теле оператора if будет выполняться, если переменная rx_byte содержит «a» OR (||) (или), если она содержит «A«. Оператор OR использовался для проверки того или иного символа (A OR a).

Код может быть изменен для включения светодиода при получении символа «a», символа «b» или символа «c», как это сделано в коде ниже:

if ((rx_byte == ‘a’) || (rx_byte == ‘b’) || (rx_byte == ‘c’)) {
digitalWrite(13, HIGH);
}

1
2
3

if((rx_byte==’a’)||(rx_byte==’b’)||(rx_byte==’c’)){

digitalWrite(13,HIGH);

}

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

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

Оператор goto

Из идеологических соображений необходимо пропустить это описание… Оператор goto является командой, которую не следует использовать в обычном программировании. Он вызывает усложнения кода и является плохой привычкой в программировании. Настоятельно рекомендуем не использовать эту команду в своих программах. Из-за того, что goto есть в официальной документации на сайте arduino.cc приведем его краткое описание. Синтаксис команды goto:

….
goto metka; // перейдите на строку с надписью ‘metka’
…..
….
….
metka: // метка, с которой программа продолжит работу
…

Команда позволяет переход к обозначенной метке, т. е. к месту в программе.

Существуют ли еще программы, работающие с Ардуино?

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

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

Существует еще одна интересная версия исходной программы. Называется она B4R, и главным ее отличием является использование в качестве основы не языка си, а другой язык программирования – Basic. Данный программный продукт является бесплатным. Для работы с ним существуют хорошие самоучители, в том числе и написанные создателями данного продукта.

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

Вопросы и ответы

Serial begin 9600 – что это значит?

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

Serial.begin(9600);

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

На каких платах работает функция?

Эта функция работает на любых платах Arduino: Uno, Mega, Nano, Leonardo и т.д. Особенностью плат с несколькими «железными» последовательными портами является возможность вызывать объект Serial для каждого из этих портов.

Что будет, если не использовать функцию в скетче?

Все последующие команды для работы с последовательным портом не будут работать. Вы не сможете ни отправлять данные с помощью функций print() или println(), ни получать данные с помощью read() или readBytes().

Можно ли сократить функцию Serial.begin()?

Для многих начинающих программистов написание непривычных конструкций вызывает дискомфорт. Вы можете «сократить» Serial.begin() до синонима и использовать его, если так будет удобно. Для этого нужно воспользоваться #define. Вот пример:

#define BEGIN Serial.begin(9600)
void setup(){
 BEGIN;
}

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

Виды плат Ардуино

В то время как на рынке существует много разновидностей плат, есть несколько видов Ардуино, которые чаще всего можно увидеть. Наиболее часто используемые виды Arduino как инженерами, так и любителями включают в себя:
• Ардуино UNO
• Ардуино Nano
Ардуино Due
• Ардуино
Mega

Arduino UNO

UNO, пожалуй, самая популярная Ардуино. Она основана на микроконтроллере ATmega328, работающего на частоте 16 МГц, включает 32 КБ флеш-памяти, 1 КБ EEPROM, 2 КБ ОЗУ, имеет 14 цифровых входов / выходов, 6 аналоговых входов, а также шины питания 5 В и 3,3 В.

Ардуино Уно

Ардуино Уно имеет стандартный форм-фактор совместимый с большинством шилд на рынке. Разъём питания включён в UNO, что позволяет ему питаться от внешнего блока питания. И также имеется VIN для подключения UNO к батарейкам.
Физические размеры UNO (69 мм x 54 мм) делают его небольшой платой для разработки, которая может легко вписаться во многие проекты.

Arduino Nano

Ардуино нано — это, по сути, UNO с очень маленьким профилем, что делает его очень удобным для ограниченного пространства и проектов, которым возможно, потребуется уменьшить вес.
Как и UNO, Nano имеет на борту процессор Atmega328, работающего на частоте 16 МГц, включает 32 КБ флеш-памяти, 1 КБ EEPROM, 2 КБ ОЗУ. Нано имеет 14 цифровых входов / выходов, 6 аналоговых входов, а также шины питания 5 В и 3,3 В.
(Примечание: на платах Ардуино Нано до версии V3.0 использовался ATmega168, который по сути, имеет половину характеристик.)

Ардуино Нано

Nano, в отличие от UNO, не может подключаться к шилдам Arduino методом простой стыковки. Нано имеет разъёмы, которые делают его полезным для использования на макетных платах. Часто платы Arduino Nano являются самым дешёвым из доступных плат Arduino. Это делает их экономически эффективными для крупных проектов.

Arduino Due

Due — одна из самых больших плат, а также первая плата Ардуино, оснащённая процессором ARM.
В то время как UNO и Nano работают при 5 В, Дуэ работает при 3,3 В — это важно отметить, потому что перенапряжение повредит плату. Процессор ATSAM3X8E Cortex-M3, работающий на частоте 84 МГц, Due имеет 512 КБ ПЗУ и 96 КБ ОЗУ, 54 пина цифрового ввода-вывода, 12 каналов ШИМ, 12 аналоговых входов и 2 аналоговых выхода

Ардуино дуе

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

Arduino Mega 2560

Arduino Mega чем-то похожа на Due в том, что она также имеет 54 ввода / вывода. Однако вместо ядра ARM, Мега использует ATmega2560.
Процессор работает на частоте 16 МГц. Мега имеет 256 КБ ПЗУ, 8 КБ ОЗУ и 4 КБ EEPROM. Питается Mega от 5 вольт, что делает его простым в использовании с большинством электронных компонентов.

Ардуино Мега2560

Ардуино Мега имеет 16 аналоговых входов, 15 каналов ШИМ, распиновку похожую на Due, и аппаратно совместима с шилдами Arduino.