Padrões de Dígitos em Bytes
Parte da seção Displays e sensores do Journey de Arduino da Coddy. Lição 2 de 24.
Sete linhas de digitalWrite() para cada dígito são muito código. Armazene cada dígito como um padrão: um bit por segmento, 1 para aceso e 0 para apagado.
Um byte é um número inteiro de 0 a 255 composto por oito bits. Escreva-o em binário com 0b na frente. Leia os bits da direita para a esquerda: o último bit é o segmento a, o anterior é b e assim por diante até g.
// gfedcba
byte one = 0b0000110; // b e c: em 1Dez padrões cabem em um array, então digits[3] é o padrão de um 3. bitRead(), do contador binário, lê um bit dele, contando da direita e começando em 0:
bitRead(0b0000110, 0) // 0: o segmento a está apagado
bitRead(0b0000110, 1) // 1: o segmento b está acesoUma função pode percorrer os sete bits com um loop for e definir cada pino de segmento, para que exibir qualquer dígito seja uma única chamada: showDigit(7);
Desafio
MédioO código inicial tem todos os padrões, exceto 4 e 7, e loop() exibe 1, 4 e 7.
- preencha 4 (segmentos
b,c,f,g) e 7 (a,b,c) - escreva
showDigit(n): para cadaide 0 a 6, definasegmentPins[i]comoLOWquando o bitidedigits[n]for 1, e comoHIGHquando for 0
Pressione Run e, em seguida, Check.
Experimente você mesmo
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Um padrão por dígito, lido da direita para a esquerda: o último bit corresponde ao segmento a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b0000000, // 4: preencha
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: preencha
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// acenda os segmentos de digits[n] e apague os demais
}
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
showDigit(1);
delay(1000);
showDigit(4);
delay(1000);
showDigit(7);
delay(1000);
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Displays e sensores
1Displays de Sete Segmentos
Display de Sete SegmentosPadrões de Dígitos em BytesContagem no DisplayContagem Regressiva até ZeroSimulador de DadosPratique por conta própria: Playground de Arduino