Objetivo de compreensão deste post:
- Sequencia da numeração binária
- Contagem com número limitado de bits
- Efeito do tempo de pressionamento de um botão
- Efeitos de debousing
Abaixo temos um sketch que implementa um contador binário de 4 bits
/*
Objetivo: Escrever um nibble (4 bits) em leds
*/
// cria os "apelidos" para os pinos
#define led_bit_0 10
#define led_bit_1 11
#define led_bit_2 12
#define led_bit_3 13
byte contador=0; // cria uma variável do tipo byte (0 a 255) e iniciliza com valor 0
void escreve_byte (byte x){
if ( x & 0b00000001) digitalWrite(led_bit_0, HIGH); else digitalWrite (led_bit_0, LOW);
if ( x & 0b00000010) digitalWrite(led_bit_1, HIGH); else digitalWrite (led_bit_1, LOW);
if ( x & 0b00000100) digitalWrite(led_bit_2, HIGH); else digitalWrite (led_bit_2, LOW);
if ( x & 0b00001000) digitalWrite(led_bit_3, HIGH); else digitalWrite (led_bit_3, LOW);
}
void setup() { // esta função é executada uma única vez quando o microcontrlador inicia (ao pressionar o reset)
pinMode(led_bit_0, OUTPUT); // iniciliaza o pino 0 como saída
pinMode(led_bit_1, OUTPUT); // iniciliaza o pino 1 como saída
pinMode(led_bit_2, OUTPUT); // iniciliaza o pino 2 como saída
pinMode(led_bit_3, OUTPUT); // iniciliaza o pino 3 como saída
}
void loop() { // função que repete infinitamente os passos listados
escreve_byte (contador); // escreve o byte na saída
delay (1000); // espera 1 segundo
contador++; // incrementa a variável contador em 1 unidade
}
Esquemático para funcionamento do sketch
Atividades:
- Crie um sketch com o código acima, e implemente a ligação e observe o funcionamento:
- Qual a contagem realizada?
- Qual o ponto de início?
- O que acontece depois do número 15?
- Crie um novo sketch modificando o início da contagem.
- Crie um novo sketch para contagem seja decrescente.
- O que acontece depois do número 0?
- Crie um novo sketch para estender a contagem para 8 bits.
- Crie um novo sketch inserindo um botão que controla o incremento.
- Crie um novo sketch inserindo mais 3 botões. um para o decremento, um para zerar e um para setar em 128.
Nenhum comentário:
Postar um comentário