LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: almamater em 05 de Janeiro de 2014, 19:55
-
Estou com um problema que deve ser muito básico de resolver, basicamente quero enviar em formato BYTE algo como (exemplo) B11111100, acontece que os estados de 1 e 0 são verificados em tempo real e não os posso definir previamente, como tal tenho de construir o BYTE a enviar a partir de 8 estados de variáveis existentes. (conforme o estado de cada variável quero controlar um equipamento a que cada uma está associada).
Usando a função BitWrite (que não sei se estou a usar bem) consigo juntar tudo mas os bits com '0' desaparecem:
int Equipamentos[8];
byte dataOut;
void setup(){
Serial.begin(9600);
Equipamentos[0] = 1;
Equipamentos[1] = 1;
Equipamentos[2] = 1;
Equipamentos[3] = 1;
Equipamentos[4] = 1;
Equipamentos[5] = 1;
Equipamentos[6] = 0;
Equipamentos[7] = 0;
for (int i=0; i <= 7; i++){
Serial.print("Posicao Array: ");
Serial.print(i);
Serial.print("-> ");
Serial.println(Equipamentos[i]);
bitWrite(dataOut, i, Equipamentos[i]);
}
Serial.println("-----------");
Serial.println(dataOut,BIN);
Serial.println("-----------");
}
void loop(){
delay(5000);
}
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg802.imageshack.us%2Fimg802%2F5507%2Fzxwf.png&hash=503c8c34a0ba0d8d9da7013addd40297e89e9135) (http://imageshack.us/photo/my-images/802/zxwf.png/)
Estou a fazer algo de errado? Queria que o resultado final (a enviar depois pelo shiftout) fosse: 11111100 e não 111111
Deve ter a ver com os bits mais significantes ou algo assim mas não sei..
-
:o ups, parece que o Serial.print é que não mostra os '0's, pois testei o shiftout e os bits são todos enviados corretamente :)
-
Não mete os zeros porque os teus zeros são nas posições mais significativas, e ele não faz padding dos zeros extra, acho eu.