Arduino.Основы.Операторы
https://t.me/HotCheatSheetsetup() — используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д.
Пример:
int buttonPin = 3;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop()
{
// ...
}
loop() — используется для действий с ардуиной. Loop значит цикл.
Пример
int buttonPin = 3;
// setup инициализирует последовательный порт и кнопку
void setup(){
beginSerial(9600);
pinMode(buttonPin, INPUT);
}
// в цикле проверяется состояние кнопки,
// и на последовательный порт будет отправлено сообщение, если она нажата
void loop(){
if (digitalRead(buttonPin) == HIGH)
serialWrite('H');
else
serialWrite('L');
delay(1000);
}
Управляющие операторы
if — проверяет условие и если оно истинно запускает действие в блоке.
Синтаксис:
if (условие)
{
// выполнять действия
}
if...else — проверяет условие1, если ложно, проверяет условие2, если ложно, выполняется блок else.
Синтаксис:
if (условие1) {
// выполнять действие A
} else if (условие2) {
// выполнять действие B
} else {
// выполнять действие C
}
for — используется для повторения блока операторов, заключенных в фигурные скобки.
Синтаксис:
for (инициализация; условие; инкремент){
// операторы выполняющиеся в цикле
}
Пример:
// Затемнение светодиода с использованием ШИМ-вывода
int PWMpin = 10; // Светодиод последовательно с резистором 470 ом на 10 выводов
void setup() {
// настройка не нужна
}
void loop() {
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
switch case — управляет процессом выполнения программы.
Синтаксис:
switch (var) {
case label:
// код для выполнения
break;
case label:
// код для выполнения
break;
default:
// код для выполнения
}
Параметры:
var: переменная, которая вычисляется для сравнения с вариантами в case
label: значение, с которым сравнивается значение переменной
while — вычисляет в цикле непрерывно и бесконечно до тех пор, пока выражение в круглых скобках (), не станет равно логическому ЛОЖНО.
Синтаксис:
while(выражение){
// оператор(ы)
}
Параметры:
выражение - (булевский) C-оператор, который возвращает значение истина или ложь
Пример:
var = 0;
while(var < 200){
// выполнить что-то, повторив 200 раз
var++;
}
do... while — работает так же, как и цикл while, за исключением того, что условие проверяется в конце цикла.
Синтаксис:
do {
// последовательность операторов
} while (проверка условия);
Пример:
do {
delay(50); // подождать, пока датчики стабилизируются
x = readSensors(); // проверить датчики
} while (x < 100);
break — используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию.
Пример:
for (x = 0; x < 255; x ++)
{
digitalWrite(PWMpin, x);
sens = analogRead(sensorPin);
if (sens > threshold){ // выходим из цикла если есть сигнал с датчика
x = 0;
break;
}
delay(50);
}
continue — пропускает оставшиеся операторы в текущем шаге цикла.
Пример:
for (x = 0; x < 255; x ++){
if (x > 40 && x < 120){ // если истина то прыгаем сразу на следующую итерацию цикла
continue;
}
digitalWrite(PWMpin, x);
delay(50);
}
return — прекращает вычисления в функции и возвращает значение из прерванной функции в вызывающую, если это нужно.
Синтаксис:
return;
return значение; // обе формы допустимы
Параметры:
значение: переменная или константа любого типа
Примеры:
int checkSensor(){
if (analogRead(0) > 400) {
return 1;
else{
return 0;
}
}
goto — условное «перемещение» выполнения программы к определенной метке-указателю в самой программе, при этом пропускается весь код до самой метки, а исполняется - после нее.
Синтаксис:
label:
// какой-либо код
goto label; // переходим к метке label
Пример:
for(byte r = 0; r < 255; r++){
for(byte g = 255; g > -1; g--){
for(byte b = 0; b < 255; b++){
if (analogRead(0) > 250){ goto bailout;}
// еще код
}
}
}
Синтаксис
; (точка с запятой) — используется для обозначения конца оператора.
Пример:
int a = 13;
{} (фигурные скобки) — обозначение блока кода, используется в функциях, циклах или условных операторах.
// (одностроковый коментарий) — строки в программе, которые используются для информирования вас самих или других о том, как работает программа.
/* */ (многостроковый коментарий) — строки в программе, которые используются для информирования вас самих или других о том, как работает программа.
Пример:
x = 5; // Это комментарий в одной строке. Все после двойного слэша – комментарий
// до конца строки
/* это многострочный комментарий – используйте его для закоментирования целых кусков кода
if (gwb == 0){ // комментарий в строке допустим внутри многострочного комментария
// но не другой многострочный комментарий
}
// не забывайте «закрывать» комментарии – они должны быть парными!
*/
#define — удобная директива, который позволяет дать имя константе перед тем как программа будет скомпилирована.
Синтаксис:
#define constantName value
Пример:
#define ledPin 3 // компилятор заменит любое упоминание ledPin на занчение 3 во время компиляции
#include — используется для включчения сторонних библиотек в ваш скетч.
Синтаксис:
#include <библиотека>
Арифметические операторы
= (оператор присваивания) — присваивает переменной слева от оператора значение переменной или выражения, находящееся справа.
Пример:
int sensVal; // объявление переменной типа integer senVal = analogRead(0); // присваивание переменной sensVal, значения, считанное с аналогового входа 0
+ (сложение), - (вычитание), * (умножение), / (деление) — возвращают результат выполнения арифметических действий над двумя операндами.
Синтаксис:
result = value1 + value2;
result = value1 - value2;
result = value1 * value2;
result = value1 / value2;
Параметры:
value1: любая переменная или константа
value2: любая переменная или константа
Пример:
y = y + 3; x = x - 7; i = j * 6; r = r / 5;
% (остаток от деления) — Возвращает остаток от деления одного целого (int) операнда на другой.
Синтаксис:
result = dividend % divisor
Параметры:
dividend: делимое
divisor: делитель
Пример:
x = 7 % 5; // x имеет значение 2 x = 9 % 5; // x имеет значение 4 x = 5 % 5; // x имеет значение 0 x = 4 % 5; // x имеет значение 4
Операторы сравнения
== (равно), != (не равно), < (меньше чем), > (больше чем), <= (меньше или равно), >= (больше или равно)
Синтаксис:
x == y //x равно y
x != y //x не равно y
x < y //x меньше чем y
x > y //x больше чем y
x <= y //x меньше чем или равно y
x >= y //x больше чем или равно y
Логические операторы
&& (И) — истина, если оба операнда истина (true).
Синтаксис:
if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) { // считывает состояние двух портов
// ...
}
|| (ИЛИ) — истина, если хотя бы один операнд истина.
Синтаксис:
if (x > 0 || y > 0) {
// ...
}
! (НЕ) — true, если операнд false, и наоборот.
Синтаксис:
if (!x) {
// ...
}
Указатели доступа
* (указатель) — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения — нулевого адреса.
& (ссылка) — простой ссылочный тип, менее мощный, но более безопасный, чем указатель.
Битовые операторы
& (побитовое И) — действует на позиции каждого бита, окружающих выражения независимо от того какой из операндов стоит первым, а какой вторым. Если оба входных бита равны 1, результирующий выходной сигнал равен 1, в противном случае выход равен 0.
| (побитовое ИЛИ) — как и оператор &, оператор | работает независимо с каждым битом окружающих его чисел. Если хотя бы один из этих битов 1, сигнал равен 1, иначе резульат будет 0.
^ (побитовое XOR или исключающее ИЛИ) — похож на оператор |, но с небольшим отличием, вернет 0, если оба бита будут равны 1.
~ (побитовое НЕ) — меняет каждый бит операнда на противоположный: 0 становится 1, а 1 становится 0.
<< (побитовый сдвиг влево), >> (побитовый сдвиг вправо) — заставляют биты левого операнда сдвинуться влево или вправо на то количество позиций, которое указано во втором операнде.
Синтаксис:
переменная << количество_бит
переменная >> количество_бит
Параметры:
переменная - (byte, int, long)
количество_бит - целое число <= 32
Пример:
int a = 5; // в двоичной системе: 0000000000000101
int b = a << 3; // в двоичной системе: 0000000000101000, или 40 в десятичной
int c = b >> 3; // в двоичной системе: 0000000000000101, или снова 5, как было изначально
Составные операторы
++ (инкремент), -- (декремент) — инкрементирует или декрементирует значение переменной
Синтаксис:
x++; // увеличивает значение x на 1 и возвращает старое значение x
++x; // увеличивает значение x на 1 и возвращает новое значение x
x-- ; // уменьшает значение x на 1 и возвращает старое значение x
--x ; // уменьшает x на 1 и возвращает новое значение x
Параметры:
x: целое int или long (беззнаковые типы допускаются)
Примеры:
x = 2; y = ++x; // x имеет значение 3, y содержит 3 y = x--; // x снова имеет значение 2, y по прежнему содержит 3
+= (составное сложение), -= (составное вычитание), *= (составное умножение), /= (составное деление) — осуществляет математическую операцию между двумя переменными.
Синтаксис:
x += y; // эквивалентно выражению x = x + y;
x -= y; // эквивалентно выражению x = x - y;
x *= y; // эквивалентно выражению x = x * y;
x /= y; // эквивалентно выражению x = x / y;
Параметры:
x: переменная любого типа
y: переменная любого типа или константа
Примеры:
x = 2; x += 4; // x содержит 6 x -= 3; // x содержит 3 x *= 10; // x содержит 30 x /= 2; // x содержит 15
&= (составное побитовое И) — оператор составного побитового И (&=) часто употребляется между переменной и константой чтобы перевести отдельные биты переменной в низкий уровень (0).
Синтаксис:
x &= y; // эквивалентно x = x & y;
Параметры:
x: переменная типа char, int или long
y: целочисленная константа либо переменная типа char, int или long
|= (составное побитовое ИЛИ) — оператор составного побитового ИЛИ (|=) часто употребляется между переменной и константой чтобы установить (перевести в 1) отдельные биты переменной.
Синтаксис:
x |= y; // эквивалентно x = x | y;
Параметры:
x: переменная типа char, int или long
y: целочисленная константа либо переменная типа char, int или long