word()
Функция word() приводит значение к типу word или собирает 16-битное число из старшего h и младшего l байтов — удобно при работе с датчиками и протоколами.
Полная статья
Описание
word() — это функция преобразования типов. Она умеет делать две разные вещи: привести произвольное значение к типу word, либо собрать одно 16-битное число из двух отдельных байтов — старшего и младшего. Второй вариант особенно востребован при работе с датчиками и протоколами связи, где многобайтные числа передаются побайтово.
Синтаксис
word(x)word(h, l)(word) x
Параметры
x: значение любого типа, которое нужно привести кword.h: старший байт (биты 15–8) результирующего слова.l: младший байт (биты 7–0) результирующего слова.
Возвращает
Значение типа word — беззнаковое 16-битное целое (от 0 до 65535).
Где применяется
- Разбор данных датчиков. Многие датчики (температуры, давления, дальности) передают 16-битное измерение двумя байтами через I²C или SPI. Функция
wordпозволяет мгновенно собрать их в одно число. - Работа с бинарными протоколами. Если устройство присылает старший и младший байты по Serial, удобно объединить их через
word(h, l)вместо ручного сдвига битов. - Приведение типов. Когда нужно явно указать компилятору, что переменная должна трактоваться как
word, используется формаword(x).
Практические замечания
- Вариант
word(h, l)— это короткая запись вместо(uint16_t)((h << 8) | l). Результат тот же, но код читается проще. - Следите за порядком байтов: если перепутать
hиl, результат будет численно другим, и ошибку легко пропустить. Уточняйте в документации на конкретный датчик или протокол, какой байт приходит первым. - Тип
wordбеззнаковый. Если исходное значение отрицательное или выходит за диапазон 0–65535, результат будет усечён или обёрнут по модулю 65536. - При отладке удобно выводить результат через
Serial.println()— это поможет быстро убедиться, что байты собраны в правильном порядке. - На платах с 8-битными AVR-микроконтроллерами
wordиunsigned int— одно и то же (16 бит). На платах с 32-битными процессорамиunsigned intшире, поэтому типwordостаётся надёжным способом явно зафиксировать 16-битный размер.