Конвертация boolean в byte

Anton
Offline
Зарегистрирован: 24.05.2011

Ребят я собираю значение LOW или HIGH с ноги ардуины так: 

void loop(){ 
for(int i=0; i<=7; i++){ 
t = digitalRead(IN_DATA); 
} 
}

ВОПРОС: Подскажите как собрать 8 значений HIGH или LOW в паеременную типа байт?

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

на ум приходит изврат с массивом и значениями его) 8 проверок если, - если последнее значение 1 то х+=128, если предпоследнее значение тоже равно 1 то х+=64, и т.д. можно с разных сторон подходить) В сумме получим числовое значение, а его можно уже в любой тип перевести.

Думаю есть проще только пока не вспомнил

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Еще можно с этим  << http://arduino.cc/en/Reference/Bitshift 

пишу без проверки

bitMassiv[]; массив булеан

int z; 

int x;

for(int i=0;i<7;i++){ /*от младшего ко старшему разряду, от 0 значения массива до 7го, где 7 ячейка это будет старший бит, который равен числовому значению 128*/

if (bitMassiv[i] == 1){

x=1<<i;
z+=x;

}

ну а дальше обычный перевод y=byte(z);

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

В теории работать будет, завтра на работе перепроверю 

San4eS
Offline
Зарегистрирован: 02.05.2011

Adessit пишет:

if (bitMassiv[i] == 1){

x=1<<i;
z+=x;

}

ну а дальше обычный перевод y=byte(z);

Можно проще:

byte x;

for(int i=0;i<7;i++){
 if (bitMassiv[i] == 1){
  x=x|(1<<i);
 }
}