#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define R1 12
#define R2 11
#define R3 10
#define R4 9
#define C1 8
#define C2 7
#define C3 6
#define Led 4
unsigned long Ttime;
int keyindex=0;
int in1=0,in2=0,set=20;
const float BETA = 3950;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup()
{
pinMode(Led,OUTPUT);
pinMode(R1,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(R3,OUTPUT);
pinMode(R4,OUTPUT);
pinMode(C1,INPUT_PULLUP);
pinMode(C2,INPUT_PULLUP);
pinMode(C3,INPUT_PULLUP);
digitalWrite(R1,HIGH);
digitalWrite(R2,HIGH);
digitalWrite(R3,HIGH);
digitalWrite(R4,HIGH);
Serial.begin(115200);
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(0, 0);
lcd.print(F("Hello, world!"));
lcd.setCursor(0, 1);
lcd.print(F("enter set temp"));
delay(2000);
}
void loop()
{
int key=scankey();
if(key!=20)
{
Serial.println(key);
if(keyindex==0)
{
lcd.setCursor(0, 1);
lcd.print(F("Set T: "));
lcd.setCursor(6, 1);
lcd.print(key);
in1=key;
keyindex++;
}else
{
lcd.setCursor(7, 1);
lcd.print(key);
lcd.print(" ");
in2=key;
set=(in1*10)+in2;
Serial.print("set:");
Serial.println(set);
keyindex=0;
}
delay(100);
}
checkT();
}
void checkT()
{
if ((millis() - Ttime) > 1000)
{
Ttime=millis();
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
lcd.setCursor(0, 0);
lcd.print(F("Temperature:"));
lcd.print(celsius,1);
lcd.print((char)223);
lcd.print(F("C "));
if(celsius>=set)
{
digitalWrite(Led, HIGH);
lcd.setCursor(10, 1);
lcd.print("On ");
}
else
{
digitalWrite(Led, LOW);
lcd.setCursor(10, 1);
lcd.print("Off ");
}
}
}
int scankey()
{
int tempKey=20;
digitalWrite(R1,LOW);
if(digitalRead(C1)==0){ tempKey=1;}
else if(digitalRead(C2)==0){ tempKey=2;}
else if(digitalRead(C3)==0){ tempKey=3;}
digitalWrite(R1,HIGH);
digitalWrite(R2,LOW);
if(digitalRead(C1)==0){ tempKey=4;}
else if(digitalRead(C2)==0){ tempKey=5;}
else if(digitalRead(C3)==0){ tempKey=6;}
digitalWrite(R2,HIGH);
digitalWrite(R3,LOW);
if(digitalRead(C1)==0){ tempKey=7;}
else if(digitalRead(C2)==0){ tempKey=8;}
else if(digitalRead(C3)==0){ tempKey=9;}
digitalWrite(R3,HIGH);
digitalWrite(R4,LOW);
if(digitalRead(C1)==0){ tempKey=10;}
else if(digitalRead(C2)==0){ tempKey=0;}
else if(digitalRead(C3)==0){ tempKey=12;}
digitalWrite(R4,HIGH);
delay(40);
return tempKey;
}
mega:A5.2
mega:A4.2
mega:AREF
mega:GND.1
mega:13
mega:12
mega:11
mega:10
mega:9
mega:8
mega:7
mega:6
mega:5
mega:4
mega:3
mega:2
mega:1
mega:0
mega:IOREF
mega:RESET
mega:3.3V
mega:5V
mega:GND.2
mega:GND.3
mega:VIN
mega:A0
mega:A1
mega:A2
mega:A3
mega:A4
mega:A5
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
btn5:1.l
btn5:2.l
btn5:1.r
btn5:2.r
btn6:1.l
btn6:2.l
btn6:1.r
btn6:2.r
btn7:1.l
btn7:2.l
btn7:1.r
btn7:2.r
btn8:1.l
btn8:2.l
btn8:1.r
btn8:2.r
btn9:1.l
btn9:2.l
btn9:1.r
btn9:2.r
btn10:1.l
btn10:2.l
btn10:1.r
btn10:2.r
btn11:1.l
btn11:2.l
btn11:1.r
btn11:2.r
btn12:1.l
btn12:2.l
btn12:1.r
btn12:2.r
lcd2:GND
lcd2:VCC
lcd2:SDA
lcd2:SCL
led1:A
led1:C
r1:1
r1:2
ntc1:GND
ntc1:VCC
ntc1:OUT