//-----------------------------------------------------< library LCD >
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//-----------------------------------------------------< define >
char input;
char state = '0';
int temp;
int lux;
int humi;
int maptemp;
int maplux;
int maphumi;
unsigned long LstTime = 0;
#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define led6 7
#define led7 8
int LEDvalues = 0;
//-----------------------------------------------------< setup >
void setup() {
Serial.begin(9600);
lcd.init(); //lcd.begin();
lcd.backlight();
pinMode(A0,INPUT); //Temp
pinMode(A1,INPUT); //light
pinMode(A2,INPUT); //humidity
for(int i = 2; i <= 7; i++){
pinMode(i,OUTPUT);
}
}
//-----------------------------------------------------< loop >
void loop() {
//------------< Interupt >
if(millis() - LstTime >= 500){
LstTime = millis();
//------------- start
lcd.clear();
Fucn_Temp();
Fucn_Light();
Fucn_SoilHumi();
//------------- end
}
Func_StateMachine();
}
//-----------------------------------------------------< Func_StateMachine >
void Func_StateMachine(){
switch(state){
case '0': //main
Fucn_LCDcase0();
LEDvalues = 0;
Fucn_VolumnLED();
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();
LEDvalues = maptemp;
Fucn_VolumnLED();
Serial.println("state :" + String(state));
//------------< Read Input >
input = Serial.read();
//------------
if(input == '0'){
state = '0';
}
break;
case '2': //light
Fucn_LCDcase2();
LEDvalues = maplux;
Fucn_VolumnLED();
Serial.println("state :" + String(state));
//------------< Read Input >
input = Serial.read();
//------------
if(input == '0'){
state = '0';
}
break;
case '3': //humidity
Fucn_LCDcase3();
LEDvalues = maphumi;
Fucn_VolumnLED();
Serial.println("state :" + String(state));
//------------< Read Input >
input = Serial.read();
//------------
if(input == '0'){
state = '0';
}
break;
}
}
//-----------------------------------------------------< Fucn_Temp >
void Fucn_Temp(){
temp = analogRead(A0);
maptemp = map(temp,115,953,0,7); // minold, maxold, minnew,maxnew
}
//-----------------------------------------------------< Fucn_Light >
void Fucn_Light(){
lux = analogRead(A1);
maplux = map(lux,8,1015,0,7); // minold, maxold, minnew,maxnew
}
//-----------------------------------------------------< Fucn_SoilHumi >
void Fucn_SoilHumi(){
humi = analogRead(A2);
maphumi = map(humi,8,1015,0,7); // minold, maxold, minnew,maxnew
}
//-----------------------------------------------------< Fucn_LCDcase0 >
void Fucn_LCDcase0(){
lcd.setCursor(0, 0); lcd.print("1: RawTemp");
lcd.setCursor(0, 1); lcd.print("2: Light");
lcd.setCursor(0, 2); lcd.print("3: SoilHumi");
lcd.setCursor(13,3); lcd.print("[input]");
}
//-----------------------------------------------------< Fucn_LCDcase1 >
void Fucn_LCDcase1(){
lcd.setCursor(0, 0); lcd.print("[RawTemp]");
lcd.setCursor(7, 1); lcd.print(temp);
lcd.setCursor(12, 1); lcd.print("t");
lcd.setCursor(13, 3); lcd.print("0: back");
}
//-----------------------------------------------------< Fucn_LCDcase2 >
void Fucn_LCDcase2(){
lcd.setCursor(0, 0); lcd.print("[Light]");
lcd.setCursor(7, 1); lcd.print(lux);
lcd.setCursor(12, 1); lcd.print("lux");
lcd.setCursor(13, 3); lcd.print("0: back");
}
//-----------------------------------------------------< Fucn_LCDcase3 >
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");
}
//-----------------------------------------------------< Fucn_VolumnLED >
void Fucn_VolumnLED(){
if(LEDvalues == 0){
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 1){
digitalWrite(led1,1);
digitalWrite(led2,0);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 2){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,0);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 3){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);
digitalWrite(led4,0);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 4){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);
digitalWrite(led4,1);
digitalWrite(led5,0);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 5){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);
digitalWrite(led4,1);
digitalWrite(led5,1);
digitalWrite(led6,0);
digitalWrite(led7,0);
}
if(LEDvalues == 6){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);
digitalWrite(led4,1);
digitalWrite(led5,1);
digitalWrite(led6,1);
digitalWrite(led7,0);
}
if(LEDvalues == 7){
digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);
digitalWrite(led4,1);
digitalWrite(led5,1);
digitalWrite(led6,1);
digitalWrite(led7,1);
}
}