программирования C++

Синтаксис Ардуино основан на языке программирования C++. Он довольно прост и понятен даже для начинающих. Вот некоторые ключевые моменты об ардуиновском синтаксисе:

Функция `void setup()` вызывается один раз при запуске Ардуино. Внутри этой функции обычно выполняется настройка пинов ввода-вывода и других начальных установок.

`void loop()` вызывается бесконечное количество раз после выполнения.

`setup()` внутри этой функции обычно размещается основной код, который будет выполняться повторно и повторно.

  1. `pinMode(pinNumber, mode)` — устанавливает режим работы пина (ввод или вывод).
  2. `digitalWrite(pinNumber, value)` — устанавливает состояние вывода пина (HIGH или LOW).
  3. `digitalRead(pinNumber)` — считывает состояние ввода с пина (HIGH или LOW).

Обработка событий:

`if` и `else` — используются для выполнения кода в зависимости от условия.

`for` и `while` — используются для выполнения кода в цикле, пока выполняется определенное условие.

Встроенные функции и библиотеки:

  • `delay(time)` — приостанавливает выполнение программы на указанное количество миллисекунд.
  • `analogRead(pinNumber)` — считывает аналоговое значение с пина (от 0 до 1023).
  • `Serial.begin(baudRate)` — инициализирует последовательный порт с указанной скоростью передачи данных.

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

Список команд

  1. digitalRead(pin): читает состояние цифрового пина (HIGH или LOW) и возвращает соответствующее значение.
  2. digitalWrite(pin, value): устанавливает состояние цифрового пина в HIGH или LOW в зависимости от значения.
  3. pinMode(pin, mode): устанавливает режим пина (INPUT, OUTPUT, INPUT_PULLUP).
  4. analogRead(pin): читает аналоговое значение с указанного пина (0-1023).
  5. analogWrite(pin, value): устанавливает аналоговое значение (ШИМ) на указанном пине (0-255).
  6. delay(milliseconds): задерживает выполнение программы на указанное количество миллисекунд.
  7. Serial.begin(speed): инициализирует последовательную связь с указанной скоростью передачи данных.
  8. Serial.print(data): выводит данные в последовательный порт.
  9. Serial.println(data): выводит данные в последовательный порт с добавлением символа новой строки в конце.
  10. attachInterrupt(digitalPin, ISR, mode): устанавливает прерывание на указанном цифровом пине.

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

Основная структура:

Программы на Arduino состоят из глобальных объявлений, функций setup() и loop().

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

Функция setup() вызывается один раз при запуске программы и используется для инициализации устройства.

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

Переменные

 Arduino поддерживает различные типы переменных, такие как целочисленные (int), дробные (float), символьные (char) и логические (boolean). Переменные могут быть объявлены глобально или внутри функций.

Что такое переменная:

Переменная — это контейнер, который хранит значение.

В Arduino переменные используются для хранения временной или постоянной информации, такой как числа, текстовые строки и логические значения (true/false).

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

Объявление переменной: перед использованием переменной в Arduino, необходимо объявить ее. Для объявления переменной в Arduino используется следующий синтаксис:

тип_данных имя_переменной;

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

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

НазваниеВесДиапазон чиселОсобенность
boolean1 байт0 или 1Логическая переменная может принимать значение true (1) или false(0)
char1 байт-128…127Хранит номер символов из таблицы символов ASCII
byte1 байт0…255 
int2 байт-32768…327667Самый естественный тип данных для машинного понимания
unsigned int2 байт0…65535Смешанный тип
word2 байт0…65535Представляет беззнаковое 16-битное целое число
long4 байта-2147483648… 21474836472 миллиарда чисел от – до +
unsigned4 байта0…4294967295От 0 до 4 миллиардов
float4 байта-3.4E+38…3.4E+38Хранит число с плавающей точкой десятичной дроби, точность 6-7 знаков(пишется число только с точкой 10.2)
double4 байта-1.7E+308…1.7E+308Точнее чем float

Таблицы символов ASCII

Таблицы символов ASCII

Charтип данных для хранения символов, символ указывается в одинарных кавычках

char var = ‘a’;

это целочисленный тип данных, а переменная хранит номер (код) символа в таблице ASCII:

Примеры объявления переменных:

int число; // объявление переменной «число» типа int (целое число)

float плавающее_число; // объявление переменной «плавающее_число» типа float

(число с плавающей точкой)

char символ; // объявление переменной «символ» типа char (символ)

bool булево; // объявление переменной «булево» типа bool (логическое значение)

Присваивание значения переменной: после объявления переменной, вы можете присвоить ей значение с помощью оператора присваивания (=).

 Например:

число = 10; // присвоение переменной «число» значения 10

плавающее_число = 3.14; // присвоение переменной «плавающее_число» значения 3.14

