NB: At this point in the semester, I was behind on work and needed to play catchup with electronics. For this reason, this assignment page is simply a duplicate off Output Deices. I could try to dilineate some separate narrative, but because these two assignments were highly interconnected, by designing and programming my RGB, I accomplished both assignments simultaneously.
This week I finally succeeded where I had failed 3 times before - to make a working RGB LED! That said, I didn't do it on my own at first. To learn more about proper coding and routing, I made Neil's RGB rainbow board first. I still had not had any successful programing experiences since the FabISP, and I was not shocked when the first board did not take my code. I milled and stuffed another board, and tried again, to no avail. I was confused, because I thought my soldering was good and that the parameters of the Make and C files were correct (and, moreover, Neil's code was specifically meant to go with this board)... finally I traced it down to the ISP cable. Rob's red acrylic encased FabISP has somehow withstood the test of time, but the cable had finally given out. Once I replaced the cable and used my own ISP, both boards programmed perfectly and I was greeted by a warm glowing light. Finally success!
The two RGB Boards, with my FabISP behind for scale.
Video of Neil's original code running on his board. Modifacations to come!
With a bit of a confidence booth, I went on to design my own board and start to crack the C Code. I decided to take Neil's board but add two more RGBs to is, and using wire jumpers so that all three output pins were connected to A Red, Blue, and Green LED. Now instead of cycling through one color at a time, all of the LEDs would be cross wired, all displaying different colors and progressing through the sequence 1/3 out of phase.
This was my first time soldering jumper wires. It got a little messy, and the wires required their own skillful manipulation, but after a while I got the hang of it. The hardest part was stripping and cutting tiny wire segments - I'd totally buy precut/stripped jumper wires if they came in conveniently small sizes. To my surprise, once it was wired up I plugged it in, and it worked on the first try, with Neil's code! Only this time, it had a different result.
Traces. Note the larger pads on the left with no traces leading from them, for anchoring the wires.
Stuffed and wired board. Worked on the first try.
Next up was programming. After looking at Neil's Code, Andrew Mao's Code, and reading about 80 pages from an AVR tutorial book, I felt like I could finally look at one of these and maybe understand a tiny bit of what was going on. Because it is so easy to flash programs over to the RGB Board, I started playing the order of the blocks in the main loop, replacing pin names, and changing timing. Because of the macros set up by both Neil and Andrew, it was fairly easy to modify the code intentionally with mnemonics. I ended up generating many variations of the code, which produced lot of distinctive effective! Especially with the cross-wired RGB LEDS. I played around with the board all night, and made a collection of codes here: Download the Zip File.
Video of my board running, with modified version of Andrew Mao's code.