Written by admin
Como ya tenemos los marcadores preparados, todos los dígitos, procedemos a probar si funcionan. Conectamos un dígito a una placa Arduino y le cargamos el programa de ejemplo.
// Proyecto: JUEGO BALONCESTO
// Fichero: PruebaDigito.ino
// Descripción: Contador de 1 dígito con registros de desplazamiento 74HC595
// Autor: Rafael Caballos
// Fecha: 5/5/2019
/*
Shift Register Example
for 74HC595 shift register
Convierte datos numéricos en segmentos sin conversor electrónico
Hardware:
* 1x 74HC595 shift register attached to pins 8, 12, and 11 of the Arduino,
as detailed below.
* 1x dígito de 7 segmentos
Created 22 May 2009
Created 23 Mar 2010
by Tom Igoe
27/2/2018 - Conversión a 7 segmentos por Rafael Caballos
*/
// Definición de conversión a 7 segmentos
byte Segment7[10]={B00111111,B00000110,B01011011,B01001111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111};
//Pin connected to latch pin (ST_CP) of 74HC595
const int latchPin = 8;
//Pin connected to clock pin (SH_CP) of 74HC595
const int clockPin = 12;
////Pin connected to Data in (DS) of 74HC595
const int dataPin = 11;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop()
{
int ii;
for(ii=0;ii<=9;ii+=1)
{
// write to the shift register
registerWrite(ii);
delay(500);
}
}
// This method sends bits to the shift register:
void registerWrite(int dato)
{
// turn off the output so the pins don't light up
// while you're shifting bits:
digitalWrite(latchPin, LOW);
// shift the bits out:
shiftOut(dataPin, clockPin, MSBFIRST, Segment7[dato]);
// turn on the output so the LEDs can light up:
digitalWrite(latchPin, HIGH);
}
El siguiente vídeo muestra el funcionamiento del dígito. Probamos todos los dígitos y detectamos algunos fallos, debidos todos a problemas en las soldaduras, que nos obligan a cambiar algunos transistores y LEDs.
Ahora hacemos una prueba conectando dos dígitos en cascada, para formar un marcador. El código es similar al anterior, pero contando hasta 99 con dos dígitos:
// Proyecto: JUEGO BALONCESTO
// Fichero: PruebaContador.ino
// Descripción: Contador de 2 dígitos con registros de desplazamiento 74HC595
// Autor: Rafael Caballos
// Fecha: 5/5/2019
/*
Shift Register Example
for 74HC595 shift register
Contador de 3 dígitos con registros de desplazamiento 74HC595
Convierte datos numéricos en segmentos sin conversor electrónico
Hardware:
* 3x 74HC595 shift register attached to pins 8, 12, and 11 of the Arduino,
as detailed below.
* 3x dígito de 7 segmentos
Created 22 May 2009
Created 23 Mar 2010
by Tom Igoe
27/2/2018 - Conversión a 7 segmentos por Rafael Caballos
*/
// Definición de conversión a 7 segmentos
byte Segment7[10]={B00111111,B00000110,B01011011,B01001111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111};
//Pin connected to latch pin (ST_CP) of 74HC595
const int latchPin = 8;
//Pin connected to clock pin (SH_CP) of 74HC595
const int clockPin = 12;
////Pin connected to Data in (DS) of 74HC595
const int dataPin = 11;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop()
{
int ii;
for(ii=0;ii<=99;ii+=1)
{
// write to the shift register
registerWrite(ii);
delay(500);
}
}
// This method sends bits to the shift register:
void registerWrite(int dato)
{
byte num1,num2,num3;
num1=dato % 10;
num2=(dato / 10) % 10;
// turn off the output so the pins don't light up
// while you're shifting bits:
digitalWrite(latchPin, LOW);
// shift the bits out:
shiftOut(dataPin, clockPin, MSBFIRST, Segment7[num2]);
shiftOut(dataPin, clockPin, MSBFIRST, Segment7[num1]);
// turn on the output so the LEDs can light up:
digitalWrite(latchPin, HIGH);
}
El resultado es correcto, aunque el segundo dígito se ilumina menos. Es algo que tendremos que corregir.
Deja una respuesta