Оглавление
Это - список инструментов из Arduino-фреймворка. Функции из библиотек C/C++ смотри в отдельном уроке
Константы #
| Константа | Смысл | Значение |
|---|---|---|
PI |
pi | 3.1415926 |
HALF_PI |
pi/2 | 1.5707963 |
TWO_PI |
pi*2 | 6.2831853 |
DEG_TO_RAD |
pi/180 | 0.0174532 |
RAD_TO_DEG |
180/pi | 57.295779 |
EULER |
e | 2.7182818 |
Функции #
Сравнение #
min #
min(a, b)
Вернёт меньшее из двух значений:
int x = min(4, 9); // x == 4
Может быть реализовано как:
- Макрос (например на AVR) - работает для любых типов данных. Не рекомендуется подавать выражение как аргумент, т.к. оно будет вычислено несколько раз
- Шаблонная функция (например на ESP8266/32) - аргументы обязательно должны быть одного типа данных. Передача выражений и функций как аргументов не влияет на скорость выполнения
max #
max(a, b)
Вернёт большее из двух значений:
int x = max(4, 9); // x == 9
Может быть реализовано как:
- Макрос (например на AVR) - работает для любых типов данных. Не рекомендуется подавать выражение как аргумент, т.к. оно будет вычислено несколько раз
- Шаблонная функция (например на ESP8266/32) - аргументы обязательно должны быть одного типа данных. Передача выражений и функций как аргументов не влияет на скорость выполнения
constrain #
constrain(x, min, max)
Вернёт значение
x, ограниченное минимальным min (включительно) и максимальным max (включительно):
int x = constrain(10, 4, 9); // x == 9
- Это макрос: не рекомендуется подавать выражение как аргумент, т.к. оно будет вычислено несколько раз
Вычисление #
sq #
sq(x)
Вернёт квадрат
x (x*x).
- Это макрос: не рекомендуется подавать выражение как аргумент, т.к. оно будет вычислено несколько раз
map #
long map(long x, long in_min, long in_max, long out_min, long out_max)
Переведёт число
x из диапазона от in_min до in_max в диапазон от out_min до out_max по линейному закону и вернёт результат:
int x = map(2, 0, 5, -100, 100); // x == -20
- Примечание для ESP8266/32:
in_minне должен быть равенin_max- будет деление на 0 и МК перезагрузится. Значения нужно контролировать самостоятельно, функция этого не делает.
radians #
radians(deg)
Перевести градусы в радианы, вернёт результат
float rad = radians(180); // 3.14
degrees #
degrees(rad)
Перевести радианы в градусы, вернёт результат
int deg = degrees(3.14); // 179
Случайные числа #
Урок по случайным числам
random #
long random(long max)long random(long min, long max)
Получить псевдослучайное число (каждый вызов - новое число) в диапазоне:
- От
0доmax - 1 - От
minдоmax - 1(включая минимум и не включая максимум)
randomSeed #
void randomSeed(unsigned long seed)
Установить стартовое значение для генерации псевдослучайных чисел через
random(). Рекомендуется использовать физически случайные величины, например сигнал с аналогового пина или время с последнего нажатия кнопки человеком.Битовая математика #
Урок по битовой математике
highByte #
highByte(x)
Вернёт старший байт из значения:
uint8_t h = highByte(0xabcd); // h == 0xAB
lowByte #
lowByte(x)
Вернёт младший байт из значения:
uint8_t l = lowByte(0xabcd); // h == 0xCD
makeWord #
uint16_t makeWord(uint8_t high, uint8_t low)
Склеит и вернёт 16-битное значение из двух байтов: старший
high и младший low:
uint16_t b = makeWord(0xab, 0xcd); // h == 0xABCD
bit #
bit(b)
Вернёт
2^b, точнее 1 << b:
uint8_t x = bit(3); // x == 0b1000
bitSet #
bitSet(value, bit)
Установит в переменной
value бит под номером bit:
uint8_t x = 0;
bitSet(x, 3); // x == 0b1000
bitClear #
bitClear(value, bit)
Сбросит в переменной
value бит под номером bit:
uint8_t x = 0b1000;
bitClear(x, 3); // x == 0
bitWrite #
bitWrite(value, bit, v)
Запишет в переменную
value бит под номером bit в состояние v (0 или 1):
uint8_t x = 0b1000;
bitWrite(x, 0, 1); // x == 0b1001
bitWrite(x, 3, 0); // x == 0b1
bitRead #
bitRead(value, bit)
Вернёт в значении
value состояние бита под номером bit:
bool v = bitRead(0xff, 3); // v == 1