символ = ‘A’; // присвоение переменной «символ» значения ‘A’

булево = true; // присвоение переменной «булево» значения true

Использование переменных: после присваивания значения переменной, вы можете использовать ее в вашей программе. Например, вы можете выполнять математические операции с числами, сравнивать значения переменных и использовать их для управления другими компонентами Arduino.

int a = 5;
int b = 3;
int сумма = a + b; // сохранение суммы в переменную "сумма"
if (a>b) {
    // ваши действия при выполнении условия
}

digitalWrite(13, булево); // управление выводом 13 с помощью значения переменной «булево»

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

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

Константы

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

Константы в программировании — это значения, которые остаются постоянными на протяжении всей программы.

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

В Arduino существует несколько типов констант, которые могут быть использованы в вашей программе:

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

Пример использования целочисленной константы:

   const int LED_PIN = 13// Константа для пина светодиода

  • Вещественные константы используются для хранения чисел с плавающей точкой и имеют тип данных Пример использования вещественной константы:

   const float PI = 3.14// Константа для значения пи

  • Символьные константы используются для хранения отдельных символов и имеют тип данных Пример использования символьной константы:

   const char GREETING = ‘H’// Константа для символа приветствия

  • Строковые константы используются для хранения последовательностей символов и представляют собой массив символов. Пример использования строковой константы:

   const char MESSAGE[] = // Константа для приветственного сообщения

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

   const bool LIGHT_ON = true // Константа для состояния включенного света

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

Условные выражения

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

Пример:

