#include <LiquidCrystal_I2C.h>;
LiquidCrystal_I2C lcd(0x27,20,4) ;
void setup() {
lcd.init();
lcd.backlight();
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6,OUTPUT);
pinMode(7, OUTPUT);
}
void loop() {
int sel=analogRead(5);
sel=map(sel,0,1023,0,7);
switch(sel){
case 0 :
ch0();
break;
case 1:
ch1();
break;
case 2:
ch2 ();
break;
case 3:
ch3();
break;
case 4:
ch4();
break;
case 5:
temp1 ();
break;
case 6:
temp2 ();
break;
case 7:
LDR ();
break;
}
delay(200);
}
void ch0() {
lcd.setCursor(2,0);
lcd.print("ch0 = ");
lcd.setCursor(2,1);
lcd.print(analogRead(0));
delay(400);
lcd.clear();
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
void ch1() {
lcd.setCursor(2,0);
lcd.print("ch1 = ");
lcd.setCursor(2,1);
lcd.print(analogRead(0));
delay(400);
lcd.clear();
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
void ch2() {
lcd.setCursor(2,0);
lcd.print("ch2 = ");
lcd.setCursor(2,1);
lcd.print(analogRead(0));
delay(400);
lcd.clear();
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
void ch3() {
lcd.setCursor(2,0);
lcd.print("ch3 = ");
lcd.setCursor(2,1);
lcd.print(analogRead(0));
delay(400);
lcd.clear();
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
}
void ch4() {
lcd.setCursor(2,0);
lcd.print("ch4 = ");
lcd.setCursor(2,1);
lcd.print(analogRead(0));
delay(400);
lcd.clear();
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
}
void temp1() {
lcd.setCursor(2,2);
const float BETA = 3950;
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.print("temperature 1= ");
lcd.setCursor(2,3);
lcd.print(celsius);
lcd.println(" ℃");
delay(400);
lcd.clear();
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
}
void temp2() {
const float BETA = 3950;
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(2,2);
lcd.print("temperature 2= ");
lcd.setCursor(2,3);
lcd.print(celsius);
lcd.println(" ℃");
delay(400);
lcd.clear();
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
}
void LDR() {
const float GAMMA = 0.7;
const float RL10 = 50;
int analogValue = analogRead(A1);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd.setCursor(9,0);
lcd.print("LDR = ");
lcd.setCursor(9,1);
lcd.print(lux);
delay(400);
lcd.clear();
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
}