Aproximadamente en el año 2018 trabajé en la parte de mantenimiento en un empresa de juegos electrónicos, ahí aprendí muchas cosas de electrónica, y hoy les compartiré y les enseñaré a como desarrollar parte electrónica de una mesa de juego de futbol. Prácticamente veremos desde el principio de funcionamiento, el esquemático electrónico, la creación de una tarjeta PCB y finalmente seremos testigos del funcionamiento del proyecto completo.
ESPECIFICACIONES TÉCNICAS

- Tensión de alimentación……………………….…………12VDC
- Corriente de alimentación………………….……………150mA
- Entadas digitales nivel bajo……………….……………….4
- Programación directa(PC – main board)………………………..Sí
- Salida RELAY………………………………………………………4
- Tensión salida AC…………………………..….……220V
- Corriente AC………………………………………….8A
- Tensión DC……………………………………………30V
- Corriente DC…………………………………………8A
- Salida TRANSISTOR………………………………………….4
- Tensión salida DC…………………………….……12V
- Corriente DC……………………….……………….5A
- Condiciones ambientales min……………………….….-10°
- Condiciones ambientales max…………………..……….85°
- Empotrable…………………………………………………………Sí
LISTA DE MATERIALES

| Categoría | Cantidad | Referencias | Valor | PCB Package | DATASHEET |
| Condensadores | 8 | C1,C2,C3,C5,C6,C7,C11,C12 | 100nF | 0603_CAP | (see & buy) |
| Condensadores | 1 | C4 | 470uF | CAP SMD 10.5X10MM ALUMINUM 470UF/35V | (see & buy) |
| Condensadores | 1 | C8 | 220uF | CAP SMD 6.3X7.7MM ALUMINUM 220UF/16V | (see & buy) |
| Condensadores | 1 | C9 | 100nF | 1206_CAP | (see & buy) |
| Condensadores | 1 | C10 | 1000uF | ELEC-RAD25 | |
| Resistencias | 10 | R1,R7,R8,R10,R12,R14,R16,R18,R22,R23 | 10k | 0603_RES | (see & buy) |
| Resistencias | 8 | R2,R3,R9,R11,R13,R15,R17,R38 | 1k | 0603_RES | (see & buy) |
| Resistencias | 1 | R4 | 1M | 0603_RES | (see & buy) |
| Resistencias | 4 | R5,R6,R20,R21 | 10k | 1206_RES | (see & buy) |
| Resistencias | 1 | R19 | 4.7k | 0603_RES | (see & buy) |
| Resistencias | 14 | R24,R25,R26,R27,R28,R29,R30,R31,R32,R33,R34,R35,R36,R37 | 220 | 0603_RES | (see & buy) |
| Integrados | 1 | U1 | ATMEGA328P | QFP80P900X900X120-32 | (see & buy) |
| Integrados | 1 | U2 | CH340C | SO16 | (see & buy) |
| Integrados | 2 | U3,U4 | ILD207T | SO8 | (see & buy) |
| Integrados | 2 | U5,U6 | 74HC595 | SO16 | (see & buy) |
| Integrados | 1 | U7 | 7805 | P1 | (see & buy) |
| Transistores | 4 | Q1,Q2,Q3,Q4 | MJD112-001 | TO228P1003X238-3 | (see & buy) |
| Transistores | 1 | Q5 | PMBT3904,215 | SOT23-3 | (see & buy) |
| Diodos | 1 | D1 | B330A-13-F | DIOM5336X240 | (see & buy) |
| Diodos | 1 | D2 | RR1VWM6STFTR | SOD2614X116 | (see & buy) |
| Diodos | 2 | D3,D4 | LED-RED | LEDC2012X120 | (see & buy) |
| Miscelánea | 2 | 1,2 | DISPLAY 7SEG | Común | |
| Miscelánea | 1 | BTN1 | RST | BUTTON SMD 2P | (see & buy) |
| Miscelánea | 1 | J1 | MICRO USB B | MICRO USB B | (see & buy) |
| Miscelánea | 4 | J2,J5,J6,J7 | TBLOCK-M3 | T-BLOCK 3PIN BLUE | (see & buy) |
| Miscelánea | 2 | J3,J4 | TBLOCK-M2 | T-BLOCK 2PIN BLUE | (see & buy) |
| Miscelánea | 1 | RL1 | 12V | RL12V NORMAL | Común |
| Miscelánea | 1 | X1 | CRYSTAL SMD S | OSCILADOR SMD CERAMIC RESONATORS | (see & buy) |
CONEXIONES EXTERNOS


COMO SUBIR BOOTLOADER

PROPÓSITO GENERAL


CODIGO

