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

Подробно Arduino язык программирования для начинающих представлен в таблице далее. Микроконтроллер Arduino программируется на специальном языке программирования, основанном на C/C ++. Язык программирования Arduino является разновидностью C++, другими словами, не существует отдельного языка программирования для Arduino. Скачать книгу PDF можно в конце страницы.

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

Подробный справочник языка Ардуино

Язык можно разделить на четыре раздела: операторы, данные, функции и библиотеки.

Язык ArduinoПримерОписание

Операторы

setup()void setup()
{
pinMode(3, INPUT);
}
Функция используется для инициализации переменных, определения режимов работы выводов на плате и т.д. Функция запускается только один раз, после каждой подачи питания на микроконтроллер.
loop()void loop()
{
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
delay(1000);
}
Функция loop крутится в цикле, позволяя программе совершать вычисления и реагировать на них. Функции setup() и loop() должны присутствовать в каждом скетче, даже если эти операторы в программе не используются.

Управляющие операторы

if
if (x > 100) digitalWrite(3, HIGH);
if (x < 100) digitalWrite(3, LOW);
Оператор if используется в сочетании с операторами сравнения (==, !=, <, >) и проверяет, достигнута ли истинность условия. Например, если значение переменной x больше 100, то включается светодиод на выходе 13, если меньше — светодиодвыключается.
if..else
if (x > 100) digitalWrite(3, HIGH);
else digitalWrite(3, LOW);
Оператор else позволяет cделать проверку отличную от указанной в if, чтобы осуществлять несколько взаимо исключающих проверок. Если ни одна из проверок не получила результат ИСТИНА, то выполняется блок операторов в else.
switch…case
switch (x)
{
case 1: digitalWrite(3, HIGH);
case 2: digitalWrite(3, LOW);
case 3: break;
default: digitalWrite(4, HIGH);
}
Подобно if, оператор switch управляет программой, позволяя задавать действия, которые будут выполняться при разных условиях. Break является командой выхода из оператора, default выполняется, если не выбрана ни одна альтернатива.
forvoid setup()
{
pinMode(3, OUTPUT);
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(3, i);
delay(10);
}
}
Конструкция for используется для повторения операторов, заключенных в фигурные скобки. Например, плавное затемнение светодиода. Заголовок цикла for состоит из трех частей: for (initialization; condition; increment) — initialization выполняется один раз, далее проверяется условие condition, если условие верно, то выполняется приращение increment. Цикл повторяется пока не станет ложным условие condition.
whilevoid loop()
{
while (x < 10)
{
x = x + 1;
Serial.println(x);
delay(200);
}
}
Оператор while используется, как цикл, который будет выполняться, пока условие в круглых скобках является истиной. В примере оператор цикла while будет повторять код в скобках бесконечно до тех пор, пока x будет меньше 10.
do…whilevoid loop()
{
do
{
x = x + 1;
delay(100);
Serial.println(x);
}
while (x < 10);
delay(900);
}
Оператор цикла do…while работает так же, как и цикл while. Однако, при истинности выражения в круглых скобках происходит продолжение работы цикла, а не выход из цикла. В приведенном примере, при x больше 10 операция сложения будет продолжаться, но с паузой 1000 мс.
break
continue
switch (x)
{
case 1: digitalWrite(3, HIGH);
case 2: digitalWrite(3, LOW);
case 3: break;
case 4: continue;
default: digitalWrite(4, HIGH);
}
Break используется для принудительного выхода из циклов switch, do, for и while, не дожидаясь завершения цикла.
Оператор continue пропускает оставшиеся операторы в текущем шаге цикла.

Синтаксис

;
(точка с запятой)

digitalWrite(3, HIGH);
Точка с запятой используется для обозначения конца оператора. Забытая в конце строки точка с запятой приводит к ошибке при компиляции.
{}
(фигурные скобки)
void setup()
{
pinMode(3, INPUT);
}
Открывающая скобка “{” должна сопровождаться закрывающей скобкой “}”. Непарные скобки могут приводить к скрытым и непонятным ошибкам при компиляции скетча.
//
(комментарий)
x = 5; // комментарийКомментарии используются для напоминания, как работает программа. Они игнорируются компилятором и не экспортируются в процессор, не занимая место в памяти микроконтроллера.
#define#define ledPin 3Директива #define позволяет дать имя константе. Директива служит исключительно для удобства и улучшения читаемости программы.
#include// библиотека для серво
#include <Servo.h>
Директива #include используется для включения сторонних библиотек в скетч. Обратите внимание, что директивы #include и #define, не требуют точки запятой.

Типы данных

booleanboolean val = false;Переменная boolean может принимать значение — true или false. Каждая переменная типа boolean занимает один байт в памяти микроконтроллера.
char// оба значения эквивалентны
char val = ‘A’;
char val = ’65’;
Тип данных char хранит символьное значение и занимает в памяти 1 байт. Символы пишутся в одинарных кавычках, например: ‘A’, но в памяти символы хранятся в виде чисел.
bytebyte val = 255;byte — без знаковый тип данных для хранения чисел в диапазоне от 0 до 255. Переменная занимает в памяти 1 байт.
intint val = 32767;Тип данных для хранения целых чисел. Переменная типа int хранит 16-битные значения в диапазоне от -32768 до 32767.
unsigned intunsigned int val = 65535;Переменная типа unsigned int также может хранить двухбайтовые значения. Но вместо отрицательных чисел хранит только положительные значения в большом диапазоне от 0 до 65535.
floatfloat val = 25.1547;Переменная типа float служит для хранения чисел с десятичным разделителем. Числа с плавающей точкой позволяют более точно описать аналоговые величины, чем целые числа. Точность дробных чисел составляет 6-7 знаков — это общее количество цифр, а не количество цифр после запятой.

Программирование Arduino намного проще и понятнее, чем язык C++.

Например.

На языке программирования Arduino включить в скетче последовательный порт на скорости 9600 бит в секунду можно всего лишь одной строчкой:

Serial.begin(9600);

При использовании C/C++ нам бы пришлось долго разбираться с документацией на микроконтроллер и написать в скетче нечто подобное:

UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8;
UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1);
sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0);
sbi(UCSR0B, RXCIE0);

1 Star2 Stars3 Stars4 Stars5 Stars (12 votes, average: 4,92 out of 5)
Загрузка...

2 комментариев для “Язык программирования Arduino C++

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

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