#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float flamelevel = 0;
#define redLED 7
#define greenLED 2
#define buzz 10
#define pitch 262
void setup() {
lcd.init();
lcd.clear();
lcd.backlight();
Serial.begin(9600);
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(buzz, OUTPUT);
}
void loop() {
float analogValue = analogRead(A0);
flamelevel = map(analogValue, 0, 1024, 100, 0);
Serial.print(flamelevel, 0);
Serial.println("%");
lcd.setCursor(0, 0);
lcd.print(F("Flame: "));
if (flamelevel >= 90) {
lcd.print("Full Fire");
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
delay(300);
tone(buzz, pitch);
digitalWrite(redLED, LOW);
}
if ((flamelevel >= 70) && (flamelevel < 90)) {
lcd.print("Firing ");
tone(buzz, pitch);
delay(300);
noTone(buzz);
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
if ((flamelevel < 70) && (flamelevel > 50) ) {
lcd.print("Idle fire ");
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, HIGH);
}
if ((flamelevel <= 50) && (flamelevel >= 30) ) {
lcd.print("Low fire ");
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
delay(300);
digitalWrite(greenLED, LOW);
}
if (flamelevel < 30) {
lcd.print("FIRE OUT! ");
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
lcd.setCursor(0, 1);
lcd.print(" Level: ");
lcd.print(flamelevel, 0);
lcd.print("% ");
delay(200);
}