Hone your skills by building control modules

If you ask us, there’s no substitute for learning by doing. But often the hardest part of acquiring new skills is coming up with the idea for a project that utilizes them. [Mike Rankin] wanted to develop a project using laser cut acrylic, and settled on building a control box for an RGB LED strip. He got some practice modeling objects in SolidWorks¬†and seeing the process through to the final build. But it also let him explore an area of microcontroller programming in which he had little experience.

The LED strip he’s using depends on the HL1606. This is an SPI addressable chip that we see popping up in a lot of projects these days. It’s pretty simple to send red, green, and blue values through the data bus, and it allowed [Mike] to try his hand at programming menus and sub-menus. The controller takes input from a clickable rotary encoder. The settings are displayed on an OLED screen, with all the hardware nestled comfortably in his custom-cut enclosure.

Don’t miss the demo video embedded after the break.


  1. Pat says:
  2. andres says:

    FYI “control systems” more generally refers to feedback loop systems. think self-balancing robots or PID temperature controls.

    headline is a bit confusing. this is just interface, user interface (UI), or literally a control box.

  3. The Cageybee says:

    What’s the OLED screen he used? Looks nice.

  4. Lee says:

    I think a more “live” preview would be better. I’m sure something in the code can be tweaked to make that happen.

  5. M4CGYV3R says:

    Hone your skills by not using an Arduino and doing it with a plain uC instead.

    • vonskippy says:

      “plain uC”

      Is that codeword for “Duct tape”?

    • Dave says:

      Gotta start somewhere. I like to teach using the arduino. It’s really good enough for most home projects, where you need to make something that doesn’t exist, and an extra $30 isn’t a heartache.

    • mstone says:

      What can you do with a plain uC that you can’t do with an Arduino, or from within the Arduino IDE?

      If you think you can’t store data directly to PORTB, or write code in assembler, you’re mistaken. I’m programming ATTiny25s for a job right now, and I just checked.. all the code compiles perfectly.

      The Arduino environment gives you some utility routines that serve as training wheels for people who are new to uCs, but it doesn’t prevent you from talking directly to the hardware if you want to.

      Rather than telling people to give up the whole toolchain, try giving them tips like, “you can set the values of digital pins 0-7 all in one go with PORTD = n. Digital pins 8-13 are the first 6 bits of PORTB, but don’t try to set the top two bits because those are wired to the crystal oscillator.”

      For extra credit, encourage people to read the headers and source files to see how the training wheels are built.

  6. Mike Rankin says:

    I am the guy that created this little project. My page at:


    Has the information on where to get the parts and the code (still pretty buggy)
    This project is not very practical but gave me an excuse to design a laser cut enclosure, play with an LED strip and create menu, sub menu code using just one encoder.

    If you have any questions then just give me a shout and I’ll get right back to you.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,687 other followers