final: the arduino saga
first of all, special thanks to tom igoe, alexandra olivier, and everyone in the ER and shop who were so encouraging of me while i was building these. i probably would have just said screw the whole thing and bought a mega had i not gotten the support that i did.
so, i started out with all my elements on 2 separate breadboards. i was following this tutorial from the arduino site per tom's suggestion to me in class when this idea was first hatched. on tuesday night i had everything set up and was ready to test it all out on wednesday.
tom advised me to buy an ft232r breakout board from sparkfun, which i could use in succession to program all of the arduinos. after soldering header pins on to the breakout and installing the correct drivers on my laptop, i plugged it in and expected to see my pin 13 LED blinking on my command. unfortunately, that didn't happen. i tried to troubleshoot but everything seemed to be attached to the right pins and i couldn't figure out why i wasn't getting any communication.
the next day, i reassembled everything on a single breadboard with cleaner wiring hoping that the process would enlighten me to my problem. still nothing.
the board's power light was on, and the reset button blinked when i pushed the button, but every time i tried to upload code to the board, i would get the following error:
avrdude: stk500_recv(): programmer is not responding
distressed, i went to talk to tom. i had followed every instruction on the tutorial to the line but couldn't get the board to accept my code. he took a look at my circuit and realized that i was missing a 10uF capacitor that connected the dtr pin on the breakout board to the reset button -- a step that we discovered was missing on the tutorial! sure enough, when i went to upload my code after meeting with him, i was able to program a blink sketch no problem.
the next day, i started soldering everything to perfboard. the photo from the previous post was taken after i had successfully soldered together a working circuit.
unfortunately, probably due to the fact that my mind was exhausted from looking at all those wires for three-plus days, the next two didn't turn out so well. when i finished soldering the second board together and it didn't work, it was well after midnight on friday and i left the floor for the night, assuming that the next day i'd figure out what went wrong.
when i still couldn't see the problem on saturday, i decided to move on to the third, figuring if i could make that one work, then the problem would come into clearer light. that didn't happen. the third one had the same problem the second did -- the power light was coming on, but there was no indication of communication between the chip and the LED. when i pushed the reset button, nothing happened at all. below are photos of the three boards, front and back -- i couldn't tell where the problem was occurring.
i broke down. i went into the j-room, where sarah and alex were working, and cried. i was so close to just scrapping all the work i had done over the past 3 days, re-building my arduinos on breadboards, or even just sucking it up and shelling out $80 for a mega with expedited shipping.
alex, being a whiz with circuits, offered to take a look at my boards and help me troubleshoot. while initially she couldn't see what the problem was, she soon figured out that the 10k ohm resistor connected to the reset button was going to GROUND when it should have been going to POWER! the board was resetting itself all the time and so naturally there couldn't be any communication.
below, from top to bottom: the correct wiring, and then the faulty one.
i was thrilled. this was a problem i had experienced before, and i had to remind myself with the first board to NOT put the resistor on the path to ground. a little re-soldering and i had three working, programmable arduino clones.
spike and eric (who witnessed most of this journey firsthand) suggested creating my own bread/perfboard arduino tutorial on this blog, which i probably will do after my project is completed. next up, though, is i2c communication between these three arduinos and my real uno. stay tuned.