| Ваш IP: 18.232.38.214 | Online(23) - гости: 18, боты: 5 | Загрузка сервера: 1.25 ::::::::::::

Функции highByte() и lowByte() (Arduino)

Функции highByte() и lowByte() позволяют извлекать старший и младший байт из числа int.

Если мы объявим переменную как int, ее значение будет храниться в двух байтах.

Функция lowByte() даст нам значение младшего байта, тогда как значение highByte() — старшего байта.

Пример:

void setup(){
  Serial.begin(9600);

  long x = 10000; // если число > 255 разбиваем на 2 байта (макс. 65536)
  byte hi = highByte(x); // старший байт
  byte low = lowByte(x); // младший байт

  Serial.print(hi);
  Serial.print(" ");
  Serial.print(low);

  int y = (hi<<8)+low; // собираем число из 2-х байтов
  // y = hi *256 + low 

  Serial.print(" ");
  Serial.print(y);
} 

void loop(){}

Если необходимо разложить на байты большое число, например unsigned long то можно воспользоваться следующим примером:

void setup(){
  Serial.begin(9600);

  unsigned long x = 100000000; // разбиваем число на 4 байта (макс. 4,294,967,295)
  uint8_t x0 = ((x >> 0) & 0xFF);  // 00 00 00 FF
  uint16_t x1 = ((x >> 8) & 0xFF); // 00 00 FF 00
  uint32_t x2 = ((x >> 16) & 0xFF);// 00 FF 00 00
  uint32_t x3 = ((x >> 24) & 0xFF);// FF 00 00 00

  Serial.print(x0);
  Serial.print(" ");
  Serial.print(x1);
  Serial.print(" ");
  Serial.print(x2);
  Serial.print(" ");
  Serial.print(x3);

unsigned long y = (x3 << 24) + (x2 << 16) + (x1 << 8) + x0; // собираем число из 4-х байтов
  
    Serial.print(" ");
    Serial.print(y);
} 

void loop(){
}

int8_t char  от -128 до 127
uint8_t byte, unsigned char   от 0 до 255
int16_t int от -32768 до 32767
uint16_t unsigned int, word  от 0 до 65535
int32_t long от  -2147483648 до 2147483647
uint32_t unsigned long от 0 до 4294967295

 

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Электрический фонарь на свинцово-кислотном герметичном аккумуляторе с зарядным устройством

    Свинцово-кислотные герметичные аккумуляторные батареи самые дешевые в настоящее время. Электролит в их находится в виде геля, поэтому аккумуляторы допускают работу в любом пространственном положении и не производят никаких вредных испарений. Им свойственна большая долговечность, если не допускать глубокого разряда. Теоретически они не боятся перезаряда, однако злоупотреблять этим не следует. Подзарядку …Подробнее...
  • Простой осциллограф на Arduino Nano (Uno)

    Простой осциллограф на Arduino Nano (Uno)

    На основе Arduino Nano (Uno) можно собрать простой осциллограф имеющий минимальный функционал. Максимальная частота сигнала которую может отобразить экран осциллографа 20 кГц (7 импульсов на ширину экрана), максимальное входное напряжение 5 В. Осциллограф управляется четырьмя кнопками: Кнопка «HOLD» — режим паузы, кнопками «+» и  «-» можно перемещать изображение сигнала вправо …Подробнее...
  • Расчет емкости балластного конденсатора для бестрансформаторного блока питания

    Расчет емкости балластного конденсатора для бестрансформаторного блока питания

    Бестрансформаторные источники питания с гасящим конденсатором удобны своей простотой, имеют малые габариты и массу, но не всегда применимы из-за гальванической связи выходной цепи с сетью 220 В. В бестрансформаторном источнике питания к сети переменного напряжения подключены последовательно соединенные конденсатор и нагрузка. Неполярный конденсатор, включенный в цепь переменного тока, ведет себя как …Подробнее...
  • Регулируемый источник питания на 24В/2А

    На рисунке представлен простой регулируемый источник питания, он достаточно надежный и выдает от 0,7 до 24В постоянное регулируемое напряжение при максимальном токе до 2А. P1 — регулировка тока P2 — регулировка напряжения Т1 — можно выбрать любой трансформатор основываясь на необходимом Вам максимальном напряжении и выходном токе, для этого можете …Подробнее...
  • СВЕТОРЕГУЛЯТОР ДЛЯ ЛЮСТРЫ ИЗ ЧЕТЫРЕХ ЛАМП

    Сетевой электронный регулятор комнатного освещения, выполненный на полупроводниках, общей мощностью до 250 Вт  предназначен для работы в условиях умеренно холодного климата при температуре окружающей среды от +10 до +40 °С, относительной влажности воздуха до 80 % при температуре 22 °С и пониженном  атмосферном давлении до 200 мм рт.ст. Светорегулятор обеспечивает …Подробнее...