Paso 5: Conducir las siete exhibiciones de segmento
Una pantalla de siete segmentos es sólo una colección de siete (u ocho si tiene un punto decimal) LEDS, que se puede utilizar para mostrar los números cuando se encienden los LEDS correctos.
Hay dos desafíos para su uso que voy a comentar mis soluciones a
- 14 LED de conducción sin necesidad de utilizar todos nuestros alfileres de salida digital
- Determinar que indicadores de luz
Unidad 14 todos los LEDS de 3 pines: registros de desplazamiento
Introducción
Requeriría alrededor de 14 pines de salida digital a pantallas de siete segmentos de coche los dos, que no es práctico, por el contrario hacer uso de registros de cambio. El funcionamiento completo de un registro de desplazamiento está fuera del alcance de este Instructable, pero aquí hay un enlace a un buen tutorial, de hecho yo basado en mi código de su código de "muestra del 2.3".
Las conexiones de la Linkit uno al primer registro de desplazamiento son los siguientes
latchPin 12 = seguro = 12 en ard
cambio reg 11 = reloj = 11 en ard
cambio reg 14 = de datos = 13 en ard
PERNOS DE 1-7, 15 | Q0 "Q7 | Pines de salida | |
PIN 8 | TOMA DE TIERRA | Tierra, Vss | |
PIN 9 | Q7 " | Fuera de serie | |
PIN 10 | SEÑOR | Maestro Reclear, bajo activo | |
PIN 11 | SH_CP | Registro de cambio de pin de reloj | |
PIN 12 | ST_CP | Almacenamiento de información registrar pin de reloj (pin de cierre) | |
PIN 13 | OE | Activar la salida, bajo activo | |
PERNO 14 | DS | Entrada de datos serie | |
PIN 16 | VCC | Tensión de alimentación positiva |
Asegúrese de que sabe usted si las pantallas son ánodo común o cátodo común. Mina eran común-cátodo que significó que conectar cada pin de salida (Q0-Q7) del registro de desplazamiento a uno de los LED mediante una resistencia y conecta el cátodo común a tierra.
Al elegir los resistores para la pantalla, recuerda que la IO utiliza 3.3V LinkIt uno y no 5.5V como Arduino. Opté por resistencias de 100 ohmios para la 17mA actual (3.3 - 1.6V = 1.7V en resistencia), pero probablemente debe han dirigido para la 20mA completo ya que terminaron muy aburrido.
Determinar que indicadores de luz
Yo utiliza esta tabla para determinar los segmentos para un carácter dado.
Primero hice una columna para cada pin de salida del registro shift, luego una columna correspondiente, mostrando que pin del display de 7 segmentos se conecta a.
Pues yo utilizaba la hoja de datos del display de 7 segmentos que corresponden de números pin para segmentos (los segmentos están etiquetados a-g)
Se puede ver que hice una columna para cada personaje (0-9) y luego escribió un 1 si la luz debe estar encendida y 0 si debe ser apagado (esto es realmente una tabla de verdad). La 'x' es 'no importa' porque eso perno no se utiliza.
Leyendo la columna de abajo a arriba resultados en un número binario (por ejemplo el carácter 2 nos da X1101101) que podemos convertir a hex y utilizar en nuestro código (char 2 = 01101101 en binario = 0x6D en hexadecimal). Sustituye la X por 0, pero no importa.
Cambio Pin | Pin de seg | Nombre de seg | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Q0 | 2 | A | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
Q1 | 3 | F | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
Q2 | 5 | E | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Q3 | 9 | D | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
Q4 | 13 | C | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Q5 | 14 | G | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
Q6 | 15 | B | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
Q7 | NC | NC | X | X | X | X | X | X | X | X | X | X |
Este es el código básico que utilicé para probar que tenía los bytes correctos para los 10 caracteres diferentes, escucha en el puerto serie de un número y salidas para el primer registro, no hay ninguna comprobación de errores si introduce un carácter que no sea 0-9.