#include <LiquidCrystal_I2C.h>
#define LDR_PIN_0 0
#define LDR_PIN_1 1
#define LDR_PIN_2 2
#define LDR_PIN_3 3
#define LDR_PIN_4 4
#define LDR_PIN_5 5
#define LDR_PIN_6 6
LiquidCrystal_I2C lcd(0x27, 20, 4);
int readLightSensors() {
if (digitalRead(LDR_PIN_2) == HIGH && digitalRead(LDR_PIN_3) == HIGH) {
return 7;
} else if (digitalRead(LDR_PIN_1) == HIGH && digitalRead(LDR_PIN_3) == HIGH) {
return 8;
} else if (digitalRead(LDR_PIN_0) == HIGH && digitalRead(LDR_PIN_3) == HIGH) {
return 9;
} else if (digitalRead(LDR_PIN_2) == HIGH && digitalRead(LDR_PIN_4) == HIGH) {
return 4;
} else if (digitalRead(LDR_PIN_1) == HIGH && digitalRead(LDR_PIN_4) == HIGH) {
return 5;
} else if (digitalRead(LDR_PIN_0) == HIGH && digitalRead(LDR_PIN_4) == HIGH) {
return 6;
} else if (digitalRead(LDR_PIN_2) == HIGH && digitalRead(LDR_PIN_5) == HIGH) {
return 1;
} else if (digitalRead(LDR_PIN_1) == HIGH && digitalRead(LDR_PIN_5) == HIGH) {
return 2;
} else if (digitalRead(LDR_PIN_0) == HIGH && digitalRead(LDR_PIN_5) == HIGH) {
return 3;
} else if (digitalRead(LDR_PIN_2) == HIGH && digitalRead(LDR_PIN_6) == HIGH) {
return -1; // Placeholder for special character #
} else if (digitalRead(LDR_PIN_1) == HIGH && digitalRead(LDR_PIN_6) == HIGH) {
return 0;
} else if (digitalRead(LDR_PIN_0) == HIGH && digitalRead(LDR_PIN_6) == HIGH) {
return -2; // Placeholder for special character *
} else {
return -3; // Placeholder for no valid key
}
}
void setup() {
pinMode(LDR_PIN_0, INPUT);
pinMode(LDR_PIN_1, INPUT);
pinMode(LDR_PIN_2, INPUT);
pinMode(LDR_PIN_3, INPUT);
pinMode(LDR_PIN_4, INPUT);
pinMode(LDR_PIN_5, INPUT);
pinMode(LDR_PIN_6, INPUT);
lcd.init();
lcd.backlight();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Keypad: ");
int key = readLightSensors();
if (key >= 0) {
lcd.print(key);
} else if (key == -1) {
lcd.print("#");
} else if (key == 0) {
lcd.print("*");
} else {
lcd.print(" ");
}
delay(100);
}