if (условие1) { // выполняется, если условие1 истинно }

else if (условие2) { // выполняется, если условие2 истинно }

else { // выполняется, если ни одно из условий не было истинным }

В языке программирования Arduino условные выражения используются с помощью ключевых слов if, else if и else.

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

  • Ключевое слово if:

if (условие) { // выполняется, если условие истинно }

Пример:

int x=10; if (x > 5) { // Этот блок кода выполнится, так как x больше 5 digitalWrite(LED_PIN, HIGH); }
  • Ключевое слово else if:

if (условие1) { // выполняется, если условие1 истинно } else if (условие2) { // выполняется, если условие2 истинно }

else { // выполняется, если ни одно из условий не истинно }

Пример:

int x=10; if (x > 15) { // Этот блок кода не выполнится, так как x меньше 15 digitalWrite(LED_PIN, HIGH); }

else if (x<5) { // Этот блок кода не выполнится, так как x больше 5 digitalWrite(LED_PIN, LOW); }

else { // Этот блок кода выполнится, так как ни одно из условий не истинно digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); }
  • Ключевое слово else:

if (условие) { // выполняется, если условие истинно } else { // выполняется, если условие ложно }

Пример:

int x=5; if (x>10) { // Этот блок кода не выполнится, так как x меньше 10 digitalWrite(LED_PIN, HIGH); }

else {// Этот блок кода выполнится, так как условие не истинно digitalWrite(LED_PIN, LOW); }

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

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

Циклы

 Циклы позволяют выполнять определенный набор инструкций повторно.

В Arduino используются два основных типа циклов: цикл for и цикл while. Цикл for используется для выполнения определенного количества итераций, в то время как цикл while выполняется, пока условие истинно.

 «For» цикл — это один из самых распространенных типов циклов, используемых в Arduino. Он позволяет повторять определенный блок кода заданное количество раз.

Вот пример использования «for» цикла:

void setup() {
  // инициализация
}
void loop() {
  for(int i=0; i<10; i++) {
    // блок кода, который будет повторяться 10 раз
  }
  // другой код в loop()
}

В этом примере блок кода внутри «for» цикла будет повторяться 10 раз. Значение переменной `i` увеличивается на 1 после каждой итерации цикла.

 «While» цикл выполняет блок кода до тех пор, пока заданное условие остается истинным.

Вот пример использования «while» цикла:

void setup(){
  // инициализация
}
void loop(){
  int i = 0;
  while(i<10){
    // блок кода, который будет повторяться до тех пор, пока i < 10
    i++;
  }
  // другой код в loop()
}

Этот пример выполняет блок кода, пока переменная `i` остается меньше 10. Затем `i` увеличивается на 1 после каждой итерации.

 «Do-while» цикл очень похож на «while» цикл, но он гарантирует выполнение блока кода хотя бы один раз, даже если условие не истинно.

Вот пример использования «do-while» цикла:

void setup() {
  // инициализация
}
void loop() {
  int i=0;
  do {
    // блок кода, который будет выполняться хотя бы один раз
    i++;
  } while(i < 10);
  // другой код в loop()
}

В этом примере блок кода выполняется один раз, а затем проверяется условие.

Если условие выполняется (т.е. `i <10`), блок кода повторяется.

В противном случае цикл завершается.

Циклы предоставляют важный инструмент программирования в Arduino, позволяя повторять блоки кода несколько раз или до выполнения определенного условия. В этой статье мы рассмотрели три основных типа циклов: «for», «while» и «do-while».

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

Функции

 Функции позволяют разбить программу на более маленькие и управляемые блоки кода.

Они могут принимать аргументы и возвращать значения.

Вы можете определить собственные функции и использовать их внутри программы.

int сумма(int a, int b) { return a + b; }

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

  • `setup()`: эта функция выполняется только один раз в начале программы. Здесь происходит инициализация всех необходимых ресурсов, например, настройка пинов ввода-вывода, настройка скорости сериальной связи и других параметров вашего проекта.

Пример использования функции `setup()`:

void setup() {
  // Настройка пинов
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}
  • `loop()`: функция является основным циклом выполнения программы Arduino. Она выполняется бесконечное количество раз после завершения функции `setup()`. Здесь вы можете разместить основной код вашего проекта, который будет выполняться постоянно. Например, считывание датчиков или управление актуаторами.

Пример использования функции `loop()`:

void loop() {
  // Чтение значения с датчика и установка состояния светодиода
  int sensorValue=analogRead(A0);
  digitalWrite(LED_BUILTIN, sensorValue>500?HIGH:LOW);
}
  • `pinMode()`: функция `pinMode()` используется для настройки режима работы пина (ввод или вывод данных). Это позволяет установить режим работы каждого пина, чтобы адаптировать его под нужды вашего проекта.

Пример использования функции `pinMode()`:

void setup() {
  // Настройка пинов: пин 2 как вход, пин 3 как выход
  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
}
  • `digitalRead()` и `digitalWrite()`: эти функции позволяют считывать и изменять состояние цифрового пина. `digitalRead()` возвращает текущее состояние пина (HIGH или LOW), а `digitalWrite()` устанавливает состояние пина в HIGH или LOW.

Пример использования функций `digitalRead()` и `digitalWrite()`:

void loop() {
  // Считывание состояния кнопки с пина 2 и установка его на пин 3
  int buttonState=digitalRead(2);
  digitalWrite(3, buttonState);
}
  • `analogRead()` и `analogWrite()`: Эти функции используются для работы с аналоговыми пинами. `analogRead()` считывает аналоговое значение с пина (0-1023), а `analogWrite()` устанавливает аналоговое значение на пин (0-255).

 Пример использования функций `analogRead()` и `analogWrite()`:

void loop() {
  // Считывание значения с аналогового пина и установка яркости светодиода
  int sensorValue=analogRead(A0);
  analogWrite(3, sensorValue / 4);
}

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

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

Что такое библиотеки в Arduino

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

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

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

Они предлагают функции для работы с цифровыми и аналоговыми пинами, управления временем, коммуникации по протоколам UART, SPI, I2C и многим другим.

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

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

Эти библиотеки обычно создаются для поддержки работы с конкретными модулями и компонентами. Некоторые из них предоставляют функционал для работы с GPS-модулями, OLED-дисплеями, датчиками температуры, акселерометрами и другими периферийными устройствами.

Про модули можно прочитать тут

 Поиск и установка библиотек: для поиска и установки библиотек в Arduino IDE необходимо открыть «Manage Libraries» (Управление библиотеками) из раздела «Sketch» (Скетч).

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

Использование библиотек в проектах: после установки нужной библиотеки в Arduino IDE, вы можете использовать ее в своем проекте.

Для этого сначала включите библиотеку в коде проекта с помощью директивы «#include«. Затем вы можете вызывать функции из библиотеки для управления компонентами или обработки данных.

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

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

  • Для создания библиотеки в Arduino вы должны быть знакомы с программированием на языке C++.
  • Создайте новую папку и назовите ее так, как вы хотите назвать вашу библиотеку.
  • В этой папке создайте два файла: один с расширением .h (заголовочный файл) и другой с расширением .cpp (файл реализации).
  • Заголовочный файл содержит объявления функций и классов, а файл реализации — определения. Напишите необходимый код для вашей библиотеки в этих файлах в соответствии с требованиями вашего проекта.
  • После этого вы можете заархивировать папку с вашей библиотекой и импортировать ее в Arduino IDE через меню «Скетч» -> «Импортировать библиотеку».

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

Включите библиотеку в вашем коде с помощью директивы #include <имя_библиотеки.h>.

Теперь вы можете создавать объекты из классов вашей библиотеки и вызывать их методы в вашем коде.

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

Популярные библиотеки в Arduino: Adafruit GFX и Adafruit SSD1306 — эти библиотеки позволяют вам работать с графическими дисплеями типа OLED с помощью простых функций и методов.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *