I’ve made a new years resolution already. I know it’s a little early but I don’t really see the point in waiting till the new year to commit to something. My new years resolution is to buy a PrintrBot- the $500 DIY 3D printer. See here for more on them: http://printrbot.com/ .
Now I’m not one of those people who can pull $500 out from the back of their couch so I’m going to have to save up for this thing. And with the school holidays beginning in a week now is the perfect time to be planning to make money. Christmas means that parents want windows washed, aunts want cars cleaned and everyone wants everything to look good. They’re willing to pay and I’m free to work as much as I like. Perfect combination.
So I’ve got a great goal and time to work for it. But something is missing. Just counting up the money on a sheet of paper lacks a certain cool factor. No, I need to do something geeky to count the money that is going towards my geeky goal. Like an Arduino money-saving helper. I know the name sounds a bit ridiculous.
The concept is pretty simple. Have a device that sits on my desk that constantly reminds me how much money I have saved. This will hopefully get me off my bum and doing some work instead of surfing the internet for the whole holidays. I had a spare LCD lying around so I decided to use that for the display bit. And as you already know, I used the trusty old Arduino platform for the computer processing.
Getting an LCD going with the Arduino is quite easy thanks to an official library included with the IDE. Here’s the official reference page for the library: http://www.arduino.cc/en/Reference/LiquidCrystal . The library is compatible with most off the shelf 16×2 LCDs and can be used in both 4-bit and 8-bit modes. Here’s a more in depth step by step tutorial by the awesome ladyada if you’re confused: http://www.ladyada.net/learn/lcd/charlcd.html . Don’t worry if your LCD starts spitting out random chinese characters like mine does occasionally. That just means that it is receiving the wrong instructions – usually just a loose data wire.
The next part to the money counter saving thingy is some input for adjusting the money saved. This is easily achieved using two simple switches and some resistors connected to arduino inputs. I used the pull-up resistor method for my switches. See here for more: http://www.ladyada.net/learn/arduino/lesson5.html . One switch adds money, one switch subtracts. Simple.
So we now have the 3 basic elements- arduino, LCD, and some input. The only thing left to do is to shake a little bit of programming magic over the whole thing. Now I’m not quite done with this yet for one reason – EEPROM.
What is EEPROM you ask? The EEPROM memory bit of the atmega328 arduino core chip is a bit like the hard drive in your computer. It stores things even when power is disconnected. It doesn’t disappear when the arduino is unplugged like standard variables stored in the RAM. So it’s very useful. It means you can do datalogging and other things that require memory without having to resort to fancy SD card shields. Sounds like this thing is the go for my little money thing. It does however have a downside. It is only rated for 100,000 read or write cycles. That doesn’t sound like a problem at first but an arduino can chew through that pretty fast. So it’s important to be careful about how much we use this special little EEPROM’s bits and bytes. However that’s not really an issue as I can just write to the memory whenever the figure changes. And I’m not planning on raising over 100,000 dollars. And before you Hackaday readers out there kick up a stink I know a guy proved that the EEPROM can last for a lot longer: http://hackaday.com/2011/05/16/destroying-an-arduinos-eeprom/ .
So this is where the problem is. My little EEPROM memory is a bit erratic. I think I may have burnt it out a while ago or something. Hmmmmmm. I might use a backup battery and have a low power mode instead. This is what I’ve still got left to do:
- Fix memory issue.
- Add some more to the LCD program to make it a bit more interesting. Things like percentages and bar graphs.
- Implement servo control so I can have a little saving dial.
- Earn some money.
So that’s what I’m up to so far. Here’s a photo:
Well, I’ll keep you posted as always.