As [Shahriar] points out in the introductory matter to his latest video at The Signal Path, Arduinos are a great way for a beginner to dig into all kinds of electronic excitement, but they do so at the cost of isolating that beginner from the nitty gritty of microcontrollers. Here, [Shahriar] gives a very thorough walkthrough of a 60-neopixel ring starting with the guts and glory of a single RGB LED. He then shows how that ring can easily be programmed using a PIC and some C.
[Shahriar]’s eval board is a simple setup that he’s used for other projects. It’s based on the PIC18F4550 which he’s programming with an ICD-U64. The PIC is powered through USB, but he’s using a separate switching supply to power the ring itself since he would need ~60mA per RGB to make them burn white at full brightness.
He’s written a simple header file that pulls in the 18F4550 library, sets the fuses, and defines some constants specific to the ring size. As he explains in the video, the PIC can create a 48MHz internal clock from a 20Mhz crystal and he sets up this delay in the header as well. The main code deals with waveform generation, and [Shahriar] does a great job explaining how this is handled with a single pin. Before he lights up the ring, he puts his scope on the assigned GPIO pin to show that although the datasheet is wrong about the un-delayed width of the low period for a zero bit, it still works to program the LEDs.
[Shahriar] has the code available on his site. He is also holding a giveaway open to US residents: simply comment on his blog post or on the video at YouTube and you could win either a TPI Scope Plus 440 with probes and a manual or a Tektronix TDS2232 with GPIB. He’ll even pay the shipping.
Continue reading “PIC Up a NeoPixel Ring and C What You Can Do Using This Tutorial”
If you’re trying to detect the orientation of an object, sometimes you really don’t need a 6DOF gyro and accelerometer. Hell, if you only need to detect if an object is tilted, you can get a simple “ball in a tube” tilt sensor for pennies. [tamberg] liked this idea, but he required a tilt sensor that works in the X, Y, and Z axes. Expanding on the ‘ball in a tube’ construction of simple tilt sensors, he designed a laser cut 3D tilt sensor that does all the work of of a $30 IMU.
The basic design of this tilt sensor is pretty simple – just an octahedron with four nails serving as switch contacts at each vertex. An aluminum ball knocks around inside this contraption, closing the nail head switches depending on what orientation it’s in. Simple, and the three dimensional version of a ball in tube tilt sensor.
To get the tilt data to the outside world, [tamberg] is using an Adafruit Bluetooth module, with two of the nails in each corner connected to a pin. With just a little bit of code, this 3D tilt sensor becomes a six-way switch to control an RGB LED. Video of that below.
Continue reading “DIY 3D Tilt Sensor”
It seems like every third project on Hackaday uses WS2812 RGB LEDs in some way. We all love our blinkenlights, and bright, cheap, serial controlled RGB LEDs are the bees knees.
As with all products these days, competing manufacturers have discovered the huge market for these things, and clones are now available. [Tim] recently took a look at the PD9823, as well as three versions of the WS2812. [Tim] is considered something of a WS2812 guru here at Hackaday. You might remember him from his WS2812 driver optimization article, which should be required reading for any WS2812 hacker.
As many of us know, the timing characteristics for these LEDs can be a pain to work with. The values also differ between the WS2812S and WS2812B. [Tim] discovered that the new through hole WS2812D parts are different yet again, though rather close to the B parts. The PD9823’s designers must have studied the WS2812’s closely, as their 190ns time base falls directly between WS2812S 166ns time and the 208ns time of the WS2812B. The PD9823 also requires a slightly longer reset pulse.
The takeaway is that well written drivers such as [Tim’s] should have no problem with the new parts, but compatibility is something to keep in mind as more clones hit the market.
There are LED clocks, and then there are LED clocks that can blind you from 30 paces. [Stiggalicious’s] LED ring clock is of the latter variety. 200 WS2812B/Neopixel RGB LEDs drive the ring clock to pupil searing levels. The clock runs on ATMega1284P, with timekeeping handled by an NXP PCF8563 real-time clock chip. Code is written in Arduino’s wiring language using Adafruit’s Neopixel library.
Building the clock with a single Printed Circuit Board (PCB) would be both expensive and wasteful. [Stiggalicious] cleverly designed his clock to be built with 8 copies of the same PCB. Each board makes up a 45° pie slice of the ring. All 8 PCBs have footprints for the CPU, clock chip, and other various discrete parts, but only the “master” section has these parts populated. 7 “slave” sections simply pass clock, data, power and ground through each LED. He used Seeedstudio’s board service to get 10 copies of his PCB made, just in case there were any mistakes.
[Stiggalicious] rolled the dice by buying exactly the 200 LEDs he needed. Either he got really lucky, or the WS2812 quality testing has improved, because only one LED had a dead blue LED.
If you’d like to find out more, [Stiggalicious] gives plenty of details in his Reddit thread. He doesn’t have a webpage setup for the clock but he’s uploaded his source code (pastebin link) and Altium schematic/PCB files (mega.nz link). We may be a bit biased, but hackaday.io would be a perfect spot for this or any other project!
The folks at NYC Resistor have a thing for circular displays, it seems. Their earlier Hexascroller was a ceiling mounted display with six 30×7 displays – good enough to display the time and a few textual message in six directions. The Octoscroller bumped up the display capability with eight 16×32 RGB LED panels. Now the Megascroller, a 32-sided 512×64 display is hanging in the hackerspace, complete with 360° Mario and Pong.
The Megascroller is one of [Trammell Hudson]’s projects, constructed out of sixty-four 32×16 RGB LED matrices. That’s an impressive amount of controllable LEDs, that required a lot of processing power: namely, the BeagleBone-powered LEDscape board used in their earlier Octoscroller
As far as applications go, they naturally have Pong, but a more interesting application is the side-scrolling Mario that requires you to move around the display as you play. You can check out a video of that below.
If you’d like to see the Megascroller in person, as well as a whole bunch of other crazy blinking interactive projects, NYC Resistor is holding a an interactive show this weekend, beer provided.
Continue reading “The Megascroller, For Video Games In The Round”
[repkid] didn’t set out to build a lamp, but that’s what he ended up with, and what a lamp he built. If the above-pictured shapes look familiar, it’s because you can’t visit Thingiverse without tripping over one of several designs, all based on a fractal better known as the Koch snowflake. Typically, however, these models are intended as vases, but [repkid] saw an opportunity to bring a couple of them together as a housing for his lighting fixture.
Tinkering with an old IKEA dioder wasn’t enough of a challenge, so [repkid] fired up his 3D printer and churned out three smaller Koch vases to serve as “bulbs” for the lamp. Inside, he affixed each LED strip to a laser-cut acrylic housing with clear tape. The three bulbs attach around a wooden base, which also holds a larger, central Koch print at its center. The base also contains a PICAXE 14M2 controller to run the dioder while collecting input from an attached wireless receiver. The final component is a custom control box—comprised of both 3D-printed and laser-cut parts—to provide a 3-dial remote. A simple spin communicates the red, green, and blue values through another PICAXE controller to the transmitter. Swing by his site for a detailed build log and an assortment of progress pictures.
NeoPixels, or WS2812 RGB LEDs, are the display device du jour for impressive and blinding lighting projects. Commonly known for very tight timing requirements, [Josh] discovered this is, in fact, usually unnecessary. The timing requirements for NeoPixels aren’t as bad as they seem, once you get to know them.
The official WS2812 timing specs give values that are fairly constraining for anyone writing a library to drive these RGB LED pixels, but simplifying the timing diagram by assuming a 50% duty cycle on the data lines and ignoring the longer maximum times results in a surprising conclusion: the only tight timing parameter for NeoPixel signaling is the maximum width of the 0-bit pulse.
Realizing this, [Josh] wrote a simple demo program to drive over 1000 NeoPixels – an 11 meter long strip – using 1K of RAM on an Arduino. The trick comes by simply delaying the bitbanging a set number of cycles. No obtuse assembly required.
There is only one problem with [Josh]’s method of driving a nearly unlimited amount of NeoPixels – building a display where every NeoPixel is an element in a larger image, such as in a video display, is impossible on systems with limited amounts of RAM. The code writes values to the NeoPixel strip algorithmically, so if you can’t build your animation with for loops, you’re out of luck. Still, Driving this many NeoPixels is a migraine trigger, and we have to give [Josh] credit for doing this with 1K of RAM.
Check out the video of [Josh]’s extreme NeoPixel strip below.
Continue reading “Driving 1000 NeoPixels With 1k Of Arduino RAM”