float cTemp;
int pins[6]= {0, 4, 5, 16, 17, 18};
bool btnStatus = true;
void setup() {
//LED bar initialization
set_output(pins);
//NTC init
pinMode(25, INPUT);
//Button init
pinMode(27, INPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void set_output(int pins[6]){
for(int it = 0; it<6; ++it) {
pinMode(pins[it], OUTPUT);
}
}
void alarm()
{
set_high(pins);
delay(1000);
set_low(pins);
delay(1000);
Serial.println("Alarm");
}
void set_high(int pins[6]){
for(int it = 0; it<6; ++it) {
digitalWrite(pins[it], HIGH);
}
}
void set_low(int pins[6]){
for(int it = 0; it<6; ++it) {
digitalWrite(pins[it], LOW);
}
}
void setLedBar(int currentTemerature, int targetTemperature)
{
if(currentTemerature + 10 < targetTemperature)
digitalWrite(18, LOW);
else digitalWrite(18, HIGH);
if(currentTemerature + 5 < targetTemperature)
digitalWrite(5, LOW);
else digitalWrite(5, HIGH);
if(currentTemerature < targetTemperature)
digitalWrite(17, LOW);
else digitalWrite(17, HIGH);
if(currentTemerature -5 < targetTemperature)
digitalWrite(16, LOW);
else digitalWrite(16, HIGH);
if(currentTemerature -10 < targetTemperature)
digitalWrite(4, LOW);
else digitalWrite(4, HIGH);
if(currentTemerature -15 < targetTemperature)
digitalWrite(0, LOW);
else digitalWrite(0, HIGH);
}
float getTemperature(int analogValue)
{
float BETA = 3950; // should match the Beta Coefficient of the thermistor
float celsius = 1 / (log(1 / (4095.0 / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
return celsius;
}
void setBtnStatus()
{
btnStatus = digitalRead(27)==LOW;
}
void loop() {
cTemp = getTemperature(analogRead(25));
setBtnStatus();
if(btnStatus && cTemp < 75.0){
setLedBar(cTemp, 55);
}
else{
if(cTemp > 75.0) alarm();
else set_low(pins);
}
delay(10); // this speeds up the simulation
}