Sunday, 30 September 2012

NaV-1 Arduino Soundgin-Babblebot Synth - Part 4a

The cure for memory loss

Please read from Part 1 if you are just joining us. If you want to jump ahead and build the final hardware go HERE.

In this installment, we are going to add some EEPROM memory to the NaV-1 synth project. This will allow us to store multiple sound "Patches" like a real synthesizer. The Arduino actually has some EEPROM built in (1024 Bytes or 1K to be exact). There are two issues with using this memory. First, 1024 Bytes is not enough for our purposes. Each patch on our synth is 192 Bytes in size, so we could only store a handful of sounds. And secondly, the Arduino EEPROM is only rated for 100,000 write/erase cycles. That may sound like a lot, but in electronic terms, it's a pretty short lifespan.

What is EEPROM?

EEPROM stands for Electrically Erasable Programmable Read-Only Memory. This kind of memory is referred to as Non-Volatile, which means that it will not lose data when power is removed. Also, EEPROM is different from EPROM memory in that it can be programmed and erased in the circuit. No special tools required.

The 24LC256 Chip

The chip we are going to use is the 24LC256 from Microchip. You can buy these at SparkFun and many other dealers. They're really cheap so grab a bunch. This is a 256 kbit device (256,000 bits = 32K Bytes of memory). This has the potential of storing over a hundred of our synth patches! It is also rated at more than 1 Million write/erase cycles so it will last a long time in our project.

Wiring it up

**IMPORTANT NOTE** We are going to need to swap two wires from the previous installment of the project. Having the LCD display RS line on Pin 7 of the Arduino was causing a strange glitch. Take the Rotary Encoder wire connected to Arduino Pin 6 and move it to Pin 7. Now take the LCD RS wire that you removed from Pin 7 and connect to Arduino Pin 6. So basically, we are just switching the wires on Pins 6 and 7. Here is the updated schematic.

Full Schematic

Close up of 24LC256

And here is the chip on my bench. Notice that I have added a third small breadboard for this part as the others were getting a little crowded. Just remember to add two wires from Power and Ground on another board.

Messy, but functional.

Close Up of the 24LC256

The wiring for this chip is really simple. Just connect pins 1,2,3,4 and 7 to Ground. Connect Pin 8 to +5v. Then connect Pin 5 to Input A4 on the Arduino and Pin 6 to A5. That's it!

Stay tuned for the next installment where we will add the code for this new component.