//library
#include <Wire.h> //I2C
#include <LiquidCrystal_I2C.h> //LCD protocol I2C
LiquidCrystal_I2C lcd(0x27, 20, 4);
int temp;
int photo;
int humi;
char state = '0';
char input;
unsigned long LstTime = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(A1,INPUT); //T
pinMode(A2,INPUT); //P
pinMode(A0,INPUT); //H
}
void loop() {
//interupt
if(millis() - LstTime >= 500){
LstTime = millis();
//start
lcd.clear();
Fucn_Temp();
Fucn_Photo();
Fucn_Humi();
//end
}
Fucn_StateMachine();
}
void Fucn_StateMachine(){
switch(state){
case '0' ://main
Fucn_LCDcase0();
Serial.println("state :" + String(state));
//read input
input = Serial.read();
if(input == '1'){
state = '1';
}
if(input == '2'){
state = '2';
}
if(input == '3'){
state = '3';
}
break;
case '1' ://Temp
Fucn_LCDcase1();
Serial.println("state :" + String(state));
//read input
input = Serial.read();
if(input == '0'){
state = '0';
}
break;
case '2' ://Temp
Fucn_LCDcase2();
Serial.println("state :" + String(state));
//read input
input = Serial.read();
if(input == '0'){
state = '0';
}
break;
case '3' ://Temp
Fucn_LCDcase3();
Serial.println("state :" + String(state));
//read input
input = Serial.read();
if(input == '0'){
state = '0';
}
break;
}
}
void Fucn_Temp(){
temp = analogRead(A1);
}
void Fucn_Photo(){
photo = analogRead(A2);
}
void Fucn_Humi(){
humi = analogRead(A0);
}
//case0
void Fucn_LCDcase0(){
lcd.setCursor(0,0); lcd.print("1: Temp");
lcd.setCursor(0,1); lcd.print("2: Light");
lcd.setCursor(0,2); lcd.print("3: SoilHumi");
lcd.setCursor(13,3); lcd.print("[input]");
}
//case1
void Fucn_LCDcase1(){
lcd.setCursor(0,0); lcd.print("[Temp]");
lcd.setCursor(7,1); lcd.print(temp);
lcd.setCursor(12,1); lcd.print("C");
lcd.setCursor(13,3); lcd.print("0:back");
}
//case2
void Fucn_LCDcase2(){
lcd.setCursor(0,0); lcd.print("[Light]");
lcd.setCursor(7,1); lcd.print(photo);
lcd.setCursor(12,1); lcd.print("lux");
lcd.setCursor(13,3); lcd.print("0:back");
}
//case3
void Fucn_LCDcase3(){
lcd.setCursor(0,0); lcd.print("SoilHumi");
lcd.setCursor(7,1); lcd.print(humi);
lcd.setCursor(12,1); lcd.print("H");
lcd.setCursor(13,3); lcd.print("0:back");
}