I had been working with non-Arduino microcontrollers for more than a decade before picking up an Arduino. Prior buying my first Arduino UNO, I dismissed the Arduino as a toy, or a beginners learning tool, and little else. I didn’t see it as powerful enough to be useful in any way other than that. I was happy to design and code for microcontrollers of various types, in the standard way that the embedded world does.
Then, in 2012, I needed an Arduino for an article I was writing for the Microcontroller Central website, comparing the Papilio “Arduino in an FPGA” (Field Programmable Gate Array) board to a plain vanilla Arduino UNO. After writing the article, I let the Arduino gather dust in an anti-static bag for a while. A month or so later, I was having some trouble two of my Microchip PIC microcontroller boards to talk to each other over I2C.
Both boards were running my hardware, and both were running my software. That made it pretty difficult to isolate the problem. What I needed was a way to remove some of the variables from the system. I remembered the dusty Arduino, and decided to throw it into the mix.
At the time, I hadn’t used I2C on an Arduino, so it was an additional variable, but I could do so without using much of my own code, making it a small variable. I would just need to slightly modify one of the included examples. Doing so allowed me to quickly to find the problem in my PIC software, which gave me a newfound respect for the Arduino. Since then, whenever I need to use a new peripheral chip, I connect it to an Arduino first. Doing so has saved me a number of PC board re-do’s, and many hours of software debug frustration.
Now, three years later, I not only have a variety of commercially purchased Arduino varients, I have a large handful of custom Arduino compatible hardware designs. I’ll be writing about them in the future.