Синтаксис Ардуино основан на языке программирования C++. Он довольно прост и понятен даже для начинающих. Вот некоторые ключевые моменты об ардуиновском синтаксисе:
Функция `void setup()` вызывается один раз при запуске Ардуино. Внутри этой функции обычно выполняется настройка пинов ввода-вывода и других начальных установок.
`void loop()` вызывается бесконечное количество раз после выполнения.
`setup()` внутри этой функции обычно размещается основной код, который будет выполняться повторно и повторно.
- `pinMode(pinNumber, mode)` — устанавливает режим работы пина (ввод или вывод).
- `digitalWrite(pinNumber, value)` — устанавливает состояние вывода пина (HIGH или LOW).
- `digitalRead(pinNumber)` — считывает состояние ввода с пина (HIGH или LOW).
Обработка событий:
`if` и `else` — используются для выполнения кода в зависимости от условия.
`for` и `while` — используются для выполнения кода в цикле, пока выполняется определенное условие.
Встроенные функции и библиотеки:
- `delay(time)` — приостанавливает выполнение программы на указанное количество миллисекунд.
- `analogRead(pinNumber)` — считывает аналоговое значение с пина (от 0 до 1023).
- `Serial.begin(baudRate)` — инициализирует последовательный порт с указанной скоростью передачи данных.
Это лишь небольшой обзор синтаксиса Ардуино. Ардуино предлагает различные функции и возможности для создания разнообразных проектов, от простых светодиодных мигалок до сложных устройств. Больше информации и примеров можно найти в документации и руководствах по программированию Ардуино.
Список команд
- digitalRead(pin): читает состояние цифрового пина (HIGH или LOW) и возвращает соответствующее значение.
- digitalWrite(pin, value): устанавливает состояние цифрового пина в HIGH или LOW в зависимости от значения.
- pinMode(pin, mode): устанавливает режим пина (INPUT, OUTPUT, INPUT_PULLUP).
- analogRead(pin): читает аналоговое значение с указанного пина (0-1023).
- analogWrite(pin, value): устанавливает аналоговое значение (ШИМ) на указанном пине (0-255).
- delay(milliseconds): задерживает выполнение программы на указанное количество миллисекунд.
- Serial.begin(speed): инициализирует последовательную связь с указанной скоростью передачи данных.
- Serial.print(data): выводит данные в последовательный порт.
- Serial.println(data): выводит данные в последовательный порт с добавлением символа новой строки в конце.
- attachInterrupt(digitalPin, ISR, mode): устанавливает прерывание на указанном цифровом пине.
Это основные команды для работы с Arduino, их можно комбинировать и использовать для создания различных проектов. Если у вас есть конкретные вопросы по какой-то из команд, не стесняйтесь спрашивать!
Основная структура:
Программы на Arduino состоят из глобальных объявлений, функций setup() и loop().
Глобальные объявления используются для определения переменных и объявления библиотек, которые будут использоваться в программе.
Функция setup() вызывается один раз при запуске программы и используется для инициализации устройства.
Функция loop() выполняется бесконечное количество раз и является основной частью программы, где происходит основная логика устройства.
Переменные
Arduino поддерживает различные типы переменных, такие как целочисленные (int), дробные (float), символьные (char) и логические (boolean). Переменные могут быть объявлены глобально или внутри функций.
Что такое переменная:
Переменная — это контейнер, который хранит значение.
В Arduino переменные используются для хранения временной или постоянной информации, такой как числа, текстовые строки и логические значения (true/false).
Использование переменных позволяет нам сохранять данные для дальнейшей обработки и манипуляции.
Объявление переменной: перед использованием переменной в Arduino, необходимо объявить ее. Для объявления переменной в Arduino используется следующий синтаксис:
тип_данных имя_переменной;
Здесь `тип_данных` указывает на тип данных, который будет храниться в переменной, а `имя_переменной` — это имя, которое вы выбираете для вашей переменной.
В таблицы ниже представлены типы данных которые мы будем использовать, в идеале знать их на память, но можно просто сделать закладку этой страницы и подсматривать, со временем вы и так их запомните.
Название | Вес | Диапазон чисел | Особенность |
boolean | 1 байт | 0 или 1 | Логическая переменная может принимать значение true (1) или false(0) |
char | 1 байт | -128…127 | Хранит номер символов из таблицы символов ASCII |
byte | 1 байт | 0…255 | |
int | 2 байт | -32768…327667 | Самый естественный тип данных для машинного понимания |
unsigned int | 2 байт | 0…65535 | Смешанный тип |
word | 2 байт | 0…65535 | Представляет беззнаковое 16-битное целое число |
long | 4 байта | -2147483648… 2147483647 | 2 миллиарда чисел от – до + |
unsigned | 4 байта | 0…4294967295 | От 0 до 4 миллиардов |
float | 4 байта | -3.4E+38…3.4E+38 | Хранит число с плавающей точкой десятичной дроби, точность 6-7 знаков(пишется число только с точкой 10.2) |
double | 4 байта | -1.7E+308…1.7E+308 | Точнее чем float |
Таблицы символов 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 с помощью простых функций и методов.
На начальных этапах мы будем использовать готовые библиотеки.