Descripción
Los displays LED de 4 dígitos funcionaba bastante bien, y vimos que no se notaba el truco de multiplexar los dígitos. Pero lo que si que percibe, es la cantidad de cables que supone conectar y por lo fácil que es equivocarse o soltar uno inadvertidamente.
Los displays LED de 4 dígitos funcionaba bastante bien, y vimos que no se notaba el truco de multiplexar los dígitos. Pero lo que si que percibe, es la cantidad de cables que supone conectar y por lo fácil que es equivocarse o soltar uno inadvertidamente.
En la práctica es mucho mejor utilizar un display con sistema anexo de control, que son un poco más caros, pero no tienen ningun problemas. En realidad son tan sencillos que no suelen tener más allá de 4 pines y se controlan por software directamente.
Vamos con un un display de Catalex, un fabricante chino, de 4 dígitos que se gobierna con esos 4 pines que decíamos (y dos son Vcc y GND), tiene una librería muy simple y funciona tanto a 5V como a 3,3V.
Materiales
Placa de Arduino
Módulo Display 7 Segmentos y 4 digitos con Interface
Protoboard, Cables para Conexiones y un cable USB para conectar arduino al PC que sirve además de alimentación
El cableado de uno de estos displays es insultantemente sencillo:
Conectamos tensión y Ground y solo nos quedan 2 hilos: DIO o Data Input Output y Clock, que conectamos a los pinos 2 y 3 respectivamente. Y eso es todo.
El cableado de uno de estos displays es insultantemente sencillo:
Conectamos tensión y Ground y solo nos quedan 2 hilos: DIO o Data Input Output y Clock, que conectamos a los pinos 2 y 3 respectivamente. Y eso es todo.
Montaje
Código
El fabricante del display nos proporciona una librería para que podamos olvidarnos del multiplexado y demás historias: DigitalTube.
La descargamos e instalamos.
El fabricante del display nos proporciona una librería para que podamos olvidarnos del multiplexado y demás historias: DigitalTube.
La descargamos e instalamos.
Para Empezar Añadir librería
#include <TM1637.h>
Para usarla, definimos un par de pines para la señal CLK y DIO:
#define CLK 3 //pins definitions for TM1637 and can be changed to other ports
#define DIO 2
Ahora tenemos que crear una instancia del tipo TM1637 que llamaremos Display1 y le pasamos los pines que controlan la comunicación:
TM1637 Display1(CLK,DIO);
Y ahora el fabricante nos pide que le pasemos los dígitos a representar en un array de 4 unsigned byte definidos con un tipo raro int8_t, del que no teneís que preocuparos:
int8_t Digits[] = {3,2,1,2} ;
En este caso el display mostrara 3212. Y ahora hay que inicializar la librería y el display
void setup(){
Display1.set();
Display1.init() ;
}
Y ahora ya solo queda pedirle que imprima Digits[]
void loop(){
Display1.display(Digits);
}
#include <TM1637.h>
#define CLK 3//pins definitions for TM1637 and can be changed to other ports
#define DIO 2
TM1637 Display1(CLK,DIO);
int8_t Digits[] = {3,2,1,2} ;
void setup(){
Display1.set();
Display1.init() ;
}
void loop(){
Display1.display(Digits);
}
#include "TM1637.h"
#define CLK 3
#define DIO 2
TM1637 Display1(CLK,DIO);
int8_t Digits[] = {7,6,5,4}; //Valor inicial
void setup(){
Display1.set();
Display1.init() ;
}
void CalculaDigitos( int Num){
int8_t Digit0 = Num %10 ;
int8_t Digit1 = (Num % 100) / 10 ;
int8_t Digit2 = (Num % 1000) / 100 ;
int8_t Digit3 = Num / 1000 ;
Digits[3] = Digit0 ;
Digits[2] = Digit1 ;
Digits[1] = Digit2 ;
Digits[0] = Digit3 ;
Display1.display(Digits);
}
void loop()
void loop(){
for (int i = 0 ; i<10000 ; i++){
CalculaDigitos(i);
delay(100);
}
}
#include "TM1637.h"
#define CLK 3
#define DIO 2
TM1637 Display1(CLK,DIO);
int8_t Digits[] = {7,6,5,4}; //Valor inicial
void setup(){
Display1.set();
Display1.init() ;
}
void loop(){
for (int i = 0 ; i<10000 ; i++){
CalculaDigitos(i);
delay(100);
}
}
void CalculaDigitos( int Num){
int8_t Digit0 = Num %10 ;
int8_t Digit1 = (Num % 100) / 10 ;
int8_t Digit2 = (Num % 1000) / 100 ;
int8_t Digit3 = Num / 1000 ;
Digits[3] = Digit0 ;
Digits[2] = Digit1 ;
Digits[1] = Digit2 ;
Digits[0] = Digit3 ;
Display1.display(Digits);
}
No hay comentarios:
Publicar un comentario