Keep it Simple Stupid – Designing a Simple Menu with Version Control

Yes, I spilled my coffee on my notebook :/  It has mostly dried, so I think it will be okay, but my notebook is a very important tool, since it not only helps me brainstorm, but it helps me document things.

When I was trying to design this new menu system, I thought of many kinds of complicated things. After struggling for over an hour to get a concept I had to work, I took a break.  Instead of trying to answer the question “How do I make a menu system that does all of these things”, I thought of this question: “How do I make a very simple menu system?”

It won’t be as simple as the code bits from the last post suggested, but I do believe it will be easier to work with.  All of the menu things are in the main .ino file, and the only thing that is in the “Library” are the functions to handle the buttons (from an ADC channel, to button pressed).

I’ll go ahead and post what I have now here, although later I will make a repository for it.  And it’s not even done, I still have some work to do on it, but I think it is a step in the right direction, towards simplicity. I’ll be using this menu system to organize functions that I’ll use for the wireless testing.  I’ll also do SD card management on it as well (maybe reading from the SD card and showing it on the LCD :P)

An important note: Throughout my development on this, I use version control (Mercurial) so that once I got to a good space, I could quickly make a commit, and have a place where I can go back to, which I had to on several occasions. Commiting is so easy, that you’ll want to do it often (as you should).

Continue reading