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.
[youtube=http://www.youtube.com/watch?v=TWNkqsYFRzA&w=470]
How about a link to the writeup:
https://sites.google.com/site/0miker0/arduino-led-controller
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.
I had the same reaction.
same here
You’re thinking of ‘closed loop’ control sytems.. those are the ones with feedback. The ones without feedback are called ‘open loop’ control systems. Control theory has equal love for both kinds.
Take the elecronics that control a CNC router for instance. You’d probably call that a control system. Thing is, a lot of them run open loop. They estimate the position of the actuator by counting the pulses they send to the stepper motors, rather than measuring the positions directly and feeding that information back into the system that plans the next move.
Give the guy some props.. the lede says he’s new to the field. Let him play with open loop systems a little while before crushing all hope and joy out of his life by making him try to tune PID controllers. ;-)
@mstone:
The point is, the writeup refers to “menus and submenus” and talks about the OLED screen. It’s pretty clear the author meant “user interface” not “control system” whether closed or open loop.
Aha.. I see your point. I was putting more emphasis on the ‘telling the LED strip what to do’ side of the system, which does sit pretty squarely in ‘control system’ territory.
You’re putting more emphasis on the ‘getting input so we can decide what to tell the LED strip’ side, which does fall into ‘user interface’ territory.
agreed, i was misled by the title also.
I was a little confused too, I was hoping for some “controls”, not “controls”.
Same here…
Also, “encoded” should be “encoder”
It’s a system to control some LEDs. You guys need to go outside more often.
Hmmm… it’s only because the world “outside” means something different by “control systems” that people here are pointing it out.
I see the confusion… and updated the title for clarity. Thanks.
What’s the OLED screen he used? Looks nice.
Ditto. No link to the build? Just a video?
I think a more “live” preview would be better. I’m sure something in the code can be tweaked to make that happen.
Hone your skills by not using an Arduino and doing it with a plain uC instead.
“plain uC”
Is that codeword for “Duct tape”?
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.
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.
Well said. I agree.
Nice project *off to ebay to find some cheap HL1606 led strip*
I am the guy that created this little project. My page at:
https://sites.google.com/site/0miker0/arduino-led-controller
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.
Mike
Sorry for leaving the link out of this when first published. Fixed.