90% of components now attached to the controller board. And the rest may not get populated at all, as they seem to be largely unnecessary for the time being. I'd imagined that more servoes could be needed. Adding them later is easy though; I just need to solder on the headers. No software changes necessary.
Finished the class for driving motors with the timer channels and PWM. I'm beginning to think that the choise of MCU paid off after all. I'm using 2 timer channels for motor control, 1 for the servos, and I need 1 for timing periodic tasks and communication timeouts. That leaves 2 timer channels free. Plus simple PWM on any pin if I feel like it.
Added a new picture to the gallery. But I should add it here too... I'll just resize it so it's not as humongous.
I put 100nF ceramic caps on both motors between the leads and the casing. This should keep the electrical noise to a minimum. But if I ever notice any interference, I still have some ferrite rings I can put on it.
NOTE: If you put all 3 capacitors on a DC motor like I have, remember to make a connection from the casing to the ground. Otherwise the 2 caps from the leads to the casing will do nothing. The ground connection is the black wire in the photo.
Servos move on command too. Channel 1 had a small bug. NOTE: If someone took my earlier published code in use, servo channel 1 will not work. I'll see if I can edit in a fix.
A led can be blinked remotely. The first thing I actually implemented, as it's the least likely to break something if I get the code wrong. The worst a red LED can do is burn 5mA of current. So if you ever build a communications link to something that will affect a physical action, try using it on a LED first and leave the other functions commented out until the LED works flawlessly. Trust me, you don't want to test a comms link on an electric motor; your project may run out of control if you do.