Control de acceso y salida de parking con arduino UNO R3

Hola!

Estoy haciendo un proyecto de un parking con arduino UNO R3.

Realice el siguiente esquema.

Y tendria que funcional de la siguiete manera.

Entrada coche: Pulsación botón entrada y asignación sitio por el LCD.
Entrada moto: Pulsación tecla A. No hay asignación de sitio.
Entrada minusválido: Pulsación tecla B. No hay asignación de sitio.

Salida coche: Pulsación botón salida e introducción por teclado sitio abandonado.
Salida moto: Pulsación tecla C.
Salida minusválido: Pulsación tecla D.

PARKING COMPLETO
Coches: Al llenarse los 6 sitios se indica por pantalla y no se permite el acceso al parking
Motos: Al llenarse los 4 sitios se indicará solo al intentar acceder con una moto.
Minusválidos: Análogo al caso de las motos.

El caso es que el programa lo cargo en el arduino pero cuando pulso la tecla de salida a la primera no se abre la barrera pero si suma una plaza libre mas.
Y si es una moto o misnuvalido que sale esa plaza libre se suma a las de los coches normales y las plaza de coche o minusválido sigue igual.

He revisado todo el código y no detecto el fallo que hay en el.

El programa esta ajuntado en un archivo porque sobrepasa los caracteres permitidos.

Alguien hace el favor de echarle un vistazo a ver si me ayuda, por favor.

Muchas gracias.

Parking.ino (9.32 KB)

Bueno no sabes si Keypad esta funcionando o no?

Un simple

char pulsacionAnt;
... antes del setup

 Serial.begin(9600);

en el setup

y luego de presionar la tecla pones

char pulsacion = Teclado1.getKey() ;

if (pulsacion != pulsacionAnt && pulsacion != NOKEY)
    Serial.prinln("Presioné : " + String(pulsacion));
pulsacionAnt = pulsacion;

Esto que hará, siempre que se pulse algo por eso pregunto para que sea != NOKEY y que sea distinta de la anterior entonces la muestro por el MOnitor Serie.

Abres el monitor Serie y miras si sale A cuando presionas A.
Simple.

Buenas!

Surbyte depues de hacer lo que me dijiste, efectivamente el Keypad estaba mal conectado.

Ya solucioné ya conexionado el keypad, GRACIAS.

Pero igual sigue sin restar las plazas de motos y minus que salen y la sigue sumando a las plazas normales

Ese es otro problema y algo que tu puedes resolver, asi que pelea un poco con el código.

Es algo en las sumas y restas así que presta atención a eso, y por como esta hecho tu código lo haces varias veces lo cual es un error.
Las sumas y restas de los sitios deben controlarse en un solo sitio.

Tu loop debe comandar las rutinas adecuadas y tu desde ahi debes poder VISUALIZAR el control del programa.
Tal como está es dificil verlo.

Ahora no me es posible pero luego le pongo unos cuantos minutos y lo rehago.

OK

Muchas gracias de todas formas

sitiosMoto en ningún momento se incrementa si sale una moto
Tampoco veo una salida Moto disponible que es como incrementas sitios
Lo mismo para sitiosMinus, no tienes un sitiosMinus++