febrero 20, 2018

BCESTO-Electrónica del marcador 1

Written by

Como ya tenemos el marcador preparado con los LED, ahora vamos a preparar el montaje electrónico. En esto es el profesor el que nos guía porque no tenemos experiencia electrónica.

Queremos usar una tarjeta Arduino para todo el juego, pero los segmentos LED a manejar son demasiados para hacerlo directamente. Tenemos 3 marcadores con 3 dígitos y un reloj con otros cuatro, mas los puntos centrales del reloj. Esto hace un total de 13 dígitos de 7 segmentos cada uno y un total de 92 ‘luces’. Esto no es manejable por una tarjeta Arduino UNO y ni siquiera para una Mega. Hay que buscar otra solución.

Buscando por Internet, vemos que hay montajes de relojes usando un registro de desplazamiento, el circuito 74HC595. Vemos que usando este sistema sólo harían falta 3 patillas para controlar la mayoría de los dígitos. Adjuntamos un enlace donde se explica cómo se usa este sistema.

https://www.arduino.cc/en/Tutorial/ShiftOut

Con este principio, usando una placa board, montamos un circuito con Arduino UNO y un dígito de 7 segmentos:

Montaje de dígito con registro 74HC595

Aquí estamos usando el registro de desplazamiento 74HC595 y el conversor HCF4055, de BCD a 7 segmentos, para facilitar el programa. Adjuntamos también el programa de prueba:


/*
 Shift Register Example
 for 74HC595 shift register

Recibe por entrada serie un dígito y enciende el dígito LED con el número correspondiente.

Hardware:
 * 74HC595 shift register attached to pins 8, 12, and 11 of the Arduino,
 as detailed below.
 * HCF4055 conversor BCD-7 segmentos
 * dígito de 7 segmentos

Created 22 May 2009
 Created 23 Mar 2010
 by Tom Igoe
 26/2/2018 - Conversión a 7 segmentos por Rafael Caballos

*/

//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);
 Serial.begin(9600);
 Serial.println("reset");
}

void loop() {
 if (Serial.available() > 0) {
 // ASCII '0' through '9' characters are
 // represented by the values 48 through 57.
 // so if the user types a number from 0 through 9 in ASCII, 
 // you can subtract 48 to get the actual value:
 int digito = Serial.read() - 48;

// write to the shift register with the correct bit set high:
 registerWrite(digito);
 }
}

// This method sends bits to the shift register:
void registerWrite(int dato) {
// the bits you want to send

// 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, dato);

// turn on the output so the LEDs can light up:
 digitalWrite(latchPin, HIGH);
}

 

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