Showcase: Using PixelMaestro to Control an LED Matrix on an Arduino Mega

This past week saw the release of PixelMaestro 2.0, and with it, a bunch of fixes to device communication and control. You can now plug in any Arduino-compatible board with an attached LED strip or matrix and start controlling it in a matter of minutes. Not only can you send commands to it in real-time, but you can upload complete configurations and store them in EEPROM for long-term storage, even across reboots. This was possible in previous versions of PixelMaestro, but now it’s even easier.

This post demonstrates some of PixelMaestro’s new device integration features and example sketches.

PixelMaestro on an Arduino Mega
Controlling an LED grid on an Arduino Mega using PixelMaestro

Continue reading “Showcase: Using PixelMaestro to Control an LED Matrix on an Arduino Mega”

Saving LED Configurations to Arduino Using EEPROM

While working on the next release of PixelMaestro, I came across a problem of storing long-term data on an Arduino. I have a system in place where configuration changes are sent to an Arduino over USB as byte arrays, and as the Arduino reads the array it applies the changes. The problem is those changes disappear as soon as you restart the device. How, then, does one store persistent data without having to add an SD card or extra memory? Enter EEPROM.

Continue reading “Saving LED Configurations to Arduino Using EEPROM”

Building a Lightweight, Arduino-friendly Communication Protocol

Trying stuff until it works

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.

Continue reading “Building a Lightweight, Arduino-friendly Communication Protocol”

Adventures in Desktop Application Development

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.

Continue reading “Adventures in Desktop Application Development”

The World of Microcontrollers

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.

Continue reading “The World of Microcontrollers”