Now that we have our own in-circuit programmer, we are free to create our own boards and program them.
To get accustomed to this process, we were tasked with extending a basic programmable board that could keep track of time, the hello-world board: To build on this basic functionality, I added both an LED for output and button for input into unused pins, milled this board, and programmed it! | |
design | |
To begin, I reconstructed the hello world board from scratch using Eagle, an industry standard for PCB design. The interface is decently clunky and clearly made for hardware designers - for example, instead of being able to select a large component by clicking anywhere on it, you have to click precisely on handle point made for that component. After figuring out the kinks of Eagle, I created a close replica of the hello world board. | |
Then, I planned how to include the new components. For output, I planned that a high voltage on some pin should light up the LED. So, I connected an LED and current-limiting resistor to ground from an unused pin on the microcontroller, so a high voltage on the output would cause current to run through the LED and light it up! For input, I figured a high voltage into a pin should signal that the switch is turned on, so I used a switch to connect Vcc to another unused pin and found homes for these new components. | |
Now, I had to route this new design, placing the components purposefully to prevent traces from crossing. board schematic | |
After milling everything out, I began to solder! I had forgotten how small these components were... | |
I somehow mustered up the fine-grained motor control needed to stuff the board, and then it was time to start programming! |