#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float GAMMA = 0.7;
const float RL10 = 50;
const int LDR_PIN = A1;
float readLDR() {
int analogValue = analogRead(LDR_PIN);
float voltage = analogValue / 1024.0 * 5.0;
float resistance = 2000.0 * voltage / (5.0 - voltage);
return pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, 1.0 / GAMMA);
}
const float BETA = 3950;
int analogValue;
float celsius;
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
int sel = analogRead(A5);
sel = map(sel, 0, 1023, 0, 7);
Serial.println(sel);
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:
lightSensor();
break;
}
}
void ch0() {
lcd.setCursor(2, 0);
lcd.print("Channel 0=");
lcd.setCursor(2, 1);
lcd.print(analogRead(A0));
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
void ch1() {
lcd.setCursor(2,0);
lcd.print("Channel 1=");
lcd.setCursor(2,1);
lcd.print(analogRead(A0));
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
}
void ch2() {
lcd.setCursor(2,0);
lcd.print("Channel 2=");
lcd.setCursor(2,1);
lcd.print(analogRead(A0));
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
void ch3() {
lcd.setCursor(2,0);
lcd.print("Channel 3=");
lcd.setCursor(2,1);
lcd.print(analogRead(A0));
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
}
void ch4() {
lcd.setCursor(2,0);
lcd.print("Channel 4=");
lcd.setCursor(2,1);
lcd.print(analogRead(A0));
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
void temp1() { lcd.setCursor(1,0);
lcd.print("tem 1=");
analogValue = analogRead(A0);
celsius = 1.0 / (log(1.0 / (1023.0 / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(1,1);
lcd.print(celsius);
lcd.print(" Celsius");
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
void temp2() {
lcd.setCursor(1,0);
lcd.print("tem 2=");
analogValue = analogRead(A0);
celsius = 1.0 / (log(1.0 / (1023.0 / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(1,1);
lcd.print(celsius);
lcd.print(" Celsius");
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
}
void lightSensor() {
lcd.setCursor(0,0);
lcd.println("Light Sensor=");
float luxValue = readLDR();
lcd.setCursor(0,1);
lcd.print(luxValue);
lcd.print(" luxvalue ");
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
Loading
cd74hc4067
cd74hc4067