Patrones de dígitos en bytes
Parte de la sección Pantallas y sensores del Journey de Arduino de Coddy. Lección 2 de 24.
Siete líneas de digitalWrite() por cada dígito son mucho código. Guarda cada dígito como un patrón: un bit por segmento, 1 si está encendido y 0 si está apagado.
Un byte es un número entero de 0 a 255 compuesto por ocho bits. Escríbelo en binario con 0b delante. Lee los bits desde la derecha: el último bit es el segmento a, el anterior es b, y así sucesivamente hasta g.
// gfedcba
byte one = 0b0000110; // b y c: a 1Diez patrones caben en un arreglo, así que digits[3] es el patrón de un 3. bitRead(), del contador binario, lee uno de sus bits, contando desde la derecha y empezando en 0:
bitRead(0b0000110, 0) // 0: el segmento a está apagado
bitRead(0b0000110, 1) // 1: el segmento b está encendidoUna función puede recorrer los siete bits con un bucle for y establecer cada pin de segmento, así que dibujar cualquier dígito es una sola llamada: showDigit(7);
Desafío
IntermedioEl código inicial tiene todos los patrones excepto el 4 y el 7, y loop() muestra 1, 4 y 7.
- completa el 4 (segmentos
b,c,f,g) y el 7 (a,b,c) - escribe
showDigit(n): para cadaide 0 a 6, establecesegmentPins[i]enLOWcuando el bitidedigits[n]sea 1, y enHIGHcuando sea 0
Pulsa Run y después Check.
Pruébalo tú mismo
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Un patrón por dígito, leído desde la derecha: el último bit corresponde al segmento a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b0000000, // 4: completa
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: completa
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// enciende los segmentos de digits[n] y apaga los demás
}
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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Pantallas y sensores
1Displays de siete segmentos
Display de siete segmentosPatrones de dígitos en bytesCuenta en el displayCuenta regresiva hasta ceroLanzador de dadosPractica por tu cuenta: Playground de Arduino