Arduino — функции — биты и байты
Arduino IDE располагает набором функций, позволяющих выполнять операции на битах и байтах. Можно прочитать значение бита или установить его.
Функции highByte() и lowByte()
Функции highByte() и lowByte() позволяют извлекать старший и младший байт соответственно из сохраненного значения. Если мы объявим переменную как int, ее значение будет храниться в двух байтах. Отправка этого значения через последовательный порт требует отправки старшего и младшего байта.
Функция lowByte() даст нам значение младшего байта, тогда как значение highByte() — старшего байта. Синтаксис команд следующий:
int x; lowByte(x); highByte(х);
Мы вызываем функции с параметром, который является «большим» (многобайтным), но получаем один байт. Здесь возникает вопрос, что вернет функция в случае, когда в качестве параметра передадим четырехбайтную переменную?
Фактически, функции позволяют нам указывать самый старший и самый младший байт. Это означает, что для четырехбайтового числа мы получим первый или четвертый байт. Второй и третий байт напрямую не доступны. Ниже приведен пример использования функций highByte() и lowByte():

int test = 0xABCD; // 16-бит long int test2 = 0xABCDEF98 // 32-бита byte hi, lo; // две переменные 8-бит hi = highByte(test); // hi = 0xAB lo = lowByte(test); // lo = 0xCD. hi = highByte(test2); // hi = 0xAB lo = lowByte (test2); // lo = 0x98.
Функции bitRead() и bitWrite()
Функция bitRead() позволяет прочитать значение определенного бита в указанной переменной. Мы вызываем ее с двумя параметрами. Первый из них — это имя переменной, значение бита которой мы хотим получить, второй — номер бита для чтения.
Отсчет всегда от нуля, то есть у нас есть бит нулевой, первый, второй и т. д. Функция возвращает значение LOW или HIGH.
Функция bitWrite() позволяет записать определенный бит. Вызывается с тремя параметрами, первый из них — это переменная, второй — это номер бита, а третий — это информация о том, что бит необходимо установить (HIGH) или сбросить (LOW). Примеры использования bitRead() и bitWrite():
byte x=0xF0; // в двоичном 11110000 bitRead(x,3); // функция возвращает LOW bitRead(x,7); // функция возвращает HIGH bitWrite(x,1,HIGH); // x = 11110010 bitWrite(x,7,LOW); // x = 01110010
Битовые операции часто используются во время программирования для установки или считывания состояния регистров или выводов на основе сохраненных или переданных данных.
Функции bitSet() и bitClear()
Альтернативным способом изменения состояния (значения) бита для функции bitWrite() — функции bitSet() и bitClear(). В функции bitWrite() в качестве параметра мы задаем установить или сбросить бит. Используя одну из функций bitSet () или bitClear (), мы явно определяем, хотим ли мы, чтобы бит был установлен или сброшен. Вот несколько примеров использования функций bitSet () и bitClear ():
byte a=0xAA; // в двоичном виде 10101010 bitSet(a,6); // а = 11101010 bitClear(а,7); // а = 01101010 bitClear(а,7); // а = 01101010 bitClear(а,6); // а = 00101010 bitSet(a,7); // а = 10101010
Функция bit()
Функция бит () вычисляет значение указанного бита. Ниже примеры:
byte x; x = bit (0); // x = 1 x = bit (2); // x = 4 x = bit (4); // x = 16 x = bit (7); // x = 128