Add NTC thermostor

Add read NTC 100K Thermistor value
Change MCU to ArduinoNANO. Need more analog inputs. ESP8266 have only 1 analog input(
This commit is contained in:
Mirivlad 2022-03-18 04:20:14 +08:00
parent 18662adfec
commit b5937aa1db
1 changed files with 76 additions and 36 deletions

View File

@ -1,23 +1,31 @@
//enable 2040 LCD
#include <LiquidCrystal_I2C.h> #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
//enable NTC thermistor
#include <GyverNTC.h>
// термистор на пине А0
// сопротивление резистора 10к
// тепловой коэффициент 3950
GyverNTC therm(0, 100000, 3950);
// объявляем массив кнопок //enable button lib and define buttons array
#define BTN_AMOUNT 5 #define BTN_AMOUNT 5
#define EB_HOLD 1000 #define EB_HOLD 1000
#include <EncButton2.h> #include <EncButton2.h>
EncButton2<EB_BTN> btn[BTN_AMOUNT]; EncButton2<EB_BTN> btn[BTN_AMOUNT];
//define vars
int cursor=1; //позиция курсора
int cursor=0;
int t_current=230; int t_current=230;
int t_current_temp=230; int t_current_temp=230;
int t_set=230; int t_set=230;
int t_set_temp=230; int t_set_temp=230;
int motor_speed=100; int motor_speed=100;
int motor_speed_temp=100; int motor_speed_temp=100;
int save=100; int save=100; //режим работы меню. 100- режим выбора. 1,2,3 - выбранное значение
float filT = 0; //фильтрованное значение датчика
long previousMillis = 0; // храним время последнего переключения светодиода
long interval = 1000; // интервал между включение/выключением светодиода (1 секунда)
void setup() void setup()
{ {
@ -39,18 +47,18 @@ void setup()
lcd.print("Tc: ");//4,0 - set Temperature current lcd.print("Tc: ");//4,0 - set Temperature current
lcd.setCursor(4,0); lcd.setCursor(4,0);
lcd.print(t_current); lcd.print(t_current);
lcd.setCursor(13,0); lcd.setCursor(12,0);
lcd.print("Ts: ");//17,0 - set Temperature setting lcd.print("Ts: ");//16,0 - set Temperature setting
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(t_set); lcd.print(t_set);
lcd.setCursor(0,2); lcd.setCursor(0,2);
lcd.print("Mot.Speed: 100");//11,2 - Motor speed lcd.print("Mot.Speed: 100");//11,2 - Motor speed
lcd.setCursor(11,2); lcd.setCursor(11,2);
lcd.print(motor_speed); lcd.print(motor_speed);
btn[0].setPins(INPUT_PULLUP, D7); btn[0].setPins(INPUT_PULLUP, PD2);
btn[1].setPins(INPUT_PULLUP, D6); btn[1].setPins(INPUT_PULLUP, PD3);
btn[2].setPins(INPUT_PULLUP, D5); btn[2].setPins(INPUT_PULLUP, PD4);
Serial.begin(115200); Serial.begin(115200);
} }
@ -66,6 +74,8 @@ void change_params(int save, int plus){
if (t_current>=300 || t_current<=0){ if (t_current>=300 || t_current<=0){
//stop heating //stop heating
} }
lcd.noBlink();
lcd.noCursor();
lcd.setCursor(4,0); lcd.setCursor(4,0);
lcd.print(" "); lcd.print(" ");
lcd.setCursor(4,0); lcd.setCursor(4,0);
@ -86,9 +96,9 @@ void change_params(int save, int plus){
t_set_temp=0; t_set_temp=0;
} }
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(" "); lcd.print(" ");
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(t_set_temp); lcd.print(t_set_temp);
} }
//change motor speed //change motor speed
@ -112,16 +122,33 @@ void change_params(int save, int plus){
lcd.print(motor_speed_temp); lcd.print(motor_speed_temp);
} }
} }
void loop() void loop()
{ {
lcd.blink(); unsigned long currentMillis = millis();
//проверяем не прошел ли нужный интервал, если прошел то
if(currentMillis - previousMillis > interval) {
// сохраняем время последнего переключения
previousMillis = currentMillis;
change_params(0,100);
}
filT += (therm.getTemp() - filT) * 0.1;
t_current_temp=filT;
//therm.getTempAverage();
if (save==100){
lcd.noBlink();
lcd.cursor();
}
for (int i = 0; i < BTN_AMOUNT; i++) btn[i].tick(); for (int i = 0; i < BTN_AMOUNT; i++) btn[i].tick();
//moving cursor //moving cursor
if (cursor==0){ //if (cursor==0){
lcd.setCursor(3, 0); // lcd.setCursor(3, 0);
} //}
if (cursor==1){ if (cursor==1){
lcd.setCursor(16, 0); lcd.setCursor(15, 0);
} }
if (cursor==2){ if (cursor==2){
lcd.setCursor(10, 2); lcd.setCursor(10, 2);
@ -129,27 +156,35 @@ void loop()
//listen button held //listen button held
if (btn[0].held()) { if (btn[0].held()) {
Serial.println("hold enter"); Serial.println("hold enter");
//enter change mode
if (save==100){ if (save==100){
Serial.println("hold enter and save==100"); Serial.println("hold enter and save==100");
save=cursor; save=cursor;
lcd.noBlink(); lcd.blink();
lcd.cursor();
}else{ }else{
//enter save mode
if(save==0){ // if(save==0){
Serial.println("hold enter and save==0"); // Serial.println("hold enter and save==0");
t_current=t_current_temp; // t_current=t_current_temp;
lcd.setCursor(4,0); // lcd.setCursor(4,0);
lcd.print(" "); // lcd.print(" ");
lcd.setCursor(4,0); // lcd.setCursor(4,0);
lcd.print(t_current); // lcd.print(t_current);
} // lcd.cursor();
// lcd.blink();
// delay(3000);
// }
if(save==1){ if(save==1){
Serial.println("hold enter and save==1"); Serial.println("hold enter and save==1");
t_set=t_set_temp; t_set=t_set_temp;
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(" "); lcd.print(" ");
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(t_set); lcd.print(t_set);
lcd.cursor();
lcd.blink();
delay(3000);
} }
if(save==2){ if(save==2){
Serial.println("hold enter and save==2"); Serial.println("hold enter and save==2");
@ -158,8 +193,13 @@ void loop()
lcd.print(" "); lcd.print(" ");
lcd.setCursor(11,2); lcd.setCursor(11,2);
lcd.print(motor_speed); lcd.print(motor_speed);
lcd.cursor();
lcd.blink();
delay(3000);
} }
lcd.blink(); lcd.noBlink();
lcd.cursor();
//lcd.blink();
save=100; save=100;
} }
} }
@ -175,9 +215,9 @@ void loop()
lcd.print(" "); lcd.print(" ");
lcd.setCursor(4,0); lcd.setCursor(4,0);
lcd.print(t_current); lcd.print(t_current);
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(" "); lcd.print(" ");
lcd.setCursor(17,0); lcd.setCursor(16,0);
lcd.print(t_set); lcd.print(t_set);
lcd.setCursor(11,2); lcd.setCursor(11,2);
lcd.print(" "); lcd.print(" ");
@ -186,7 +226,7 @@ void loop()
} }
cursor++; cursor++;
if (cursor>2){ if (cursor>2){
cursor=0; cursor=1;
} }
} }
if (btn[1].click() && save!=100) { if (btn[1].click() && save!=100) {