#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const uint8_t ROWS = 4;
const uint8_t COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3' },
{ '4', '5', '6' },
{ '7', '8', '9' },
{ '*', '0', '#' }
};
uint8_t colPins[COLS] = { 6, 7, 8 };
uint8_t rowPins[ROWS] = { 2, 3, 4, 5 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String data = "";
int sw1 = 0;
int datasp = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("SP: 0 | PV: 0 ");
lcd.setCursor(0, 1);
lcd.print("State:0 ");
delay(1000);
pinMode(A0, INPUT_PULLUP);
}
void loop() {
int sw = !digitalRead(A0);
if (sw != sw1) {
sw1 = sw;
Serial.print("a,");
Serial.println(sw);
}
char key = keypad.getKey();
if (key != NO_KEY) {
if (key != '#') {
if (key == '*') {
lcd.setCursor(0, 0);
lcd.print("SP: 0 ");
data = "";
} else {
data = data + key;
datasp = data.toInt();
lcd.setCursor(3, 0);
if (datasp < 10) lcd.print(" ");
if (datasp < 100) lcd.print(" ");
lcd.print(datasp);
}
}
else {
Serial.print("b,");
Serial.println(datasp);
datasp = "";
}
}
}
void serialEvent() {
while (Serial.available()) {
int datapv = Serial.parseInt();
int datastate = Serial.parseInt();
if (Serial.read() == char(13)) {
lcd.setCursor(12, 0);
if (datapv < 10) lcd.print(" ");
if (datapv < 100) lcd.print(" ");
lcd.print(datapv);
lcd.setCursor(6, 1);
if (datastate < 10) lcd.print("0");
lcd.print(datastate);
}
}
}
Man/Auto