febrero 22, 2018

BCESTO-Electrónica del marcador 2

Written by

Para seguir con el marcador, nos damos cuenta de que si usamos registros de desplazamiento y conversores a 7 segmentos, el circuito nos va a quedar más complejo que si usamos sólo registros de desplazamiento, ya que con la primera opción necesitaríamos 5 circuitos integrados por cada marcador, mientras que con la segunda opción serían sólo 3, lo que reduce bastante las conexiones a realizar. Así que, aunque el programa resulte un poco más complejo, optamos por esta segunda opción.

Montamos entonces un segundo circuito en la placa board, con los tres dígitos de un marcador y tres circuitos 74HC595, siguiendo las indicaciones del enlace que pusimos en la entrada anterior. La forma de funcionar con este sistema es asignar un bit del registro a cada segmento del dígito. Por esto se necesita un registro para cada dígito. Y en el programa, hay que hacer la conversión de cifra a segmentos, como haría el conversor de BCD a 7segmentos.

El esquema del montaje es:

Esquema básico del marcador

Lo que nos queda como en la imagen:

Montaje con 3 dígitos y registros 74HC595

Para probarlo usamos un programa que cuente progresivamente, que adjuntamos.


/*
 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<999;ii++)
 {
 // write to the shift register
 registerWrite(ii);
 delay(200);
 }
}

// This method sends bits to the shift register:
void registerWrite(int dato) 
{
 byte num1,num2,num3;
 
 num1=dato % 10;
 num2=(dato / 10) % 10;
 num3=dato / 100;
 
 // 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[num3]);
 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);
}

Y se puede ver su funcionamiento en el vídeo siguiente:

Category : JUEGO BALONCESTO

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Proudly powered by WordPress and Sweet Tech Theme