While working on the next release of PixelMaestro, I came across a significant problem: I had a system in place for storing configurations as byte arrays, and I had a system in place for reading in and executing these arrays. This was perfectly fine on a computer, since I could save these arrays to a file. But on an Arduino (where files aren’t a thing), where and how was I supposed to store a series of bytes that would persist across reboots? Enter EEPROM.
On today’s episode of “Adventures in C++”: sending commands between two Arduinos running the same software. Not just data, but also instructions on how to process and execute that data. Even more, these commands have to be small enough for each Arduino to package, send, receive, unpack, and execute in less than 1/10th of a second.
When I first started this blog, I was just dipping my toes back into the world of C++. Before that, my experience with it was mostly academic, and after struggling through a course with a particularly poor professor I swore off it in favor of VB.NET. No, I never did forgive myself for that decision, but it ultimately helped me learn to appreciate the importance and relevance of C++. And after tinkering with systems that use C++ exclusively, I’ve come to appreciate it even more.
A few months ago, I decided to buy an Arduino. For those who are unfamiliar, an Arduino is a small programmable computer typically used to power a specific application such as a smoke detector, medical device, watch, household appliance, or automobile engine. My reasons for buying an Arduino were twofold: I wanted to learn how small, embedded computers were being used to power our everyday lives, and I wanted to learn more about the Maker’s Movement. While this post focuses on the first reason, you can learn more about the Maker’s Movement through a variety of resources including Make Magazine and Wikipedia.