#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
#define rele 7
#define ntc A2
#define ldr A2
#define button_up 2
#define button_down 4
#define button_joy A3
#define rgb_blue 7
#define rgb_green 9
#define rgb_red 10
#define led 13
int a = 30;
const char degreeSymbol = 223;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int oldButtonUpPressed = 0;
int oldButtonDownPressed = 0;
int oldButtonjoyPressed = 0;
int flag = 0;
int switchState = 0;
int oldflag = 0;
int time = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(rele, OUTPUT);
pinMode(rgb_blue, OUTPUT);
pinMode(rgb_green, OUTPUT);
pinMode(rgb_red, OUTPUT);
pinMode(led, OUTPUT);
pinMode(ntc, INPUT);
pinMode(ldr, INPUT);
pinMode(button_up, INPUT);
pinMode(button_down, INPUT);
pinMode(button_joy, INPUT);
lcd.setCursor(4, 0);
lcd.print("MADE IN");
lcd.setCursor(4, 1);
lcd.print("TEXNOLAB");
delay(2000);
lcd.clear();
}
void loop() {
int button_up_value = digitalRead(button_up);
int button_down_value = digitalRead(button_down);
int button_joy_value = digitalRead(button_joy);
int ldr_value = analogRead(ldr);
Serial.println(button_joy);
lcd.setCursor(4, 1);
lcd.print(a);
lcd.print(degreeSymbol);
lcd.print(" ");
if (button_up_value == 0) {
if (millis() - oldButtonUpPressed > 150) {
a++;
oldButtonUpPressed = millis();
}
}
if (button_down_value == 0) {
if (millis() - oldButtonDownPressed > 150) {
a--;
oldButtonDownPressed = millis();
}
}
if (digitalRead(button_joy) == 0) {
digitalWrite(13, HIGH);
if (millis() - oldflag > 150) {
flag = !flag;
time = millis();
oldflag = millis();
}
}
if (flag == 1) {
if (millis() - oldButtonjoyPressed > 300) {
digitalWrite(rgb_blue, 1);
lcd.setCursor(0, 1);
lcd.print(temp_measurement());
lcd.print(degreeSymbol);
lcd.print(" ");
lcd.setCursor(11, 1);
lcd.print((millis() - time) / 1000);
lcd.print(" ");
oldButtonjoyPressed = millis();
if (temp_measurement() <= a) {
digitalWrite(rgb_red, 0);
digitalWrite(rgb_green, 1);
digitalWrite(rele, 1);
lcd.setCursor(8, 1);
lcd.print("AK");
} else {
digitalWrite(rgb_red, 1);
digitalWrite(rgb_green, 0);
digitalWrite(rele, 0);
lcd.setCursor(8, 1);
lcd.print("PS");
}
if (ldr_value > 750) {
lcd.setCursor(15, 1);
lcd.print("A");
} else {
lcd.setCursor(15, 1);
lcd.print("G");
}
}
} else {
lcd.setCursor(0, 0);
lcd.print("TEM IDT SV TM I");
lcd.setCursor(0, 1);
lcd.print("--- -- -- -");
digitalWrite(rgb_blue, 0);
digitalWrite(rgb_red, 0);
digitalWrite(rgb_green, 0);
digitalWrite(rele, 0);
time = millis();
}
}
int temp_measurement() {
int ntc_value = analogRead(ntc);
float v = ntc_value * 5.0 / 1024;
float Rt = 10 * v / (5 - v);
float tempK = 1 / (log(Rt / 10) / 3950 + 1 / (273.15 + 25));
int tempC_f = tempK - 273.15;
return tempC_f;
}