#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
const float BETA = 3950;
int lcdpin = 4;
int inputpin = 23;
int pirstate = LOW;
int val = 0;
int tem_mo = 0;
int number_mo = 0;
#define ledpin 2
void setup() {
pinMode(inputpin, INPUT);
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
LCD.init();
}
void loop() {
val = digitalRead(inputpin);
int analogValue = analogRead(13);
float celsius = 1 / (log(1 / (4096. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperature: ");
Serial.print(celsius );
Serial.println(" ℃");
delay(1000);
Serial.print("LIGHT: ");
Serial.print("OFF. " );
delay(1000);
if (val == HIGH) {
tem_mo =tem_mo + celsius ;
number_mo = number_mo + 1;
int avg_tem_mo =tem_mo/number_mo;
digitalWrite(lcdpin, HIGH);
if (pirstate == LOW){
LCD.setCursor(0, 0);
LCD.println("temperature:");
LCD.println(celsius);
LCD.setCursor(0, 3);
LCD.println("average");
LCD.println(avg_tem_mo);
pirstate = HIGH;
if (celsius < 10){
LCD.setCursor(0, 2);
LCD.println("LED On");
digitalWrite(ledpin, 1);
Serial.print("LIGHT: ");
Serial.print("ON" );
delay(5000);
digitalWrite(ledpin, LOW);
}
}
} else{
digitalWrite(lcdpin, LOW);
if (pirstate == HIGH) {
// we have just turned of
LCD.clear();
// We only want to print on the output change, not state
pirstate = LOW;
}
}
}