Playing MIDI files on Arduino – Part 1 Standard MIDI Files

MIDI_computer_musicMIDI is an industry standard music technology protocol that connects products from many different companies including digital musical instruments, computers, tablets, and smartphones. MIDI is used every day around the world by musicians, DJs, producers, educators, artists, and hobbyists to create, perform, learn, and share music and artistic works.

MIDI music can be stored in standard files. Here’s what they look like and how they work and how we can ‘play’ the files.

Continue reading “Playing MIDI files on Arduino – Part 1 Standard MIDI Files”


Tic-Tac-Toe and an Experiment in Game Interface

tictactoeThe motivation for this project was to explore the separation between the algorithm for managing a game and the user interface for the game. Discovering a Tic-tac-toe algorithm simple enough to implement on the Arduino allowed an exploration of this concept in a game with simple user interface requirements.

Continue reading “Tic-Tac-Toe and an Experiment in Game Interface”

Parola A to Z – Sprite Text Effects

sprite_ghostA recent feature of the Parola library is sprite based text effects. This extends the functionality of the library to include fully customisable, user defined, animated bitmaps to wipe text on and off the LED matrix display.

Here’s how it works.

Continue reading “Parola A to Z – Sprite Text Effects”

Parola A to Z – Mixing Text and Graphics

azparola_animationThe key function of the Parola library is to display text using different animations. From version 2.7 onwards, Parola allows user code to manage mixing graphics with the text. The extensions to the library and what they do is the subject of this article.

Continue reading “Parola A to Z – Mixing Text and Graphics”

Revisiting Device Independent Control for LED Cubes

LED Cube 8x8x8

Some time ago, I wrote about device independent control of monochrome LED cubes (see this previous blog post which contains information referenced in this article).

Recently, someone contacted me about extending this framework to color cubes for a project they were considering. As it turn out, this was relatively straightforward and has added additional capability to the existing MD_Cubo library.

Continue reading “Revisiting Device Independent Control for LED Cubes”

Writing Arduino Libraries

Library_IconOne of the great features of the Arduino community is the availability of thousands of pre-written libraries that add hardware and other functionality to your projects without needing to write your own code. There are usually quite a few to pick from and your code will often depend on libraries, so the quality of the library you use can be critical to how your code performs. How do you write good libraries and how would you evaluate the quality of the latest library you downloaded?

Continue reading “Writing Arduino Libraries”

Reading LM34, LM35, LM335 (LM3x) Temperature Sensors Accurately

LM35 ImageThe LM3x series of sensors are precision, easily-calibrated, integrated circuit temperature sensors. These are ideal as a beginner sensor, only to disappoint when code is copied from somewhere, run on the MCU and the temperature readings seem to be wildly varying and incorrect. Why is this happening and what can be done about it? Read on.

Continue reading “Reading LM34, LM35, LM335 (LM3x) Temperature Sensors Accurately”

LCD Module Pushwheel Animation

PushwheelA question on the Arduino forum and the thread that followed prompted me to try and emulate a mechanical push- or thumb-wheel display update on an LCD module. The technique uses the LCD programmable characters and could be extended to other applications for simple LCD module animations.

Continue reading “LCD Module Pushwheel Animation”

Using a Digital Potentiometer (MCP41xxx)

pot_MCP41010Once I started using rotary encoders to provide a ‘modern’ user input experience, the elimination of panel mounted potentiometers for circuit settings and other adjustments was the next logical step. Panel mounted pots have a very different feel from the clicks of a rotary encoder, and potentiometers cannot easily be controlled by a microcontroller.

Digital Potentiometers perform the same functions as mechanical pots but can be automated. So how do they work?

Continue reading “Using a Digital Potentiometer (MCP41xxx)”

Fast Prototyping for Arduino Systems

PrototypingOne of the great things about Arduino systems is they enable us to try ideas and experiment with concepts. At a software level this is simple – write, compile and download. Hardware components, however, can be more time consuming as you either have to wire up a temporary breadboard or you have to build dedicated circuits.

There is a simple way to make the hardware more ‘plug and play’ by building small modules with a simple standard interface that can be combined to create bigger systems. The outcome is a library of standard modules that are easily connected to the Arduino to prototype ideas without fiddling with breadboard wires for the simple stuff.

Continue reading “Fast Prototyping for Arduino Systems”