How to store/use variables from an "options menu"

Hey all,

First off, thanks to all who've posted info about the "dream pixels" and RTC info. It's all been a great help to me on my project.

Onto my problems:

I want to make a menu of user preferences for a LED-based project. Things like being able to set time, and store color values as chosen by the user thru a 2 button interface. button 1 cycles thru the available options and displays them accordingly, button 2 would ??store?? the currently edited setting's value, and advance to the option in the list.

The menu would run through a fixed list of settings, ie: 1) color of first 6 leds; 2) color of next group of leds; 3) hour set; 4) minute set; 5) would you like a beer? 6) are you wearing pants?

I'm still rather NOOB, but I am a quick study. I think I can build the menu, the button routines, and the method to display the various options as they are being edited.

The things I don't get are how to: a) store those settings in non-volatile memory b) pass the values from the menu subroutine back to the main loop

some of the values would be true/false, some would be single integers, and some would be values for RGB leds - 3 integers.

thanks in advance, don't be bashful!

its really easy

http://arduino.cc/it/Reference/EEPROM

Ahhh, I ignored EEPROM... I guess it's VERY easy! thanks for the tip.

In the language reference, for EEPROM wites, it says the following:

An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it.

Being that the writes will come from an edit mode, not an operational mode, the write time isn't a concern. Is it safe to assume that read's are much faster than 3.3ms?

Ire: the life of EEPROM, if I wrote to 1 EEPROM address, pushing it pusing it beyond it's actualy life, does the 1 used address fail, or does it take a block of memory, or does the whole EEPROM cache die?

also, does the arduino do any eeprom writes in the background?

also, does the arduino do any eeprom writes in the background?

The Arduino doesn't have a background.

Being that the writes will come from an edit mode, not an operational mode, the write time isn't a concern. Is it safe to assume that read's are much faster than 3.3ms?

never looked

Ire: the life of EEPROM, if I wrote to 1 EEPROM address, pushing it pusing it beyond it's actualy life, does the 1 used address fail, or does it take a block of memory, or does the whole EEPROM cache die?

not really sure, I always understood its a block, but also keep in mind that is a CYA number (here is a thread about a eprom in a pic going darn near 5 million)

and you dont have to write unless your sure your going to save (ie dont write to it every button press or something)

also, does the arduino do any eeprom writes in the background?

the arduino does not multitask unless you write something to fake it (then it only appears to multitask)

[/quote]

Osgeld:

and you dont have to write unless your sure your going to save (ie dont write to it every button press or something)

also, does the arduino do any eeprom writes in the background?

the arduino does not multitask unless you write something to fake it (then it only appears to multitask)

[/quote]

I figured out pretty quick that I should only write at the end of the menu routine.

I didn't mean "background" in in a multitasking sense, I was referring to things that happen autonomously, like something being written to eeprom during a re-boot or upload.

On a lighter note, I started building some of the routines that these options menu's will control, and it seems that I'm bogging things down. but I will be making another post about that...

Thanks for your help!