int clockpin = 8; //Cuando ay que leer los bit SH
int data = 6; //Envio datos DS
int latch = 7; //indica pin de salida en el chip ST
int clockpin1 = 9; //Cuando ay que leer los bit SH
int data1 = 11; //Envio datos DS
int latch1 = 10; //indica pin de salida en el chip ST
// no cambiar el const int
const int left_sen = 2; // pin 2 como entrada para el sensor izquierdo
const int right_sen = 3; // pin 3 como entrada para el sensor derecho
const int coin = 4; // pin 4 como entrada para el coin
//VARIABLES PARA EL CONTADOR ASCENDIENTE
// estas variables si puede ser cambiado
int contador = 0;
int contador1 = 0;
int total = 0;
boolean go = false;
int estado_coin = 0; // estado actual del pulsador
int lastButtonState_coin = 0; // estado del pulsado anterior
int estado_left_sen = 0; // estado del pulsado actual
int lastButtonState_left = 0; // estado del pulsado anterior
//VARIABLES PARA EL CONTADOR DESCENDIENTE
// estas variables si puede ser cambiado
int estado_right_sen = 0; // estado del pulsado actual
int lastButtonState_right = 0; // estado del pulsado anterior
const int relay = 12; // relay
//Aqui esta el array que contiene todos los numeros para nuestro display
//El display tiene las conexiones alcontrario ell pin 8 del 74hc595 es el primer dijito binario
const int numero[] = { // display B
63, //Numero 0 en binario es : 11111100
6, //Numero 1 en binario es : 00000110
91, //Numero 2 en binario es : 11011010
79, //Numero 3 en binario es : 11110010
102, //Numero 4 en binario es : 01100110
109, //Numero 5 en binario es : 10110110
125, //Numero 6 en binario es : 10111110
7, //Numero 7 en binario es : 11100000
127, //Numero 8 en binario es : 11111110
103, //Numero 9 en binario es : 11110110
63, //Numero 0 en binario es : 11111100
};
const int numero1[] = { // display A
63, //Numero 0 en binario es : 11111100
6, //Numero 1 en binario es : 00000110
91, //Numero 2 en binario es : 11011010
79, //Numero 3 en binario es : 11110010
102, //Numero 4 en binario es : 01100110
109, //Numero 5 en binario es : 10110110
125, //Numero 6 en binario es : 10111110
7, //Numero 7 en binario es : 11100000
127, //Numero 8 en binario es : 11111110
103, //Numero 9 en binario es : 11110110
63, //Numero 0 en binario es : 11111100
};
void setup() {
pinMode(left_sen, INPUT);
pinMode(right_sen, INPUT);
pinMode(latch, OUTPUT);
pinMode(clockpin, OUTPUT);
pinMode(data, OUTPUT);
pinMode(latch1, OUTPUT);
pinMode(clockpin1, OUTPUT);
pinMode(data1, OUTPUT);
pinMode (relay, OUTPUT);
contador1 = 0;
digitalWrite(latch1, LOW);
shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch1, HIGH);
contador = 0;
digitalWrite(latch, LOW);
shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch, HIGH);
}
void loop()
{
// almacenamos la lectura de la entrada de pin 2
estado_left_sen = digitalRead(left_sen);
estado_right_sen = digitalRead(right_sen);
estado_coin = digitalRead(coin);
if (go == false) {
if (estado_coin != lastButtonState_coin) {
// si el estado fue cambiado, incremente el conteo
if (estado_coin == LOW) {
go = true;
if (go == true) {
digitalWrite(relay, 1);
delay(3000);
digitalWrite(relay, 0);
}
}
}
}
lastButtonState_coin = estado_coin;
if (go == true) {
// comparar el estado del botón a su estado anterior
if (estado_left_sen != lastButtonState_left) {
// si el estado fue cambiado, incremente el conteo
if (estado_left_sen == LOW) {
// si el estado actual es alto, entonces
// que pase de off a on:
if (contador >= 10) {
contador = 0;
}
contador++;
digitalWrite(latch, LOW);
shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch, HIGH);
delay(200);
}
}
lastButtonState_left = estado_left_sen;
// comparar el estado del botón a su estado anterior
if (estado_right_sen != lastButtonState_right ) {
// si el estado fue cambiado, decrementa el conteo
if (estado_right_sen == LOW) {
// si el estado actual es alto, entonces
// que pase de off a on:
if (contador1 >= 10) {
contador1 = 0;
}
contador1++;
digitalWrite(latch1, LOW);
shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch1, HIGH);
delay(200);
}
}
//guarda el último estado actual como el ultimo estado
//para el proximo bucle
lastButtonState_right = estado_right_sen;
}
total = contador + contador1;
if (total == 9) {
go = false;
delay(2000);
contador1 = 0;
digitalWrite(latch1, LOW);
shiftOut(data1, clockpin1, MSBFIRST, numero1[contador1]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch1, HIGH);
contador = 0;
digitalWrite(latch, LOW);
shiftOut(data, clockpin, MSBFIRST, numero[contador]); // lee el arreglo y pasa cada numero a lectura binaria
digitalWrite(latch, HIGH);
total = 0;
}
}


