Уроки технологии
Технология Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Arduino Brief

1. Что такое язык Arduino?

Язык Arduino — это подмножество C/C++. Говоря «программирование на Arduino», мы программируем не саму плату Arduino, а микроконтроллер внутри платы. Например, в Arduino Uno установлен микроконтроллер AtMega328p.

Компилятор, используемый для преобразования кода в объектные файлы, — avr-g++. Затем программа под названием avrdude используется для загрузки программы в микроконтроллер Arduino.

2. Ограничения C++

Несмотря на то, что язык Arduino является подмножеством C++, мы не можем использовать все функции C++ (например, STL-библиотеку). Но мы можем получить некоторую функциональность С++, используя внешний библиотеки.

3. Объектно-ориентированное программирование на языке Arduino

Даже если многие возможности C++ недоступны, вы все равно можем использовать классы!

4. Библиотека Arduino.h

Прежде чем ваш код будет отправлен компилятору, среда Arduino автоматически добавит библиотеку «Arduino.h» вверху вашего кода, если вы не сделали этого сами.

#include <Arduino.h> 

Эта библиотека содержит все функции Arduino (digitalWrite, AnalogRead и т. д.) и подбиблиотеки (Serial, Wire и т. д.). Весь код со всеми включенными библиотеками является открытым и доступен на GitHub.

5. Начало выполнения программы

Обычно программа C/C++ начинает свое выполнение с функции main(). Но в программе Arduino, такого понятия, как функция main(), не существует. Фактически у вас есть две обязательные функции, которые вам нужно реализовать: setup() и loop(). Функция setup() будет вызываться только один раз, как только программа начнет выполнение. После этого функция loop() будет вызываться бесконечно.

void setup() 
{ 
    // код, помещенный здесь, выполняется один раз при старте программы 
} 

void loop() 
{ 
    // код, помещенный здесь, выполняется бесконечно.
}

// Здесь нет функции main()!

6. Инициализация переменных в Arduino

В C/C++, если вы объявляете переменную, не инициализируя ее, ее значение может быть всем, чем угодно. В языке Arduino, как только вы объявляете переменную, Arduino инициализирует ее нулем. Конечно, это будет зависеть от типа вашей переменной. Для целых чисел значение будет равно 0. Для чисел с плавающей запятой — 0,0. А для указателей вы получаете просто NULL-указатель.

int i; 
float f; 
void setup() 
{ 
    Serial.begin(9600); 
    Serial.println(i); // --> значение будет 0 
    Serial.println(f); // --> значение будет 0.00 
} 

void loop() {}

7. Автоматическое создание прототипа

В C/C++ прототипы обычно создаются в файле .h, который вы включаете в свои программы, а реализация кода записывается в файлах .c или .cpp. Для Arduino вы можете сделать то же самое. Но если вы не объявляете прототип функции, Arduino автоматически сделает это за вас, прежде чем передать код компилятору. Для новичков: если вы напишете функцию A и другую функцию B после функции A, то функция A не сможет достичь функции B. Вы получите ошибку компиляции, если вызовете функцию B внутри функции A. Если вы не создадите прототип функции для обеих функций, который вы включаете в начало файла (или в отдельный файл .h). Это то, что обычно приходится делать при написании кода на C/C++. Arduino исправит эту ошибку за вас. Но будьте осторожны: генерация прототипа не является на 100% надежной в зависимости от того, как вы пишете свой код, так что… вам все равно лучше начать изучать прототипы функций.

void function_A() 
{ 
    function_B(); 
    // ошибка компиляции в C++, но без ошибки в Arduino! 
} 

void function_B() 
{ 

} 

void setup() 
{ 
    function_A(); 
} 

void loop() {}

8. Логические, байтовые и другие специфические типы Arduino

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

9. Организация папок

С Arduino вы не создаете программу, вы создаете «sketch». Основной файл, содержащий функции setup() и loop(), имеет расширение .ino. Все остальные файлы могут иметь расширения .c, .cpp, .h. Чтобы открыть ««sketch»» в Arduino IDE, знайте, что вам нужно создать папку с именем, точно таким же, как файл .ino, и поместить все свои файлы в эту папку. Например, если ваш основной файл называется ArduinoTest.ino, он должен находиться в папке «ArduinoTest». Библиотеки, которые вы устанавливаете, должны быть помещены в папку «library» вашей глобальной папки Arduino (обычно создается в вашем домашнем репозитории после установки Ардуино IDE).

10. IDE для написания кода на языке Arduino.

Существуют такие IDE для разработки программ с использованием языка Arduino:

Заключение

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

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