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-битный размер.

Полезные материалы