Adaptive sleep time
-
I am looking into a way to proportionally increase the sleep time as the voltage of the battery/supercap decreases. I have tried with map function but I think I messed up and getting weird results. I am looking for suggestions to make something flexible that can be set to a minimum sleep time and a max. At the moment a made something that works in fixed steps but it is not very elegant nor very flexible
-
@gohan At first approach, I would say the map function should be the way to go.. what is it that it's working weird?
-
Would it be possible to divide the sleeptime with the voltage? As the voltage is getting lower the sleeptime will be higher?
Start with a number that after dividing sems good. Then it will automatically increase when voltage decrease.
-
@manutremo I don't have the code with me, but if you are kind enough could you post a map function that you think could work.
-
@gohan If I understood correctly what you are trying to achieve, do you think this could work?
#define VOLT_MAX 3.7 #define VOLT_MIN 3.0 #define SLEEP_MAX 100000 #define SLEEP_MIN 10000 void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: float v,p,s; v=3.5; // Result from volt reading routine p=(v-VOLT_MIN)/(VOLT_MAX-VOLT_MIN); p=constrain(p, 0, 100); s=map(p, 0, 100, SLEEP_MAX, SLEEP_MIN); sleep (s, true); // true for smartsleep, false if otherwise }
-
Thanks a lot, I'll look at it in the next days. Today I woke up at 5 am and returned home at 8pm... My neurons are not very cooperative at the moment
-
@gohan so it's actually you who needs a set sleep time based on energy levels?