Mas colega tu estas a carregar isso num int que sao 2 bytes(16bits) e depois mandas escrever no pino esse valor todo!
r0 = bitRead(count,0);
r1 = bitRead(count,1);//r1 é sao 2 bytes
r2 = bitRead(count,2);
A funçao digitalWrite só aceita como argumentos o pino e o valor que pode ser LOW ou HIGH
Syntax
digitalWrite(pin, value)
Parameters
pin: the pin number
value: HIGH or LOW
Returns
none
O que esperas que aconteça aqui:
digitalWrite(5, r0);//r0 é um int que tentas escrever num bit do porto!
digitalWrite(6, r1);
digitalWrite(7, r2);
for ( count=0; count<=7; count++)
{
r0 = bitRead(count,0);
r1 = bitRead(count,1);
r2 = bitRead(count,2);
O resultado final disto vai ser:
r0 = 0;//Em binario é 0b00000000;
r1= 1;//Em binario é 0b00000001;
r2= 2;//Em binario é 0b00000010;
Mas isso acontece internamente nao precisas de correr esse for para atribuires isso!
Fazeres r2 = 2 é a mesma coisa que r2= 0b00000010;