// Definição dos pinos que representam os bits (b0 = menos significativo)
int b0 = 2;
int b1 = 3;
int b2 = 4;
int b3 = 5;
void setup() {
// Configura cada pino como saída digital
pinMode(b0, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(b3, OUTPUT);
// Inicia comunicação serial para exibir valores no monitor
Serial.begin(9600);
}
void loop() {
// Laço que conta de 0 até 15 (4 bits → 2^4 = 16 valores)
for(int valor = 0; valor < 16; valor++){
// Envia cada bit do número para um pino correspondente
// bitRead(valor, n) lê o bit "n" do número (0 = LSB)
digitalWrite(b0, bitRead(valor,0)); // bit 0
digitalWrite(b1, bitRead(valor,1)); // bit 1
digitalWrite(b2, bitRead(valor,2)); // bit 2
digitalWrite(b3, bitRead(valor,3)); // bit 3
// Mostra o valor decimal no monitor serial
Serial.print("Decimal: ");
Serial.print(valor);
// Mostra o valor em binário (do mais significativo para o menos)
Serial.print(" Binario: ");
Serial.print(bitRead(valor,3));
Serial.print(bitRead(valor,2));
Serial.print(bitRead(valor,1));
Serial.println(bitRead(valor,0));
// Espera 0,5 segundo antes de ir para o próximo número
delay(500);
}
}
/* bitRead(valor,0) → b0 → LSB
bitRead(valor,3) → b3 → MSB
0 → bit mais à direita (LSB)
3 → bit mais à esquerda (MSB)
posição: 3 2 1 0
bits: b3 b2 b1 b0
significa LSB (Least Significant Bit)?
LSB = bit menos significativo
bitRead(valor, posição)
valor → número que você quer analisar
posição → qual bit você quer ler (começando do 0)
https://chatgpt.com/c/69e43982-e054-83e9-9942-d652d138e9a4
*/