I’m a trained software engineer, but I am decidedly an amateur when it comes to working with physical hardware and building circuits. I’m juuuust teetering on the edge of self-sufficiency when it comes to physical computing projects and circuit-building: I can comfortably program an Arduino; I can stitch together existing tutorials and remix them into my own projects; I can read and replicate simple circuit diagrams. I still tend to rely on microcontrollers for anything complicated because, let’s be honest, version control is the best and I’m much more comfortable writing code.
As I’m working on my current project, I’m noticing that I’m getting better at debugging circuits. Here are some things that help me!
Double-check things with a multimeter. You can use a multimeter to double-check that things are connected how you think they should be. You can also use a multimeter to read values, like current/resistance, to confirm that e.g. your sensors are working. This feels pretty cool!
It’s worth the time to solder carefully. Soldering is one of those really basic skills that pay dividends. For a while I felt really nervous about soldering (what if I did it wrong??). Being able to double-check my connections with a multimeter made me a lot less afraid of that.
Just because it worked yesterday doesn’t mean it will work today. You don’t have version control, so it’s quite possible that you changed something when you put your project away and then took it back out again. Did you plug something in backwards? Did something break when you moved it?
Document, document, document. See again: not having version control. This is one reason why I write tutorials: they are gifts to my future self.
How’s your power? Over- or under-powering your circuit is a pretty common reason behind “hey this works but only sorta???”
Are you grounded? This is really common when powering projects from e.g. your laptop. Make sure your laptop is plugged in with a three-prong plug. I do a lot of capacitative sensing projects and they’re affected by things as simple as someone touching the metal case of my computer.
Read the datasheet. Ughhhh I wish I was better at reading datasheets! They contain all sorts of useful information, like “how much voltage does this component need to function properly”. See above.
Test every step. Never assume that you did it right. Whenever you have a chance to verify that a component is working, or that you built part of a circuit correctly, do it. And take notes.
Debugging circuits is a lot like debugging software in terms of the questions you should ask. (What am I seeing? How do I know that? What can I measure? What do I expect to see? How do I confirm that?) But the tools are really different and also it takes way more time to fix your mistakes.