Buenas. Busco la ayuda de ustedes que son los/as exportos/as en este tema de Arduino. Soy nuevo en este tema y la verdad si bien se que para ustedes seguramente lo que yo quiera realizar les puede resultar muy facil, se me esta complicando.
Tengo un Arduino Uno, y una matriz led de 8x32 (La cual ya viene unida, no es que uni 4 matrices de 8x8).
Lo que quiero hacer es lo siguiente:
Llevar un tanteador (marcador de goles, puntos, etc.), que vaya del 0 al 99, para dos equipos. O sea que en los primeros 8x16 se muestre un resultado, y en las otras dos matrices, el otro resultado, y que a su vez tenga 4 pulsadores (2 para restar y 2 para sumar), y 1 mas para resetear al resultado a 0-0.
Si alguno me puede explicar como conectar los pulsadores se lo agradezco, ya que no se porque ese tema no lo estoy pudiendo entender.
Los pines de la matriz 8x32 estan conectados de la siguiente manera:
DIN = 11
CS = 10
CLK = 13
Lo unico que encuentro sobre las matrices de 8x32 es como escribir texto, pero no como utilizarlo con pulsadores y poder llevar un marcador.
Y la otra cosa que tambien me di cuenta, es que la mayoria de los ejemplos que encuentro son con librerias las cuales ya quedaron desactualizadas y por ende al actualizarlas les cambiaron el nombre, por lo que me aparecen errores constantes, de que no tengo la libreria instalada.
Desde ya agradeciendo la colaboracion de quien tenga 2 min para ayudarme, lo/a saludo muy atte.
Hola.
La conexión de los pulsadores es fácil de un pin digital libre a un terminal del pulsador y del otro terminal del pulsador al GND del arduino. Configurando en el "setup" con "pinMode(x, INPUT_PULLUP);" ya lo tienes. Posteriormente en el "loop" con un "digitalRead(x)" sabrás si se ha pulsado, (obtendrás un cero), o un uno si no se ha pulsado.
Para el proyecto usa las librerías: Wire.h, (esta creo que ya la tienes por defecto) y MD_PAROLA.h mas MD_MAX72xx.h estas ultimas las consigues en el administrado de bibliotecas del IDE.
El código no será difícil, usa dos variables de tipo entero, por ejemplo equipo1 y equipo2 y con las lecturas de los pulsadores correspondientes sumas o restas los goles y si pulsas el reset las pones a cero.
Para imprimir en la matrix de led :
En el setup añade:
myDisplay.setTextAlignment(PA_CENTER);
Para imprimir centrado en la matriz.
Y en el loop:
Desde ya muchisimas gracias por tu respuesta.
La verdad excelente tu respuesta. Con las librerias que me mencionaste lo pude hacer funcionar. Tuve un inconveniente ya que me mostraba los numeros en espejo y al reves, lo cual lo modifique cambiando el argumento hardware por este: #define HARDWARE_TYPE MD_MAX72XX::DR1CR0RR0_HW , el cual encontre por internet probando varios, hasta que este funciono perfecto.
Ahora bien, me gustaria seguir mejorando este proyecto, obviamente hasta que lo pueda manejar desde 2 controles remotos, para que 1 jugador de cada equipo pueda sumar y restar desde la distancia. Tengo que ver que controles y dispositivos hay disponibles en el mercado (Argentina), por lo que si me podrias recomendar te lo agradezco.
Te paso un video con lo que llevo hasta ahora, lo cual le agrege un zumbido cada vez que apreto los pulsadores.
Aunque con lo que hice hasta ahora la verdad estoy mas que conforme.
Te paso una copia del codigo y una imagen de como va hasta ahora.
Nuevamente muchas gracias.
#include <Wire.h>
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#define HARDWARE_TYPE MD_MAX72XX::DR1CR0RR0_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
#define BUZZER_PIN 8
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int equipo1 = 0;
int equipo2 = 0;
int equipo1PinSuma = 2; // Pulsador suma equipo1
int equipo1PinResta = 3; // Pulsador resta equipo1
int equipo2PinSuma = 4; // Pulsador suma equipo2
int equipo2PinResta = 5; // Pulsador resta equipo2
int resetPin = 6; // Pulsador reinicio de anotaciones
int buzzerPin = 8; // Pin del buzzer
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
pinMode(equipo1PinSuma, INPUT_PULLUP);
pinMode(equipo1PinResta, INPUT_PULLUP);
pinMode(equipo2PinSuma, INPUT_PULLUP);
pinMode(equipo2PinResta, INPUT_PULLUP);
pinMode(resetPin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
myDisplay.begin();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.setIntensity(5); // Ajusta el brillo de la matriz (0-15)
myDisplay.setInvert(false); // No invertir la matriz
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - lastDebounceTime > debounceDelay) {
if (digitalRead(equipo1PinSuma) == LOW) {
equipo1++;
buzzerSound();
}
if (digitalRead(equipo1PinResta) == LOW && equipo1 > 0) {
equipo1--;
buzzerSound();
}
if (digitalRead(equipo2PinSuma) == LOW) {
equipo2++;
buzzerSound();
}
if (digitalRead(equipo2PinResta) == LOW && equipo2 > 0) {
equipo2--;
buzzerSound();
}
if (digitalRead(resetPin) == LOW) {
equipo1 = 0;
equipo2 = 0;
buzzerSound();
delay(300); //en caso de querer poner una pausa entre cada pitido
buzzerSound();
buzzerSound();
}
lastDebounceTime = currentMillis;
}
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print(String(equipo1) + "-" + String(equipo2));
myDisplay.displayAnimate();
delay(500);
}
void buzzerSound() {
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
}
Impresionanate. No sabian que venian ese tipo de paneles, pense que se armaban.
Igual lo que yo estoy buscando es algo mas pequeño para poder llevarlo en la mochila, aunque a medida que vaya aprendiendo y sepa mas, el dia de mañana capaz me anime a hacer algo con ese tipo de panel.
Perfecto gonpezzi. El Modulo Transceptor Rf Nrf24l01 sale $905, por lo que me lo voy a comprar.
Ahora bien, lo que me gustaria seria poder usarlo con algun control remoto parecido a este, el cual tenga para sumar y restar para ambos equipos en el mismo control, o sino bueno, tener 2 controles:
Lo unico que no se, es que si me compro los controles remotos aparte (Si es que vienen solos), como configurarlos y demas. Estoy viendo que muchos vienen vinculados a plaquetas las cuales tienen reles.
Quizás esos controles remotos sean la mejor solución, te quitaran mucho trabajo y son mucho mas pequeños que lo que puedas construir, piensa que para un control remoto necesitas otro arduino, el emisor unas pilas, la antena posiblemente un power up o down y una caja con 4 o 2 botones. Demasiado voluminoso para el bolsillo de un jugador.
Esos controles, aquí en España los llamamos mandos de garaje, y los venden y hacen duplicados en las mayoría de simples ferreterías, no te seria difícil encontrar un receptor con varios emisores vinculados, es mas el mismo vendedor de los que muestras seguro tiene esa opción o se la puedes pedir.
En cuanto a su conexión un relé es lo mismo que un pulsador, lo conectas igual que has conectado tus pulsadores y seguramente no tengas ni que cambiar el código que ya tienes.
Perfecto. Ya realice la compra de 2 controles diferentes para ir probando. Apenas me lleguen y los estudie voy a subir las fotos para que los veas, y cualquier cosa te estare solicitando ayuda.
Como siempre, muchas gracias y me mantengo en contacto.
Hola nuevamente gonpezzi. Te comento que ya me llego el recepto YK04.
Despues de muchos intentos y pensando que tenia que cambiar el codigo, me di cuenta que tenia mal la conexion, ya que cuando intentaba conectar tanto la matriz led con el receptor a 5v uno de los dos no me funcionaba.
Lo que hice fue conectar la matriz led a 5v de arduino uno, y el recepto al 3.3v del arduino, y apenas hice esto, con el mismo codigo que tenia anteriormente empezo a funcionar de maravilla !!!.
Ahora tengo que ver la forma de mejorar el alcance, ya que tengo que estar muy cerca para que me tome la senal, como asi tambien, pasar esto a alguna pcb, lo cual nunca hice y tendre que empezar a averiguar como hacerlo.
Tengo entendido por lo que estuve leyendo, que me va a convenir comprar un Arduino pro mini o algo similar, para cargar el codigo, y realizar las conexiones.
Si me puedes dar una mano con este tema te lo agradezco.
Adjunto imagen para que veas como va quedando.
Estás poniendo en serio riesgo la integridad del regulador de tensión del UNO, esa matriz LED puede fácilmente consumir más corriente de la que la placa puede entregar.
Hola Maximo. Gracias por tu respuesta.
El tema es que si no lo conecto al Arduino UNO con los 5v y GND no se muestra correctamente. Que me recomiendas hacer?
Tienes que usar una fuente aparte para la matriz (o la misma que usarás para el UNO mientras entregue corriente suficiente para todo, pero no alimentarla del pin 5V del UNO) y, por supuesto, con las masas (GND) unidas. Tanto el UNO como la matriz y el receptor deben tener la masa en común.
Maximo logre conectar como me dijiste. Lo que hice fue utilizar una fuente de PC y utilizar 3 cables rojos los cuales son de 5v cada uno, y poner el GND a la protoboard y que todo esten conectados a este mismo GND (A excepcion del arduino, el cual unicamente esta conectado por USB para que funcione)... lo unico que cuando utilizo el potenciometro para aumentar el brillo de la matriz led, la señal de los pulsadores deja de funcionar y tengo que estar casi pegado al enviar la señal.
Que puedo utilizar para ponerle una especie de antena al YK04, para que aumente considerablemente el alcance, ya que necesito como minimo 10 mts de alcance al aire libre, y no creo que soldaldole un cable aumente mucho el alcance.
Es extraño, no tengo ese modulo para probar pero todo lo que encuentro sobre el va conectado aa 5V.
Es posible que al bajarle la alimentación a 3,3V reduzcas el alcance. Y ¿le has puesto antena?
Si es por reducir tamaño te aconsejo mejor un arduino nano, si usas el pro mini tendrás que comprar también un conversor FTDI para subirle el código. Esos tres tipos de arduino son exactamente lo mismo, salvo que el pro mini no lleva el chip de comunicaciones con el PC.
Esa matriz con todos los pixeles encendidos a máxima potencia consume unos 450mA, teniendo en cuenta que no tendremos mas de un 40 % de led encendidos al mismo tiempo, unos 180mA, creo que el regulador del uno o el nano la soportan perfectamente.
Se han cruzado los mensajes, utiliza la foto anterior y extrapola dimensiones.