как сохранить переменную больше 256?
- Войдите на сайт для отправки комментариев
Пт, 19/08/2022 - 22:53
вообщем незадача, изменил код своего контроллера и появилась проблема, надо сохранить переменную в EEPROM со значением в тысячах... а можно только до 256... что делать?
#define PID_INTEGER #define BTN1 A0 #define BTN2 A1 #define BTN3 A3 #define BTN4 A2 #include <RBDdimmer.h> #include <EEPROM.h> #include <GyverPID.h> #include <GyverButton.h> #include <GyverTimer.h> #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C_OLED.h> #define ONE_WIRE_BUS 11 dimmerLamp dimmer(3); LiquidCrystal_I2C lcd(0x27,20,4); GyverPID pid(1.3, 0.01, 6.3, 30000); OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress insideThermometer {0x28, 0x55, 0xA9, 0x2C, 0x33, 0x20, 0x01, 0xDC }; //УКАЗАТЬ имя датчика ////////////////////кнопки//////////////////////////////////////////// GButton enterButtonPin(BTN1); //пин кнопки Старт GButton exitButtonPin(BTN2); //пин кнопки Стоп GButton plusButtonPin(BTN3); //пин кнопки "+" GButton minusButtonPin(BTN4); //пин кнопки "-" ////////////////////датчики/////////////////////////////////////////// const int photoresistorPin = A6; //пин фоторезистора const int infraredSensorPin = A7; //пин ИК датчика ////////////////////иполнители//////////////////////////////////////// const int feederAugerPin = 7; //пин шнека питателя const int pumpPin = 6; //пин цикуляционного насоса const int heatingElementPin = 8; //пин зажигалки const int stokerAugerPin = 9; //пин шнека стокера const int pwmPin = 10; //пин для ШИМ const int firebarPin = 13; //пин подвижного колосника ////////////////////переменные/////////////////////////////////////// int desiredTemperature; int currentTemp; byte working; byte start_count; int p_pause; int w_pause; byte start1; int val_f; int val[3]; int index; int val_foto; int val_fot[3]; int index2; byte starting; signed char fan_value; int PWM_val; byte fanspeed_pr; byte pid_out_last; int switch_start; int switch_stop; int startpwm; uint8_t start_1; uint8_t stop_1; int fire_off; byte pid_start; uint32_t displ; byte min_power; byte max_power; int fanspeed; uint8_t dopid_power; uint8_t cursor_; float pr; float kkal; uint8_t kwt; uint8_t min_fan; uint8_t max_fan; GTimer start_timer0(MS); GTimer start_timer1(MS); GTimer start_timer2(MS); GTimer start_timer3(MS); GTimer stop_timer1(MS); GTimer stop_timer2(MS); int middle_of_3(int a, int b, int c) { int x[2]; if (a > b) {x[0] = b; x[1] = a;} else {x[0] = a; x[1] = b;} if (x[1] > c) {return (x[0]< c) ? c : x[0];} else {return x[1];} } int middle_of_3_1(int a, int b, int c) { int x[2]; if (a > b) {x[0] = b; x[1] = a;} else {x[0] = a; x[1] = b;} if (x[1] > c) {return (x[0]< c) ? c : x[0];} else {return x[1];} } void setup() { cursor_=0; start_1=0; stop_1=0; switch_stop=9; switch_start=9; pid_out_last=100; PWM_val=30; working=0; start1=0; start_count=0; startpwm=0; fire_off=0; pid_start=0; displ=0; min_power=EEPROM.get(1,min_power); max_power=EEPROM.get(3,max_power); desiredTemperature=EEPROM.get(5,desiredTemperature); dopid_power=EEPROM.get(7,dopid_power); fan_value=EEPROM.get(9,fan_value); min_fan=EEPROM.get(11,min_fan); max_fan=EEPROM.get(13,max_fan); p_pause=15000; kkal=4.65; dimmer.begin(TOGGLE_MODE, ON); lcd.init(); // initialize the lcd lcd.backlight(); lcd.clear(); enterButtonPin.setTickMode(AUTO); exitButtonPin.setTickMode(AUTO); plusButtonPin.setTickMode(AUTO); minusButtonPin.setTickMode(AUTO); pinMode(photoresistorPin, INPUT); pinMode(infraredSensorPin, INPUT); pinMode(pumpPin, OUTPUT); pinMode(feederAugerPin, OUTPUT); pinMode(stokerAugerPin, OUTPUT); pinMode(pwmPin, OUTPUT); pinMode(heatingElementPin, OUTPUT); pinMode(firebarPin, OUTPUT); digitalWrite(feederAugerPin, HIGH); digitalWrite(stokerAugerPin, HIGH); digitalWrite(heatingElementPin, HIGH); digitalWrite(pumpPin, HIGH); digitalWrite(firebarPin, HIGH); pid.setMode(ON_RATE); pid.setDirection(NORMAL); pid.setLimits(0,9); pid.setpoint = desiredTemperature; sensors.begin(); start_timer0.setTimeout(1000);//время продувки перед запуском горелки start_timer1.setTimeout(80000);//время загрузки пеллет на розжиг start_timer2.setTimeout(600000);//время работы зажигалки start_timer3.setTimeout(60000);//время стабилизации пламени stop_timer1.setTimeout(200000);//время дожига пеллет перед останокой горелки stop_timer2.setTimeout(300000);//время продувки перед останокой горелки } void loop() { average_fire(); temp(); pump(); menu(); pidstart(); startWork(); finishWork(); auto_start(); fire_bar(); startPWM(); eeprom(); } void eeprom(){ static uint8_t kkal_last=kkal; static uint8_t p_pause_last=p_pause; static uint8_t min_fan_last=min_fan; static uint8_t max_fan_last=max_fan; static uint8_t min_power_last=min_power; static uint8_t max_power_last=max_power; static uint8_t fan_value_last=fan_value; static uint8_t desiredTemperature_last=desiredTemperature; min_power=constrain(min_power,0,max_power); max_power=constrain(max_power,min_power,15); if(min_power!=min_power_last){ min_power_last=min_power; EEPROM.put(1,min_power); } if(max_power!=max_power_last){ max_power_last=max_power; EEPROM.put(3,max_power); } if(desiredTemperature!=desiredTemperature_last){ desiredTemperature_last=desiredTemperature; EEPROM.put(5,desiredTemperature); } if(fan_value!=fan_value_last){ fan_value_last=fan_value; EEPROM.put(9,fan_value); } if(min_fan!=min_fan_last){ min_fan=min_fan_last; EEPROM.put(11,min_fan); } if(max_fan!=max_fan_last){ max_fan=max_fan_last; EEPROM.put(13,max_fan); } } void pidstart(){ if(working==1){ w_pause =((((kwt)/kkal)*1000)/(pr/216000))/((216000-(((kwt)/kkal)*1000)/(pr/216000))/p_pause); pid.input = currentTemp; pid.setpoint = desiredTemperature; pid.setLimits(min_power-1,max_power-1); pid.getResultTimer(); kwt=pid.output; digitalWrite(heatingElementPin, HIGH); } } void fire_bar(){ //Функция таймера работы подвижного колосника static uint32_t oldMillis = millis(); static uint32_t onOffTime=500000; uint32_t newMillis = millis(); boolean firebar_On = digitalRead(firebarPin); if(newMillis-oldMillis>=onOffTime){ oldMillis=millis(); firebar_On=!firebar_On; onOffTime=5000+(300000*firebar_On);//!firebar_On для мосфета, firebar_On для реле управление по LOW. digitalWrite(firebarPin,firebar_On); } } void temp(){ //Функция обработки сигнала датчика температуры static uint32_t temp_timer; if(millis()-temp_timer>1000){ temp_timer=millis(); sensors.requestTemperatures(); currentTemp = sensors.getTempC(insideThermometer)*10; } if(millis()-temp_timer>500){ temp_timer=millis(); lcd.clear(); } } void average_fire(){ //Функция обработки сигнала датчика огня if (++index > 2) index = 0; val[index] = analogRead(A3); val_f = middle_of_3(val[0], val[1], val[2]); if (++index2 > 2) index2 = 0; val_fot[index2] = analogRead(A2); val_foto = middle_of_3_1(val_fot[0], val_fot[1], val_fot[2]); } void startPWM() { //функция управления ШИМ вентилятора if(startpwm==1){ fan_value=constrain(fan_value,-40,40); if(working==1){ fanspeed = PWM_val+fan_value; }else{fanspeed=PWM_val;} fanspeed = constrain(fanspeed_pr, min_fan, max_fan); dimmer.setPower(fanspeed); } else{dimmer.setState(OFF); } } void pump(){ if(currentTemp>=350){ digitalWrite(pumpPin, LOW);} else{digitalWrite(pumpPin, HIGH); } if(currentTemp<50 and start_count>=3)digitalWrite(pumpPin, LOW); } void main_screen(){ lcd.setCursor(0, 0); lcd.print("Ty."); lcd.setCursor(4, 0); lcd.print(desiredTemperature/10); lcd.setCursor(6, 0); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Tk."); lcd.setCursor(4, 1); lcd.print(currentTemp/10); lcd.setCursor(6, 1); lcd.print("C"); lcd.setCursor(0, 2); lcd.print("kWt"); lcd.setCursor(4, 2); lcd.print(kwt); lcd.setCursor(0, 3); lcd.print("Fan"); lcd.setCursor(4, 3); lcd.print(fanspeed_pr); if(fanspeed_pr<10){ lcd.setCursor(5, 3); lcd.print("%"); }else if(fanspeed_pr<100){ lcd.setCursor(6, 3); lcd.print("%"); }else if(fanspeed_pr>99){ lcd.setCursor(7, 3); lcd.print("%"); } lcd.setCursor(16, 0); lcd.print("Fire"); lcd.setCursor(16, 1); lcd.print("Fire"); lcd.setCursor(11, 0); lcd.print(val_f); lcd.setCursor(11, 1); lcd.print(val_foto); if(val_f>1000 and val_foto>1000){ lcd.setCursor(8, 0); lcd.print(fire_off/10); } if(working==1){ lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("working..."); } if(displ==0)cursor_=0; } void menu(){ desiredTemperature = constrain(desiredTemperature, 400, 800); if(displ==0 and enterButtonPin.isHold()){ startpwm=1; switch_start=0; } if(displ==0 and exitButtonPin.isHold()){ startpwm=1; working=0; start1=0; switch_stop=0; } if(displ==0 and plusButtonPin.isClick()){ desiredTemperature+=10; plusButtonPin.resetStates(); } if(displ==0 and minusButtonPin.isClick()){ desiredTemperature-=10; minusButtonPin.resetStates(); } if(displ==0 and plusButtonPin.isHold()){ desiredTemperature+=10; } if(displ==0 and minusButtonPin.isHold()){ desiredTemperature-=10; } if(displ==0)main_screen(); if(displ==0 and enterButtonPin.isClick())displ+=11; if(displ>0 and exitButtonPin.isDouble())displ=0; if(displ>=10 and displ<20000 and minusButtonPin.isClick())displ+=1; if(displ>=10 and displ<20000 and plusButtonPin.isClick())displ-=1; if(displ==11)cursor_=1; if(displ==12)cursor_=2; if(displ==13)cursor_=3; if(displ==110)cursor_=0; if(displ==111)cursor_=1; if(displ==112)cursor_=2; if(displ==113)cursor_=3; if(displ==1110)cursor_=1; if(displ==1120)cursor_=2; if(displ==1130)cursor_=3; if(displ==11001)cursor_=1; if(displ==11002)cursor_=2; if(displ==11003)cursor_=3; if(displ==121)cursor_=1; if(displ==122)cursor_=2; if(displ==123)cursor_=3; if(displ==1210)cursor_=1; if(displ==1220)cursor_=2; if(displ==1230)cursor_=3; if(displ==131)cursor_=1; if(displ==132)cursor_=2; if(displ==1310)cursor_=1; if(displ==1320)cursor_=2; if(displ==11 and enterButtonPin.isClick())displ*=10; if(displ==12 and enterButtonPin.isClick())displ*=10; if(displ==13 and enterButtonPin.isClick())displ*=10; if(displ==110 and enterButtonPin.isClick())displ*=100; if(displ==111 and enterButtonPin.isClick())displ*=10; if(displ==112 and enterButtonPin.isClick())displ*=10; if(displ==113 and enterButtonPin.isClick())displ*=10; if(displ==121 and enterButtonPin.isClick())displ*=10; if(displ==122 and enterButtonPin.isClick())displ*=10; if(displ==123 and enterButtonPin.isClick())displ*=10; if(displ==131 and enterButtonPin.isClick())displ*=10; if(displ==132 and enterButtonPin.isClick())displ*=10; if(displ==11001 and enterButtonPin.isClick())displ*=10; if(displ==11002 and enterButtonPin.isClick())displ*=10; if(displ==11003 and enterButtonPin.isClick())displ*=10; if(displ>=11000 and displ<=11003)set_fan(); if(displ>=110000 and displ<=110030)set_fan(); if(displ>=110 and displ<=113)set_gor(); if(displ>=120 and displ<=123)set_pid(); if(displ>=130 and displ<=132)set_pow(); if(displ>=1100 and displ<=1130)set_gor(); if(displ>=1200 and displ<=1230)set_pid(); if(displ>=1300 and displ<=1320)set_pow(); if(displ>=10 and displ<100){ cursor_ = constrain(cursor_, 1, 3); lcd.setCursor(8,0); lcd.print("Menu"); lcd.setCursor(1,1); lcd.print("setting burner"); lcd.setCursor(1,2); lcd.print("setting PID"); lcd.setCursor(1,3); lcd.outStr("setting power"); lcd.setCursor(0,cursor_); lcd.print(">"); } } void set_fan(){ cursor_ = constrain(cursor_, 0, 3); lcd.setCursor(3,0); lcd.print("Settingis fan"); lcd.setCursor(1,1); lcd.print("min fan"); lcd.setCursor(16,1); lcd.print(min_fan); if(displ==110010 and plusButtonPin.isClick())min_fan+=1; if(displ==110010 and plusButtonPin.isHold())min_fan+=1; if(displ==110010 and minusButtonPin.isClick())min_fan-=1; if(displ==110010 and minusButtonPin.isHold())min_fan-=1; if(displ==110010){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(1,2); lcd.print("max fan"); lcd.setCursor(16,2); lcd.print(max_fan); if(displ==110020 and plusButtonPin.isClick())max_fan+=1; if(displ==110020 and plusButtonPin.isHold())max_fan+=1; if(displ==110020 and minusButtonPin.isClick())max_fan-=1; if(displ==110020 and minusButtonPin.isHold())max_fan-=1; if(displ==110020){ lcd.setCursor(19,2); lcd.print("<");} lcd.setCursor(1,3); lcd.print("correction fan"); lcd.setCursor(16,3); lcd.print(fan_value); if(displ==110030 and plusButtonPin.isClick())fan_value+=1; if(displ==110030 and plusButtonPin.isHold())fan_value+=1; if(displ==110030 and minusButtonPin.isClick())fan_value-=1; if(displ==110030 and minusButtonPin.isHold())fan_value-=1; if(displ==110030){ lcd.setCursor(19,3); lcd.print("<"); } lcd.setCursor(0,cursor_); lcd.print(">"); if(exitButtonPin.isClick())displ/=100; } void set_gor(){ cursor_ = constrain(cursor_, 0, 3); lcd.setCursor(1,0); lcd.print("Setings fan"); //if(displ==110 and enterButtonPin.isClick())displ*=100; lcd.setCursor(1,1); lcd.print("set Kkal"); lcd.setCursor(11,1); lcd.print(kkal*1000); //качество пеллет if(displ==1110 and plusButtonPin.isClick())kkal+=0,1; if(displ==1110 and plusButtonPin.isHold())kkal+=1; if(displ==1110 and minusButtonPin.isClick())kkal-=0,1; if(displ==1110 and minusButtonPin.isHold())kkal-=1; if(displ==1110){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(1,2); lcd.print("set pause"); //пауза между подачами lcd.setCursor(11,2); lcd.print(p_pause); if(displ==1120 and plusButtonPin.isClick())p_pause+=100; if(displ==1120 and plusButtonPin.isHold())p_pause+=1000; if(displ==1120 and minusButtonPin.isClick())p_pause-=100; if(displ==1120 and minusButtonPin.isHold())p_pause-=1000; if(displ==1120){ lcd.setCursor(19,2); lcd.print("<"); } lcd.setCursor(1,3); lcd.print("set perfo"); //производительность шнека грамм\час lcd.setCursor(11,3); lcd.print(pr); if(displ==1130 and plusButtonPin.isClick())pr+=100; if(displ==1130 and plusButtonPin.isHold())pr+=1000; if(displ==1130 and minusButtonPin.isClick())pr-=100; if(displ==1130 and minusButtonPin.isHold())pr-=1000; if(displ==1130){ lcd.setCursor(19,3); lcd.print("<"); } lcd.setCursor(0,cursor_); lcd.print(">"); if(exitButtonPin.isClick()){ displ/=10; } } void set_pid(){ cursor_ = constrain(cursor_, 1, 3); lcd.setCursor(3,0); lcd.print("Settings PID"); lcd.setCursor(1,1); lcd.print("set Kp"); lcd.setCursor(15,1); lcd.print(pid.Kp); if(displ==1210 and plusButtonPin.isClick())pid.Kp+=0.01; if(displ==1210 and minusButtonPin.isClick())pid.Kp-=0.01; if(displ==1210 and plusButtonPin.isHold())pid.Kp+=0.1; if(displ==1210 and minusButtonPin.isHold())pid.Kp-=0.1; if(displ==1210){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(1,2); lcd.print("set Ki"); lcd.setCursor(15,2); lcd.print(pid.Ki); if(displ==1220 and plusButtonPin.isClick())pid.Ki+=0.01; if(displ==1220 and minusButtonPin.isClick())pid.Ki-=0.01; if(displ==1220 and plusButtonPin.isHold())pid.Ki+=0.1; if(displ==1220 and minusButtonPin.isHold())pid.Ki-=0.1; if(displ==1220){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(1,3); lcd.print("set Kd"); lcd.setCursor(15,3); lcd.print(pid.Kd); if(displ==1230 and plusButtonPin.isClick())pid.Kd+=0.01; if(displ==1230 and minusButtonPin.isClick())pid.Kd-=0.01; if(displ==1230 and plusButtonPin.isHold())pid.Kd+=0.1; if(displ==1230 and minusButtonPin.isHold())pid.Kd-=0.1; if(displ==1230){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(0,cursor_); lcd.print(">"); if(exitButtonPin.isClick())displ/=10; } void set_pow(){ cursor_ = constrain(cursor_, 1, 3); lcd.setCursor(1,0); lcd.print("set Power"); lcd.setCursor(1,1); lcd.print("Max power Kwt"); lcd.setCursor(15,1); lcd.print(max_power); if(displ==1310 and plusButtonPin.isClick())max_power+=1; if(displ==1310 and minusButtonPin.isClick())max_power-=1; if(displ==1310 and plusButtonPin.isHold())max_power+=1; if(displ==1310 and minusButtonPin.isHold())max_power-=1; if(displ==1310){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(1,2); lcd.print("Min power Kwt"); lcd.setCursor(15,2); lcd.print(min_power); if(displ==1320 and plusButtonPin.isClick())min_power+=1; if(displ==1320 and minusButtonPin.isClick())min_power-=1; if(displ==1320 and plusButtonPin.isHold())min_power+=1; if(displ==1320 and minusButtonPin.isHold())min_power-=1; if(displ==1320){ lcd.setCursor(19,1); lcd.print("<"); } lcd.setCursor(0,cursor_); lcd.print(">"); if(exitButtonPin.isClick())displ/=10; } void auto_start(){ //Функция автостарта горелки при потере огня static uint32_t timer_fire; static int time_no_fire; if (kwt==1 or kwt==2 or kwt==3 or kwt==4 or kwt==5){ time_no_fire = 1400;} else{time_no_fire = 600;} // time_no_fire = 600; if(millis() - timer_fire >= 100){ timer_fire = millis(); if((val_f>1000) and start1==1){ fire_off+=1; } else{ fire_off=0; } } if(fire_off==time_no_fire and start1==1){ start1=0; working=0; pid_out_last=100; switch_start=5; } } void startWork(){ //функция розжига static uint32_t timer_start; static uint8_t tt1=1; static uint8_t tt2=80; static uint16_t tt3=600; static uint8_t tt4=60; switch(switch_start){ case 0: PWM_val=100; digitalWrite(heatingElementPin, LOW); if(millis() - timer_start >= 1000){ timer_start = millis(); tt1-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt1); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("Blow...");} break; case 1: PWM_val=20; if(millis() - timer_start >= 1000){ timer_start = millis(); tt2-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt2); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("Loading...");} digitalWrite(stokerAugerPin, LOW); break; case 2: digitalWrite(stokerAugerPin, HIGH); digitalWrite(feederAugerPin, HIGH); switch_start=3; break; case 3: PWM_val=100; if(millis() - timer_start >= 1000){ timer_start = millis(); tt3-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt3); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("Heating...");} digitalWrite(heatingElementPin, LOW); break; case 4: digitalWrite(heatingElementPin, HIGH); startpwm=1; if(millis() - timer_start >= 1000){ timer_start = millis(); tt4-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt4); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("Stabilize..");} kwt=5; work_timer(); work_timer2(); break; case 5: digitalWrite(heatingElementPin, HIGH); start_count+=1; if(start_count<=3){ switch_start=0;} else{ switch_start=9; start1=0; working=0; tt1=1; tt2=80; tt3=600; tt4=60; } break; case 6: digitalWrite(heatingElementPin, HIGH); start1=1; working=1; tt1=1; tt2=80; tt3=600; tt4=60; switch_start=8; break; } if(switch_start==0){ if(val_f<900 or val_foto<900)switch_start=6; if(start_timer0.isReady())switch_start=1; }else{start_timer0.start();} if(switch_start==1){ if(val_f<900 or val_foto<900)switch_start=6; if(start_timer1.isReady())switch_start=2; }else{start_timer1.start();} if(switch_start==3){ if(val_f<700 or val_foto<750)switch_start=4; if(start_timer2.isReady())switch_start=5; }else{start_timer2.start();} if(switch_start==4){ if(start_timer3.isReady())switch_start=6; }else{start_timer3.start();} } void work_timer(){ //Функция таймер работы горелки static uint32_t oldMillis = millis(); static uint16_t onOffTime; uint32_t newMillis = millis(); boolean stoker_On = digitalRead(stokerAugerPin); if(newMillis-oldMillis>=onOffTime){ oldMillis=millis(); stoker_On=!stoker_On; onOffTime=(w_pause*2)+(((p_pause - w_pause)/2)*stoker_On);//!soker_On для мосфета, soker_On для реле управление по LOW. digitalWrite(stokerAugerPin,stoker_On); } } void work_timer2(){ static uint32_t oldMillis = millis(); static uint16_t onOffTime; uint32_t newMillis = millis(); boolean feeder_On = digitalRead(feederAugerPin); if(newMillis-oldMillis>=onOffTime){ oldMillis=millis(); feeder_On=!feeder_On; onOffTime=w_pause+((p_pause - w_pause)*feeder_On);//!soker_On для мосфета, soker_On для реле управление по LOW. digitalWrite(feederAugerPin,feeder_On); } } void finishWork(){ //Функция остановки работы горелки static uint32_t timer_stop; static int tt=200; static int tt1=300; switch(switch_stop){ case 0: kwt=10; if(millis() - timer_stop >= 1000){ timer_stop = millis(); tt-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("STOPing...");} work_timer(); break; case 1: digitalWrite(stokerAugerPin, HIGH); digitalWrite(feederAugerPin, HIGH); PWM_val=100; if(millis() - timer_stop >= 1000){ timer_stop = millis(); tt1-=1; } if(displ==0){ lcd.setCursor(14, 2); lcd.print(tt1); lcd.setCursor(17, 2); lcd.print("sec"); lcd.setCursor(9, 2); lcd.print("mode:"); lcd.setCursor(9, 3); lcd.print("Shutdown...");} break; case 2: PWM_val=0; startpwm=0; tt=200; tt1=300; switch_stop=3; break; } if(switch_stop==0){ if(stop_timer1.isReady()) switch_stop=1;}else{stop_timer1.start();} if(switch_stop==1){ if(stop_timer2.isReady()){ PWM_val=0; switch_stop=2;} }else{stop_timer2.start();} }
переменная называется "pr"
еще она должна быть float...
EEPROM.put(123, pr);