1

I am doing a project 'arduino based switch operation'. Here the user needs to set a time to turn on relay and set time to turn it off. The problem is that I want to supply power to arduino using adapter connected to the ac supply (where the relay will also be connected). When the on time is set and if power goes off for some time then this system doesn't work. I want to save the data in arduino so that it will retain the data if power comes back.. So that my relay is operated on time.. How to do it guys???

  • See this answer arduino.stackexchange.com/a/72370/14490 – gbg Feb 17 at 11:24
  • Maybe I don't understand the question, but should the idea not be: the Arduino is always on, and the on and off time depends if the relay goes on/off... If you want the Arduino to be switched off too, you need at least some battery power and using sleep mode i.c.m. with an interrupt pin trigger set to some real time clock to be able to 'awake' it. – Michel Keijzers Feb 17 at 11:25
  • It is unclear, if you want to power off the Arduino in regular operation, or if you just want to save the time settings in case of a power outage. Please make this clearer – chrisl Feb 17 at 11:37
  • Your question sounds like you need a RealTimeClock as well. – DataFiddler Feb 18 at 12:38
1

Look up EEPROM. it is a memory that saves content even though power is off.

You can write data in EEPROM and when power comes back read it back.

there are safe ways to write in EEPROM without corrupting it.

|improve this answer|||||
0

Beside Georgi's answer, I would like to tell you some details.

First :

a microcontroller can have a built-in EEPROM like the ATMega328 inside an Arduino UNO/Nano/mini, if not you would need to attach an external one, it can have may interfaces like SPI or IIC etc...

Second :

an EEPROM can hold only a specified amount of data, it can be 512byte like one on the ATMega328 microcontrollers, it can be only 64byte on others.

Third :

an EEPROM have addresses so for example in 8-bit EEPROM one address can hold only 8bits so values from (0-255) like on the ATMega328

Fourth : how to use it

In the beginning of your code you should first include the eeprom library

#include <EEPROM.h>

Then you would for example assign value "24" to one of the address on the EEPROM let's say address "1"

So you will use

EEPROM.write(1,24);

Of course you can power off you board and repower it again and that particular address will have the assigned 8-bit value "24".

To read back

EEPROM.read(24);

I hope that might help you or anyone else.

And as a side note an EEPROM have defined write and read cycles ~10000 maybe ~100000 after that amount it May not work.

Original documentation : here

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.