/*
**************************************************************
* Coal Stoker Flame Size Detector *
* Inspired by Uri Shaked project at *
* https://wokwi.com/arduino/projects/305193627138654786 *
* Layout used as starting point *
* Copyright 2022 John Clark *
* Version 0.10 *
**************************************************************
*/
#include <Servo.h>
float flamelevel = 0; // mapped and inverted % of sensor range
Servo servo;
// empirically relate flame % to actual fire condition (TBD)
const int minSurvive = 15; // minimum level for idle, below is outfire
const int idleLow = 20; // lowest reading for healthy idle
const int idleTarget = 30; // target reading for resting idle
const int firingLow = 70; // lowest reading for actively firing
const int firingHigh = 90; // reading for full firing
void setup() {
Serial.begin(9600);
servo.attach(4);
// pinMode(redLED, OUTPUT); // set red led pin as output
// digitalWrite(redLED, LOW); // turn off red led
pinMode(0, INPUT);
pinMode(8, OUTPUT);
pinMode(6, OUTPUT);
servo.write(270);
digitalWrite(8, LOW);
digitalWrite(6, LOW);
}
void loop() {
float analogValue = analogRead(A0);
Serial.print("Sensor RAW: ");
Serial.println(analogValue, 0);
flamelevel = map(analogValue, 0, 1024, 100, 0);
Serial.print(flamelevel, 0);
Serial.println("%");
if (flamelevel >= firingHigh) {
digitalWrite(8, HIGH);
digitalWrite(6, HIGH);
servo.write(270-180);
}
if (flamelevel <= idleLow) {
digitalWrite(8, LOW);
digitalWrite(6, LOW);
servo.write(270);
}
delay(200);
}