Ajuda em Shiftout

Olá,

Estou com um problema que deve ser muito básico mas não sei como resolver, basicamente quero enviar em formato BYTE algo como (exemplo) B10011011, 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).

Exemplo do que pretendo fazer mas que não está a funcionar (na parte de criar o byte DataOut):

//ShiftRegister 74HC595:
int latchPin = 2;  
int clockPin = 3; 
int dataPin = 1;  

//8 Varáveis
int varA;
int varB; 
int varC;
int  varD;
int varE;
int varF; 
int varG;
int varH;
byte DataOut;

void setup() {

varA=1;
varB=0;
varC=0;
varD=1;
varE=1;
varF=0;
varG=1;
varH=1;

//TESTE:
DataOut=('B' && varA && varB && varC && varD && varE && varF &&varG && varH );
digitalWrite(latchPin, 0);

shiftOut(dataPin, clockPin, DataOut);   
digitalWrite(latchPin, 1); 
}

void loop(){}

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  int i=0; 
  int pinState; 
  pinMode(myClockPin, OUTPUT);  
  pinMode(myDataPin, OUTPUT); 
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0); 
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }

    else {      
      pinState= 0; 
    }
    digitalWrite(myDataPin, pinState);  
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
  } 
  digitalWrite(myClockPin, 0);

  return;               
}

Alguém me pode ajudar p.f.

Use bitWrite,
você só precisa criar um variável byte e usa-la

http://arduino.cc/en/Reference/BitWrite

Obrigado pela dica.

Já melhorei mas agora não sei se a função está bem feita pq o resultado que tenho é apenas dos ‘1’ e os ‘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);
}

Estou a fazer algo de errado? Queria que o resultado final (a enviar depois pelo shiftout) fosse: 11111100 e não 111111

O que está gravando é esse 111111, pois o bits 5, 6, e 7 são os mais significantes, você tem que ler assim [7][6][5][4][3][2][1][0] e como os zeros estão nos bits mais significantes, o print com BIN não mostra os zeros

Ah eu testei enviar através de shiftout e de facto os bits são enviados corretamente, o Serial.print é que não mostra os '0's, pensei que não estivessem tb a ser enviados mas sendo assim parece resolvido o problema. Obrigado.