#include <Keypad.h>
const int wait = 1000;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {46, 47, 48, 49}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {50, 51, 52, 53}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int relayPin[16] = {22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};
int pushed[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int relayStatus[] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
void setup() {
for(int i=0; i<14; i++){
pinMode(relayPin[i], OUTPUT);
digitalWrite(relayPin[i], HIGH);
}
}
void loop(){
static bool halt = false;
char key = keypad.getKey();
if(halt){
return;
}
if (key == '1'){
digitalWrite(relayPin[0], LOW);
delay(wait);
digitalWrite(relayPin[0], HIGH);
}
if (key == '2'){
digitalWrite(relayPin[1], LOW);
delay(wait);
digitalWrite(relayPin[1], HIGH);
}
if (key == '3'){
digitalWrite(relayPin[2], LOW);
delay(wait);
digitalWrite(relayPin[2], HIGH);
}
else if (key == 'A'){
digitalWrite(relayPin[3], LOW);
delay(wait);
digitalWrite(relayPin[3], HIGH);
}
if (key == '4'){
digitalWrite(relayPin[4], LOW);
delay(wait);
digitalWrite(relayPin[4], HIGH);
}
if (key == '5'){
digitalWrite(relayPin[5], LOW);
delay(wait);
digitalWrite(relayPin[5], HIGH);
}
if (key == '6'){
digitalWrite(relayPin[6], LOW);
delay(wait);
digitalWrite(relayPin[6], HIGH);
}
if (key == 'B'){
digitalWrite(relayPin[7], LOW);
delay(wait);
digitalWrite(relayPin[7], HIGH);
}
if (key == '7'){
digitalWrite(relayPin[8], LOW);
delay(wait);
digitalWrite(relayPin[8], HIGH);
}
if (key == '8'){
digitalWrite(relayPin[9], LOW);
delay(wait);
digitalWrite(relayPin[9], HIGH);
}
if (key == '9'){
digitalWrite(relayPin[10], LOW);
delay(wait);
digitalWrite(relayPin[10], HIGH);
}
if (key == 'C'){
digitalWrite(relayPin[11], LOW);
delay(wait);
digitalWrite(relayPin[11], HIGH);
}
if (key == '*'){
digitalWrite(relayPin[12], LOW);
delay(wait);
digitalWrite(relayPin[12], HIGH);
}
if (key == '0'){
digitalWrite(relayPin[13], LOW);
delay(wait);
digitalWrite(relayPin[13], HIGH);
}
if (key == '#'){
for(int i = 0; i < 14; i++){
digitalWrite(relayPin[i], LOW);
delay(wait);
digitalWrite(relayPin[i], HIGH);
delay(wait);
}
}
if (key == 'D'){ // When 'D' is pressed I would like the program to stop.
halt = true;
return;
}
}
void controlRelay(int number){
if(pushed[number] == 1){
digitalWrite(relayPin[number], LOW);// Turn ON relay
}else{
digitalWrite(relayPin[number], HIGH); // turn OFF
}
}