collapse

* Posts Recentes

Ziphius: The Aquatic Drone por senso
[Hoje às 17:28]


Relógio com Arduino UNO. por Joanito
[Hoje às 16:29]


VS-Solar Challenge 2018 por TigPT
[Ontem às 20:48]


BostonDynamics - Vai uma mãozinha? por Njay
[Ontem às 20:25]


Formatação de Arduinos (Uno, Nuovemila, Diecimila) por jm_araujo
[Ontem às 18:57]


Mais um avanço na pele sintetica para robots e nao só... por Hugu
[20 de Fevereiro de 2018, 18:30]


Como ver se uma tomada tem a terra ligada? por LVirtual
[20 de Fevereiro de 2018, 15:08]


Via Verde - Identificador por TigPT
[17 de Fevereiro de 2018, 09:56]


Estação de soldadura da Banggood, será boa compra ? por vasco
[16 de Fevereiro de 2018, 17:47]


Desenho PCBs 80's por senso
[16 de Fevereiro de 2018, 14:35]

Autor Tópico: BitWrite para Shiftout  (Lida 809 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.547
    • GrcByte - Projectos
BitWrite para Shiftout
« 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:

Código: [Seleccione]
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);
}



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..


Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.547
    • GrcByte - Projectos
Re: BitWrite para Shiftout
« Responder #1 em: 05 de Janeiro de 2014, 20:32 »
 :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 :)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.464
  • Helpdesk do sitio
Re: BitWrite para Shiftout
« Responder #2 em: 05 de Janeiro de 2014, 20:35 »
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.
Avr fanboy