mejorar un proyecto

hola buenas, a ver si me pueden ayudar, tengo un proyecto finalizado y funcionando 100%. pero me preguntaba como poder meterle una mejora, la cual es que cuando tenga que introducir el código de desactivación, (el código es de 8 dígitos) salga en el código que hay que introducir en 8 displays de un digito de 7 segmentos. estoy harto de buscar por internet, pero nada no encuentro nada se como funcionan los displays pero no se como hacer esa opción.
Proyecto realizado: aqui
mejora del proyecto: aqui

Gracias de antemano. un saludo

Cual de los dos esquemas de Proyecto realizado es el que tu estas usando?
En ambos casos veo que no tienes mas pines disponibles por lo que deberás hacer algunos cambios/mejoras.
Tendras que reemplazar el LCD por un LCD I2C similar en cantidad de lineas y columnas.
Pero luego habrá que agregar un integrado MAX7219 y los 8 displays para poder presentar ahi el código que mencionas.
No es complicado.

hola gracias por responder tan rápido, el esquema que utilizo es el que esta a color, el lcd ese que mencionas lo tengo en camino por casualidad y los display tambien, y el integrado es este?

Bueno ya que no respondes asumo que usarás un lcd i2c.
Se recuperan los pines de 2 a 7 pero también hay que liberar 10 11 12
asi que

#include <LiquidCrystal_I2C.h> 
//#include <LiquidCrystal.h>
LiquidCrystal_I2C lcd(0x38,16,2);
//LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

y estos pines tmb cambian.

const byte REDLED   = 7;
const byte GREENLED = 6;
const byte RELAYPIN = 5;

por lo tanto debes conectar el LCD I2C a A4 y A5.
y cambia la definición del keypad

byte rowPins[ROWS] = { 2, 3,  4,  5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = { A0, A1, A2, A3}; //connect to the column pinouts of the keypad

ahora debemos agregar la librería MAX7219 y sus objetos y definciones.
Pero modifca esto y comprueba si todo funciona.
Luego agregamos el MAX7219

Esta fue mi respuesta: hola gracias por responder tan rápido, el esquema que utilizo es el que esta a color, el lcd ese que mencionas lo tengo en camino por casualidad y los display tambien, y el integrado es este?

surbyte:
Bueno ya que no respondes asumo que usarás un lcd i2c.
Se recuperan los pines de 2 a 7 pero también hay que liberar 10 11 12
asi que

#include <LiquidCrystal_I2C.h> 

//#include <LiquidCrystal.h>







LiquidCrystal_I2C lcd(0x38,16,2);
//LiquidCrystal lcd(7, 6, 5, 4, 3, 2);



y estos pines tmb cambian.


const byte REDLED  = 7;
const byte GREENLED = 6;
const byte RELAYPIN = 5;




por lo tanto debes conectar el LCD I2C a A4 y A5.
y cambia la definición del keypad




byte rowPins[ROWS] = { 2, 3,  4,  5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = { A0, A1, A2, A3}; //connect to the column pinouts of the keypad




ahora debemos agregar la librería MAX7219 y sus objetos y definciones.
Pero modifca esto y comprueba si todo funciona.
Luego agregamos el MAX7219

El lcd i2c y los display los tengo en camino, en cuanto me lleguen le meto mano y ya le digo. Un saludo y gracia por la ayuda.

Podrias decirme si el integrado es este?

Si ese es el integrado.

surbyte:
Si ese es el integrado.

Ok muchas gracias en cuanto lo tenga todo y las modificaciones que me ha dicho ya le comento y seguimos jeje. Un saludo

surbyte:
Si ese es el integrado.

hola buenas de nuevo ya realice los cambios que me dijo, pero me tira un error de compilación el cual es este:

BombPro.ino: In function 'void setup()':
BombPro.ino:99:18: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'
BombPro.ino:99:18: note: candidate is:
In file included from BombPro.ino:3:0:
C:\Users\Conchi\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()
void begin();
^
C:\Users\Conchi\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided
Error de compilación

he conseguido hace el hola mundo con el i2c que nunca lo habia usado y va bien. un saludo y gracias

El error que te da se autoexplica perfectamente (bueno, en inglés, pero perfectamente)
Has llamado a LCD.begin(x,y) con dos valores cuando no debes enviar ningún parámetro, es decir LCD.begin().

noter:
El error que te da se autoexplica perfectamente (bueno, en inglés, pero perfectamente)
Has llamado a LCD.begin(x,y) con dos valores cuando no debes enviar ningún parámetro, es decir LCD.begin().

gracias noter ahora funciona a la perfeccion, surbyte ya solo me faltan por llegar los displays, pero tengo uno aqui, ya podemos seguir con el siguiente paso, te espero, un saludo :slight_smile:

Jaja yo te espero a ti. EL proyecto es tuyo. Mira documentación, mira los ejemplos y no hace falta esperar a nadie.
Eso es lo que hago siempre con algo nuevo. Toda librería trae ejemplos y muchas documentación,, entonces los leo y luego intento entenderlos y veo como adapatarlo a mi necesidad. Haz lo mismo.

Por ahora e intentado traducirlo por que los juegos salen en ingles, ya lo hice en proyecto realizazo y me salio perfecto, y he cogido el mismo codigo y le hecho los ajustes para la pantalla i2c y me tira error de compilacion por poca memoria y puede que sea inestable y no sale nada en la pantalla, solo la parte de arriba con cuadros blancos. Sobre lo que me has dicho voy a investigar y a estudiar un poco y probar a ver si soy capaz de hacer algo :slight_smile: y vendre por aki con los resultados un saludo y gracias.

Tal vez este equivocado pero sería importante que compartas tu código y vemos que ocurre con la compilación.
No dices que librería estas usando.
Muchos en este foro usamos la librería fmalpartida que se descarga bajo el nombre NewLiquidCrystal, tiene soportados todos los tipos de LCD de texto incluso I2C o via shift register, ademas de 4 y 8bits y otro modo que no conozco.
Te la recomiendo.
Respecto del tema memoria, empieza a usar F() para decirle al compilador que no use memoria SRAM sino flash lo que te va a ir recuperando memoria.
Ejemplo

Serial.println("Imprimir variable");

lo reemplazas por

Serial.println(F("Imprimir variable"));

Hazlo con todos los carteles fijos y encontrarás recuperación de algunos bytes

hola buenas, aqui le adjunto los codigos que utilizo tanto el ingles (que me va perfecto) como el español( que he traducido) que es el que da fallo de compilacion, y las librerias que utilizo. lo que no me ha dado tiempo de hacer es reducir el tamaño del codigo como me digiste, pero si he investigado el max7219 y las libreria ledcontrol, he realizado el ejemplo que trae de display de 7 segmentos y todo perfecto, y tambien realice un par de ellos que vi por internet y todos me han salido a la perfeccion. se como poner numero en el digito pero solo en el primero no se como poner los numeros en los demas digitos, y tampoco me hago la idea de como hacer que enseñe ai la contraseña la cual se mete al empezar el juego. un saludo, y gracias.

LiquidCrystal_I2C.zip (15.7 KB)

keypad.zip (18.5 KB)

LedControl-master.zip (10.4 KB)

BombPro1.zip (12.4 KB)

BombPro.zip (12.3 KB)

que son estos archivos? Tus versiones?
BombPro1.zip y BombPro.zip.

Son los codigos que utilizo, son los que utilice para el proyecto realizado, pero con los cambios que me dijo, para la pantalla i2c que el que esta en ingles funciona perfectamente pero luego modifique el español y ya me daba el error de compilacion.