Wouldn’t it be fun to add bright, beautiful NeoPixels to your Raspberry Pi project? However NeoPixels, and the WS2811/2812 LEDs that make them up, require a data signal with very specific timing to work correctly. Because the Raspberry Pi runs a multi-tasking Linux operating system it doesn’t have real-time control over its GPIO pins and can’t easily drive NeoPixels. Typically a small microcontroller like a Trinket or Teensy can be used to communicate with the Raspberry Pi and generate the NeoPixel data signal. However thanks to the excellent rpi_ws281x library created by Jeremy Garff, you can now control NeoPixels or WS2811/WS2812 LEDs directly from your Raspberry Pi!
Jeremy’s library solves the real-time control problem by using the PWM and DMA hardware on the Raspberry Pi’s processor. The PWM (pulse-width modulation) module can generate a signal with a specific duty cycle, for example to drive a servo or dim an LED. The DMA (direct memory access) module can transfer bytes of memory between parts of the processor without using the CPU. By using DMA to send a specific sequence of bytes to the PWM module, the NeoPixel data signal can be generated without being interrupted by the Raspberry Pi’s operating system.
Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
Join us every Wednesday night at 8pm ET for Ask an Engineer!
Learn resistor values with Mho’s Resistance or get the best electronics calculator for engineers “Circuit Playground” – Adafruit’s Apps!
Maker Business — Transforming Today’s Bad Jobs into Tomorrow’s Good Jobs
Wearables — Snap a picture
Electronics — To Y5V or not to Y5V?
Biohacking — Ticks are Spreading an Allergy to Meat
No comments yet.
Sorry, the comment form is closed at this time.