#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'-', '3', '-'},
{'-', '2', '-'},
{'-', '1', '-'},
{'*', '-', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
for (int i = 0; i < 7; i++) {
pinMode(9 + i, OUTPUT);
}
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Tgt: 0 |1|close");
lcd.setCursor(0, 1);
lcd.print("Pos: 0 |1|stop ");
delay(1000);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == '*') {
lcd.setCursor(11, 0);
lcd.print("open ");
}
if (key == '#') {
lcd.setCursor(11, 0);
lcd.print("close");
}
if (key == '1') {
lcd.setCursor(4, 0);
lcd.print(" 0 |1");
}
if (key == '2') {
lcd.setCursor(4, 0);
lcd.print("-156|2");
}
if (key == '3') {
lcd.setCursor(4, 0);
lcd.print("-312|3");
}
Serial.println(key);
}
delay(10);
}
void serialEvent() {
while (Serial.available()) {
int data1 = Serial.parseInt();//lift position
int data2 = Serial.parseInt();//up/down
int data3 = Serial.parseInt();//open/close
if (Serial.read() == char(13)) {
lcd.setCursor(4, 1);
lcd.print(" ");
if (data1 >= 0) lcd.setCursor(5, 1);
else lcd.setCursor(4, 1);
lcd.print(data1);
switch (data1) {
case 1:
lcd.setCursor(9, 1);
lcd.print("1");
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
break;
case -157 ... -155:
lcd.setCursor(9, 1);
lcd.print("2");
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
break;
case -313:
lcd.setCursor(9, 1);
lcd.print("3");
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
break;
default:
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
break;
}
lcd.setCursor(11, 1);
if (data2 == 1) {
lcd.print("up ");
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
}
if (data2 == 2) {
lcd.print("down ");
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
}
if (data2 == 0 || data2 == 3) {
lcd.print("stop ");
digitalWrite(13, LOW);
digitalWrite(12, LOW);
}
lcd.setCursor(11, 0);
if (data3 == 1) {
lcd.print("open ");
digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
}
if (data3 == 2) {
lcd.print("close");
digitalWrite(A0, LOW);
digitalWrite(A1, HIGH);
}
if (data3 == 0 || data3 == 3) {
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
Serial.println(" ");
}
}
}
}
Floor-3
Floor-2
Floor-1
Down
Up
Open
Close