element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum water flow sensor
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 11 replies
  • Answers 6 answers
  • Subscribers 393 subscribers
  • Views 1504 views
  • Users 0 members are here
Related

water flow sensor

ahmedhodhod
ahmedhodhod over 7 years ago

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

  • Sign in to reply
  • Cancel

Top Replies

  • mcb1
    mcb1 over 7 years ago in reply to ahmedhodhod +5 suggested
    ahmedhodhod 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…
  • jw0752
    jw0752 over 7 years ago +3 suggested
    Hi Ahmed, You will probably have to provide a little more information and your code for someone to be able to figure out how to help. John
  • mcb1
    mcb1 over 7 years ago +2 suggested
    If you include the code you have, we can offer some ideas. Mark
Parents
  • mcb1
    0 mcb1 over 7 years ago

    If you include the code you have, we can offer some ideas.

     

    Mark

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Reply
  • mcb1
    0 mcb1 over 7 years ago

    If you include the code you have, we can offer some ideas.

     

    Mark

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Children
  • ahmedhodhod
    0 ahmedhodhod over 7 years ago in reply to mcb1

    i have posted my code kindly check

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • mcb1
    0 mcb1 over 7 years ago in reply to ahmedhodhod

    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

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • ahmedhodhod
    0 ahmedhodhod over 7 years ago in reply to mcb1

    thanks for your time

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • mcb1
    0 mcb1 over 7 years ago in reply to ahmedhodhod

    ahmedhodhod

    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

    • Cancel
    • Vote Up +5 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • ahmedhodhod
    0 ahmedhodhod over 7 years ago in reply to mcb1

    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

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube