From 31c268487cfe3f8f40c93192dfeb68ce6c66986b Mon Sep 17 00:00:00 2001 From: bartschdo76253 Date: Mon, 19 Jul 2021 11:31:32 +0200 Subject: [PATCH] EEP implementation --- lib/treppe/treppe.cpp | 11 ++++++++++- lib/treppe/treppe.h | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/treppe/treppe.cpp b/lib/treppe/treppe.cpp index 6fe8f0e..c8bcfeb 100644 --- a/lib/treppe/treppe.cpp +++ b/lib/treppe/treppe.cpp @@ -303,6 +303,8 @@ void Treppe::setup() pwmController.setPWMFrequency(100); //pwmController.setAllChannelsPWM(idle_pwm); + EEPROM.get(EEP_START_ADDR, parameters); // get Parameters of flash + pinMode(13, OUTPUT); pinMode(0, OUTPUT); digitalWrite(13, HIGH); @@ -317,13 +319,17 @@ void Treppe::setup() Serial.printf("Treppe: stufen=%d\n", stufen); } +void Treppe::saveParam(){ + EEPROM.put(EEP_START_ADDR, parameters); // copy Parameters so "EEPROM"-section in RAM + EEPROM.commit(); // write "EEPROM"-section to flash +} + void Treppe::set_idle_prozent(const int prozent) { // future use: parameters.idle_max_pwm uint16_t new_pwm = parameters.active_pwm * prozent / 100; set_idle_pwm_max(new_pwm); } - void Treppe::set_idle_pwm_max(const uint16_t new_pwm) { // future use: parameters.idle_max_pwm @@ -335,15 +341,18 @@ void Treppe::set_idle_pwm_max(const uint16_t new_pwm) Serial.printf("Treppe: idle_pwm_soll=%d\n", idle_pwm_soll); fsm_pend.ldr_changed = true; + //saveParam(); //uncomment if idle_pwm_max is used } void Treppe::set_active_pwm(uint16_t _active_pwm) { parameters.active_pwm = _active_pwm; Serial.printf("Treppe: active_pwm=%d\n", parameters.active_pwm); + saveParam(); } void Treppe::set_time_per_stair(uint16_t _time_per_stair) { parameters.time_per_stair = _time_per_stair; Serial.printf("Treppe: time_per_stair=%d\n", parameters.time_per_stair); + saveParam(); } \ No newline at end of file diff --git a/lib/treppe/treppe.h b/lib/treppe/treppe.h index a303ec2..1e5d4fa 100644 --- a/lib/treppe/treppe.h +++ b/lib/treppe/treppe.h @@ -3,6 +3,7 @@ #include "FSMTreppe3/FSMTreppe3.h" #include "PCA9685.h" +#include // #define LDRDEBUG // comment in to override LDR measurement #define LDR_HYS 1 // Hysteresis for switching off FSM [lux] @@ -13,6 +14,8 @@ #define INT_TIME 20 // interrupt intervall [ms] +#define EEP_START_ADDR 100 // define Start Address for "EEPROM" storage -> depends on size of "wifi_data"! + class Treppe { private: const uint8_t stufen; @@ -104,6 +107,7 @@ public: void task(); // call periodically // Parameter section + void saveParam(); void set_idle_prozent(int prozent); void set_idle_pwm_max(const uint16_t new_pwm); void set_active_pwm(uint16_t _active_pwm);