Video del circuito
A continuación, se deja en video en donde se explica al detalle el circuito.
Display 7 segmentos
Es un elemento para visualización de números y letras en electrónica, cada segmento esta hecho de un material que emite luz, los segmentos se organizan o se designan como se muestra en la siguiente imagen.
Existen dos tipos de display de 7 segmentos, su principal diferencia es la conexión de los pines que están asociados a los segmentos, estos dos tipos se conocen como ánodo común y cátodo común.
Display de cátodo común
El display cátodo común es aquel que tiene el pin común conectado a los negativos de los LED’s (cátodo). Esto significa que este tipo de display se “controla” con ‘1’ lógico o con voltaje positivo.
Display de ánodo común
El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de display es controlado por ceros (0).
Conexión del circuito
Materiales
Materia | Cantidad | Descripción |
---|---|---|
Display 7 segmentos ánodo común | 2 | Visualizaremos los dígitos del 0 al 9 |
Arduino uno | 1 | Controlador para el display |
Transistores | 2 | Transistores NPN 2N2222 que sirven como interruptor eléctrico para los displays, también se puede usar el 2N3904 |
Resistencias de 1k | 9 | Las usaremos para proteger las entradas y los leds de display |
Cables macho a macho | 9 | Los usaremos para la conexión |
Código
El código lo tenemos en el repositorio de github en la sección arduino code.
const int pins[7] = { 2, 3, 4, 5, 6, 7, 8 };
//Declaramos los numeros para el ánodo común
const byte numbersDisplayAnode[10] = {0b1000000, //0
0b1111001, //1
0b0100100, //2
0b0110000, //3
0b0011001, //4
0b0010010, //5
0b0000010, //6
0b1111000, //7
0b0000000, //8
0b0010000}; //9
const int nbrDigits = 2;
// digits 1 2
const int digitPins[nbrDigits] = {10,11};
void setup() {
for(int i = 0; i < 8; i++) {
pinMode(pins[i], OUTPUT);
}
for(int i = 0; i < nbrDigits; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
for(int i = 0; i < 100; i++ ){
showNumber(i);
delay(1);
}
}
void showNumber(int number) {
if(number == 0) {
showDigit(0, nbrDigits-1);
} else {
for(int digit = nbrDigits-1; digit >= 0; digit--) {
if(number > 0) {
showDigit(number % 10, digit);
number = number / 10;
}
}
}
}
void showDigit(int number, int digit) {
digitalWrite(digitPins[digit], HIGH);
byte numberBit = numbersDisplayAnode[number];
for (int i = 0; i < 7; i++) {
int bit = bitRead(numberBit, i);
digitalWrite(pins[i], bit);
}
delay(5);
digitalWrite(digitPins[digit], LOW);
}
Comentario
jesus19991112
12 June 2019 20:48
oscar
12 June 2019 21:39