/*
* Programación del teclado de tipo matricial también conocido como interruptor de membrana.
*/
#include "Keypad.h" //Librería necesaria para controlar el interruptor de membrana (Herramientas > Administrador de bibliotecas > Keypad).
/*Definición de dos variables constantes de 8 bits cada una, lo que nos sirven para guardar los valores (valores entre 0 y 255) introducidos por teclado.*/
const byte FILAS = 4; // Número de filas.
const byte COLUMNAS = 4; // Número de columnas.
//Definición de una matriz con todas las teclas que componen el teclado.
char teclas[FILAS][COLUMNAS] =
{
{'1','2','3', 'A'}, //Fila(0), Columnas(0, 1, 2, 3); Hola soy un tigre rosa.
{'4','5','6', 'B'}, //Fila(1), Columnas(0, 1, 2, 3);
{'7','8','9', 'C'}, //Fila(2), Columnas(0, 1, 2, 3);
{'*','0','#', 'D'} //Fila(3), Columnas(0, 1, 2, 3);
};
byte filasPines[FILAS] = {9, 8, 7, 6}; //Pines a los que están conectadas las teclas de las filas.
byte columnasPines[COLUMNAS] = {5, 4, 3, 2}; //Pines a los que están conectadas las teclas de las columnas.
Keypad keypad = Keypad(makeKeymap(teclas), filasPines, columnasPines, FILAS, COLUMNAS); //Declaración de la variable objeto de tipo Keypad.
#define r 10
#define g 11
#define b 12
void setup()
{
Serial.begin(9600); //Establecimiento de la comunicación arduino - pc a 9600 baudios de velocidad.
pinMode(r,OUTPUT);
pinMode(g,OUTPUT);
pinMode(b,OUTPUT);
}
void loop()
{
char tecla;
tecla = keypad.getKey();
if(tecla != NO_KEY) //tecla == true
{
Serial.println(tecla);
if(tecla == '0')
{
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
}
else if(tecla == '1')
{
digitalWrite(r, HIGH);
digitalWrite(g, HIGH);
digitalWrite(b, HIGH);
}
else if(tecla == '2')
{
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
}
else if(tecla == '3')
{
digitalWrite(r, LOW);
digitalWrite(g, HIGH);
digitalWrite(b, LOW);
}
else if(tecla == '4')
{
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, HIGH);
}
else if(tecla == '5')
{
digitalWrite(r, HIGH);
digitalWrite(g, HIGH);
digitalWrite(b, LOW);
}
else if(tecla == '6')
{
digitalWrite(r, LOW);
digitalWrite(g, HIGH);
digitalWrite(b, HIGH);
}
else if(tecla == '7')
{
digitalWrite(r, HIGH);
digitalWrite(g, LOW);
digitalWrite(b, HIGH);
}
else if(tecla == '*')
{
int i;
for(i = 10; i<=12; i++)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
}
else if(tecla == '#')
{
int i;
for(i=12; i>=10; i--)
{
digitalWrite(i,HIGH);
delay(200);
digitalWrite(i,LOW);
delay(200);
}
}
}
else
{
Serial.println("Información no encontrada");
}
//Es necesario añadir este delay para visualizar la tecla pulsada.
delay(100);
}