HardwareFor this week's assignment I updated both my input and output boards to enable communication between them. My input device would become master sending it's brigntness value to the servo boards to make them turn acordingly. Which could be connected to shades or dial indicator.
I increased the size of the serial connectors so I could solder more than one wire to them... so I could easily daisy chain my boards. I also modified my slave boards, adding 2 jumper points to connect pins to ground to set their ID. Right now each board can be set to any 4 channels and I could use several servos on the same channel. Seeing that there's a total of 6 pins that coud be used for that, I could make a board that could be set to 63 different channels...
Designing, milling and populating the boards feels almost like a routine now, everything can be done in a couple of hours and the results are consistant.
For this week's assignment the real thing I wanted to accomplish was finding a way to communicate to specific devices connected to the same data line without having to upload device specific code to each boards. I wanted one code that would automatically define the device ID. I tought about using 2 extra pins to create a cascade of pulses, so the first device would count how many pulses are received on one pin, then send the same ammount plus one to the next board using another pin, always incrementing like this defining each boards ID one after the other. That would offer much more flexibility but would also require a lot more upstream management. I opted for an hardware solution that would allow chaining a few boards and could be easily changed without too much programming. Using solder to connect specific pins to ground to set it's ID was quick and efficient.
Using switches would be much more convenient for quick reconfiguration though...
Here's a video of it in action.