Can anyone please help me i can not save value of total liters in eeprom,the main problem it read and writing while arduino mega working but if power of the value saved in eeprom go back to 0 because the counter starting from 0
Can anyone please help me i can not save value of total liters in eeprom,the main problem it read and writing while arduino mega working but if power of the value saved in eeprom go back to 0 because the counter starting from 0
If you include the code you have, we can offer some ideas.
Mark
i have posted my code kindly check
Yes we can see ... it appears in our inbox. (and all the other people)
Eventually when I put aside my work, I'll have a look.
However it might be another day before I can, so please bear with us as we're not paid support staff, we simply other members of this community.
Mark
Yes we can see ... it appears in our inbox. (and all the other people)
Eventually when I put aside my work, I'll have a look.
However it might be another day before I can, so please bear with us as we're not paid support staff, we simply other members of this community.
Mark
thanks for your time
Are you sure this is the code you've loaded into your Arduino.?
I found numerous parts that needed to be commented out just to compile it, but I was using an UNO.
There is a an incorrectly placed } at line 111 and the sketch is missing one at the end.
Eeprom is a byte value only ... that is it must be a number between 0 and 255.
So each location address has a byte.
I'm not sure what value the totalMilliLitres is, but you are dividing it by 1000 which makes it Litres.
I've never used put and get, but it appears that this will place the value over an address, ie not a single address (1 in your case)
You can see this here https://www.arduino.cc/en/Tutorial/EEPROMPut
In your sketch you are simply writing it to address 1 which may not be enough given that the totalMilliLitres has been declared as a 'long'.
You should be able to determine if the issue is related to the Intialisation routine as it prints "Reset Setting .... "
You haven't shown us the serial print so we left guessing as to what it is doing.
A copy of the actual Serial messages would be useful to see if it is actually working as it should be.
I suspect your problem is related to the sketch process, rather than how you are writing it.
You're reading the value stored in the eeprom as eeprom_daily, but you rewrite this each time the totalMilliLitres is greater than 0.
The value you putting into address 1 is the totalMilliLitres/1000 which is likely to be less than 1.
So whenever you get 100ml of water used, you call void water_daily() and then divide 100 by 1000 (which returns 0.1)
The totalMilliLitres is decalred as an unsigned long (see here https://www.arduino.cc/reference/en/language/variables/data-types/unsignedlong/ )
Unsigned long variables are extended size variables for number storage, and store 32 bits (4 bytes). Unlike standard longs unsigned longs won’t store negative numbers, making their range from 0 to 4,294,967,295 (2^32 - 1).
So I suspect you are always storing a zero, and hence your sketch is working as it should, but not the way you expect it.
Mark
thanks for your reply , the sketch maybe not compile with you because only compile with arduino mega
i think the value that stored in eeprom in address 1 reset to 0 due to totalMilliLitres value reset to 0 . check the line number 88 pulse count = 0 and void water_daily() declared in void loop .
So what happens here I think is Every time the counter increases, the last value is stored, and when you return to zero, the value is stored zero because the counter returns the value zero again and so on. you can say as rolling odometer
and for divide eeprom_daily = totalMilliLitres /1000 return 1 not less than this value