#include <Keypad.h> // importa libreria Keypad
const byte FILAS = 4; // define numero de filas
const byte COLUMNAS = 4; // define numero de columnas
char keys[FILAS][COLUMNAS] = { // define la distribucion de teclas
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinesFilas[FILAS] = {6,7,8,9}; // pines correspondientes a las filas
byte pinesColumnas[COLUMNAS] = {10,11,12,13}; // pines correspondientes a las columnas
Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS); // crea objeto
char TECLA; // almacena la tecla presionada
int VERDE = 2; //variable de la luz verde
int ROJO = 3; // variable de la luz roja
int AMARILLO = 4; //variable de la luz amarilla
int BLANCO = 5; // variable de la luz blanca
void setup() {
// put your setup code here, to run once:
pinMode(VERDE,OUTPUT); //definicion de las variables como salida
pinMode(ROJO,OUTPUT);
pinMode(AMARILLO,OUTPUT);
pinMode(BLANCO,OUTPUT);
digitalWrite(VERDE,LOW); // inicializacion de las luces con la orden de parada por defecto.
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
Serial.begin(9600); // inicializa comunicacion serie
}
void loop() {
TECLA = teclado.getKey(); // obtiene tecla presionada y asigna a variable
if (TECLA!=NO_KEY) { // comprueba que se haya presionado una tecla
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);}
if (TECLA == '1'){// OPCION 1 VIA LIBRE
digitalWrite(VERDE,HIGH);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);}
if (TECLA == '2'){// OPCION 2 VIA LIBRE CONDICIONAL
char PARO;
while(PARO !='2'){
digitalWrite(VERDE,HIGH);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
delay(250);
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
delay(250);
PARO = teclado.getKey();
}}
if (TECLA=='3'){
digitalWrite(VERDE,HIGH);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,HIGH);
digitalWrite(BLANCO,LOW);
}
if (TECLA=='4'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,HIGH);
digitalWrite(BLANCO,LOW);
}
if (TECLA=='5'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,HIGH);
digitalWrite(BLANCO,LOW);
delay(250);
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
delay(250);
if (TECLA=='6'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
}
if (TECLA=='7'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,HIGH);
delay(250);
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,LOW);
delay(250);
}
if (TECLA=='8'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,HIGH);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,HIGH);
if (TECLA=='9'){
digitalWrite(VERDE,LOW);
digitalWrite(ROJO,LOW);
digitalWrite(AMARILLO,LOW);
digitalWrite(BLANCO,HIGH);
}
}}}