VISIÓN DE CONJUNTO
En un tutorial previo, creamos un temporizador de cuenta regresiva con una pantalla de 8 bits.
Lamentablemente, la pantalla que usamos al crear el tutorial es cada vez más difícil de encontrar.
Así que creamos un tutorial similar utilizando esta pantalla de 8 bits más fácil de encontrar que está utilizando el MAX7219.
CONEXIONES
Aquí están las conexiones necesarias para este tutorial:
Los pines GND de UNO están conectados al pin negativo (-) del zumbador y al pin GND de la pantalla
El pin de 5V de UNO está conectado al pin VCC de la pantalla
Los pines 5-6-7 de UNO están conectados al pin CS-CLK-DIN de la pantalla
El pin 8 de UNO está conectado al pin positivo (+) del zumbador
/ * Versión CountDown Timer 2 usando Max7219 Creado por Yvan / https: // Inteligente - Bits . com Este código es en el dominio público ... Puede: copiarlo, usarlo, modificarlo, compartirlo o simplemente ignóralo ! Gracias ! * / #define Max7219DIN 7 // Pin 7 conectado a DIN (DataIN) #define Max7219CLK 6 // Pin 6 conectado a CLK #define Max7219CS 5 // Pin 5 conectado a CS #define Buzzer 8 // Pin 8 conectado a Buzzer + pin positivo En t BuzzTrigger = 0 ; // Variable para almacenar el valor de activación del zumbador #include "LedControl.h" // Biblioteca LedControl creada por Eberhard Fahle en http://playground.arduino.cc/Main/LedControl LedControl lc = LedControl (Max7219DIN, Max7219CLK, Max7219CS, 1 ); // El último número representa la cantidad de módulos Max7219 conectados largo En t número de cuenta = 24001000 ; // Valor de inicio del temporizador de cuenta regresiva HH: MM: SSSS // Variables para almacenar números individuales En t firstnum = 0 ; En t segundo momento = 0 ; En t tercero = 0 ; En t fournum = 0 ; En t fivenum = 0 ; En t sixnum = 0 ; En t sevennum = 0 ; En t eightnum = 0 ; void setup () { lc . apagar( 0 ,falso); // Despierta la pantalla lc . setIntensity ( 0 , 7 ); // Establecer brillo 0 - 15 lc . clearDisplay ( 0 ); // Pantalla clara pinMode (Zumbador, SALIDA); digitalWrite (Zumbador, BAJO); // Zumbador apagado al inicio } void loop () { para (countnumber; countnumber ! = - 1 ; número de cuenta - ) { String mystring = Cadena (número de cuenta); // Transform Counter Int to String para manipulación // Convertir número a un valor de tiempo para ( En t z = 0 ; z 6 ; z ++ ) { Si (mystring . subcadena (z) == "999999" ) { número de cuenta = (número de cuenta - 400000 ); } Si (mystring . subcadena (z) == "9999" ) { número de cuenta = (número de cuenta - 4000 ); } } // Mostrar el número en la pantalla dependiendo del número de dígitos restantes Si (número de cuenta > 9999999 ) { firstnum = ((número de cuenta / 10000000 ) % 10 ); segundo momento = número de cuenta / 1000000 % 10 ; tercero = número de cuenta / 100000 % 10 ; fournum = número de cuenta / 10000 % 10 ; fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setDigit ( 0 , 7 , primer nombre, falso); lc . setDigit ( 0 , 6 , segundo nombre, falso); lc . setDigit ( 0 , 5 , tercer nombre, falso); lc . setDigit ( 0 , 4 , fournum, falso); lc . setDigit ( 0 , 3 , fivenum, falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } más { Si (número de cuenta > 999999 ) { // firstnum = ((número de cuenta / 10000000 ) % 10 ); segundo momento = número de cuenta / 1000000 % 10 ; tercero = número de cuenta / 100000 % 10 ; fournum = número de cuenta / 10000 % 10 ; fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setChar ( 0 , 7 , '-' ,falso); lc . setDigit ( 0 , 6 , segundo nombre, falso); lc . setDigit ( 0 , 5 , tercer nombre, falso); lc . setDigit ( 0 , 4 , fournum, falso); lc . setDigit ( 0 , 3 , fivenum, falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } más { Si (número de cuenta > 99999 ) { // firstnum = ((número de cuenta / 10000000 ) % 10 ); // segundo momento = número de cuenta / 1000000 % 10 ; tercero = número de cuenta / 100000 % 10 ; fournum = número de cuenta / 10000 % 10 ; fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setChar ( 0 , 7 , '-' ,falso); lc . setChar ( 0 , 6 , '-' ,falso); lc . setDigit ( 0 , 5 , tercer nombre, falso); lc . setDigit ( 0 , 4 , fournum, falso); lc . setDigit ( 0 , 3 , fivenum, falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } más { Si (número de cuenta > 9999 ) { // firstnum = ((número de cuenta / 10000000 ) % 10 ); // segundo momento = número de cuenta / 1000000 % 10 ; // tercero = número de cuenta / 100000 % 10 ; fournum = número de cuenta / 10000 % 10 ; fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setChar ( 0 , 7 , '-' ,falso); lc . setChar ( 0 , 6 , '-' ,falso); lc . setChar ( 0 , 5 , '-' ,falso); lc . setDigit ( 0 , 4 , fournum, falso); lc . setDigit ( 0 , 3 , fivenum, falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } más { Si (número de cuenta > 999 ) { // firstnum = ((número de cuenta / 10000000 ) % 10 ); // segundo momento = número de cuenta / 1000000 % 10 ; // tercero = número de cuenta / 100000 % 10 ; // fournum = número de cuenta / 10000 % 10 ; fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setChar ( 0 , 7 , '-' ,falso); lc . setChar ( 0 , 6 , '-' ,falso); lc . setChar ( 0 , 5 , '-' ,falso); lc . setChar ( 0 , 4 , '-' ,falso); lc . setDigit ( 0 , 3 , fivenum, falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } más { // firstnum = ((número de cuenta / 10000000 ) % 10 ); // segundo momento = número de cuenta / 1000000 % 10 ; // tercero = número de cuenta / 100000 % 10 ; // fournum = número de cuenta / 10000 % 10 ; // fivenum = número de cuenta / 1000 % 10 ; sixnum = número de cuenta / 100 % 10 ; sevennum = número de cuenta / 10 % 10 ; eightnum = número de cuenta % 10 ; lc . setChar ( 0 , 7 , '-' ,falso); lc . setChar ( 0 , 6 , '-' ,falso); lc . setChar ( 0 , 5 , '-' ,falso); lc . setChar ( 0 , 4 , '-' ,falso); lc . setChar ( 0 , 3 , '-' ,falso); lc . setDigit ( 0 , 2 , sixnum, falso); lc . setDigit ( 0 , 1 , sevennum, falso); lc . setDigit ( 0 , 0 , ocho en punto, falso); } } } } } // Si un segundo como ido por el zumbador de sonido Si (BuzzTrigger == 99 ) { digitalWrite (Zumbador, ALTO); // Zumbador encendido retraso ( 9 ); // Retrasar 2 Sra digitalWrite (Zumbador, BAJO); // Zumbador apagado BuzzTrigger = 0 ; // Desencadenar para sonido de cuenta regresiva } más { retraso ( 9 ); BuzzTrigger = BuzzTrigger + 1 ; } // Si cuenta regresiva con alarma de sonido cero y pantalla flash Si (número de cuenta == 0 ) { para ( En t y = 0 ; y 8 ; y ++ ) { digitalWrite (Zumbador, ALTO); // Zumbador encendido para ( En t X = 0 ; X 8 ; X ++ ) { lc . setDigit ( 0 ,X, 0 ,falso); } retraso ( 100 ); // Retrasar 1 Sra digitalWrite (Zumbador, BAJO); // Zumbador apagado para ( En t X = 0 ; X 8 ; X ++ ) { lc . setChar ( 0 ,X, '-' ,falso); } retraso ( 300 ); // retrasar 1 Sra } } } }