- Make things easy to take apart. Putting the extra time into something that you screw down instead of glue down will make it easier to troubleshoot when things inevitably go wrong.
- Start as early as possible.
- Getting individual parts to work in isolation is easy. Integrating them takes forever.
- Reduce the scope of the project as much as possible in the beginning. You can always expand later, but get core functionality down first.
- Assign roles in the beginning. Specialize roles if you want to get done faster, but diversify roles if you want to learn more.
- Buy an extra sensor if you are purchasing from a 3rd party vendor. You never know when one will break.
- Molex connectors aren't really made for breadboards. Solder wire ends to the straight pin headers instead (this is much cheaper as well). However, Molex connectors are useful when connecting two wire bundles to each other (e.g,, for a cabled peripheral that can be disconnected from the machine during transport).
- Keep your breadboard wires as flat as possible. This will avoid pulling wires out by accident.
- Get a membership to the PRL. The laser cutters, vinyl cutter, soldering stations, and glue guns in Room 36 were amazing.
- Remember that working with LEDs takes a lot of time when you start dreaming up ambitious displays with 10's of discrete lights. Mounting, preparing, and soldering each LED lead takes time. Preparing the wires for linking LEDs takes time. Heat-shrinking connections takes time. Building/routing the wire bundles takes time. Building the drive circuit, depending on complexity of lighting effects, takes time.
- Sometimes it is easier to implement functions such as logical operations on multiple digital sensors in hardware instead of software. This reduces the number of inputs that must ultimately be read by the microcontroller and allows the software team to focus on more challenging features.
- Bypass capacitors are your friend! Review notes/course readings on the different types. A bigger capacitor isn't always the answer; sometimes you just need a capacitor with a quicker response time (e.g., tantalum instead of electrolytic).
- Start working with the designated power supplies as early as possible. These are often noisier than what you are used to using.
- Modularity is not just a mechanical concept. Putting circuits on different breadboards that can be easily connected/disconnected allows for quicker troubleshooting/fault-isolation.
- Test circuits across a range of environmental conditions (e.g., time of day and location are both important for IR circuits).
- Add LEDs for power indication, digital sensor output, and logic gate output to your breadboards. Having a local, visual indication of power and/or pin state makes debugging much easier (LEDs are particularly valuable for troubleshooting problems that stem from loose connections).
- Comment your code! Sometimes you'll just confuse yourself, or worse you'll confuse the other person that's coding.
- If you're not sure whether you need a piece of code or not, comment it out and save for later.
- Write up pseudocode before you start writing the actual code itself. It's easier if you know the direction you're going. But don't feel like you must have the pseudocode down pat the first attempt though: changes are OK, especially if the deadline is looming.
- If you're stuck on a bug, try getting someone else to read over your code. Chances are they'll see what you've missed.
- Start as early as possible.
- Getting individual parts to work in isolation is easy. Integrating them takes forever.
- Reduce the scope of the project as much as possible in the beginning. You can always expand later, but get core functionality down first.
- Assign roles in the beginning. Specialize roles if you want to get done faster, but diversify roles if you want to learn more.
- Buy an extra sensor if you are purchasing from a 3rd party vendor. You never know when one will break.
- Molex connectors aren't really made for breadboards. Solder wire ends to the straight pin headers instead (this is much cheaper as well). However, Molex connectors are useful when connecting two wire bundles to each other (e.g,, for a cabled peripheral that can be disconnected from the machine during transport).
- Keep your breadboard wires as flat as possible. This will avoid pulling wires out by accident.
- Get a membership to the PRL. The laser cutters, vinyl cutter, soldering stations, and glue guns in Room 36 were amazing.
- Remember that working with LEDs takes a lot of time when you start dreaming up ambitious displays with 10's of discrete lights. Mounting, preparing, and soldering each LED lead takes time. Preparing the wires for linking LEDs takes time. Heat-shrinking connections takes time. Building/routing the wire bundles takes time. Building the drive circuit, depending on complexity of lighting effects, takes time.
- Sometimes it is easier to implement functions such as logical operations on multiple digital sensors in hardware instead of software. This reduces the number of inputs that must ultimately be read by the microcontroller and allows the software team to focus on more challenging features.
- Bypass capacitors are your friend! Review notes/course readings on the different types. A bigger capacitor isn't always the answer; sometimes you just need a capacitor with a quicker response time (e.g., tantalum instead of electrolytic).
- Start working with the designated power supplies as early as possible. These are often noisier than what you are used to using.
- Modularity is not just a mechanical concept. Putting circuits on different breadboards that can be easily connected/disconnected allows for quicker troubleshooting/fault-isolation.
- Test circuits across a range of environmental conditions (e.g., time of day and location are both important for IR circuits).
- Add LEDs for power indication, digital sensor output, and logic gate output to your breadboards. Having a local, visual indication of power and/or pin state makes debugging much easier (LEDs are particularly valuable for troubleshooting problems that stem from loose connections).
- Comment your code! Sometimes you'll just confuse yourself, or worse you'll confuse the other person that's coding.
- If you're not sure whether you need a piece of code or not, comment it out and save for later.
- Write up pseudocode before you start writing the actual code itself. It's easier if you know the direction you're going. But don't feel like you must have the pseudocode down pat the first attempt though: changes are OK, especially if the deadline is looming.
- If you're stuck on a bug, try getting someone else to read over your code. Chances are they'll see what you've missed.