Beagle Bone & NeoPixels
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- CrabbyPete
- Posts: 16
- Joined: Fri Nov 07, 2014 9:13 pm
Beagle Bone & NeoPixels
I see there is a library for Arduino for the NeoPixel will it work with a Beagle Bone Back board?
- adafruit_support_mike
- Posts: 67454
- Joined: Thu Feb 11, 2010 2:51 pm
Re: Beagle Bone & NeoPixels
Nope.
Linux machines like the RasPi and BBB don't handle NeoPixels very well.
The trouble is that those kinds of machines use a 'time slicing' operating system model: each process gets a certain amount of time on the CPU (usually 10ms) then the OS suspends it, swaps in the next process, and gives that one a turn.
That's great for basic number-crunching and human-interface work (the OS can swap half a dozen processes in and out between the moment your finger hits a key and the moment the keyboard registers a keypress) but it causes problems when you want to talk to other hardware.. especially hadware whose signals are time-critical like the NeoPixel's.
The pulses in a NeoPixel signal train have to be timed to within about 10ns, and the strip sees a gap of 50 microseconds as a signal to end that set of commands and start a new one. A time-slicing OS swapping the process generating those signals out for a significant fraction of a second would have about the same effect as a pilediver on a game of Operation.
The usual solution for such jobs is to use an Arduino (or similar single-task microcontroller) as a driver for the NeoPixel strip, and let the BBB or RasPi do the heavy thinking. You can arrange a UART connection between the BBB/RasPi and the microcontroller that isn't timing critical, but feeds the microcontroller the information it needs to keep the strip going.
Linux machines like the RasPi and BBB don't handle NeoPixels very well.
The trouble is that those kinds of machines use a 'time slicing' operating system model: each process gets a certain amount of time on the CPU (usually 10ms) then the OS suspends it, swaps in the next process, and gives that one a turn.
That's great for basic number-crunching and human-interface work (the OS can swap half a dozen processes in and out between the moment your finger hits a key and the moment the keyboard registers a keypress) but it causes problems when you want to talk to other hardware.. especially hadware whose signals are time-critical like the NeoPixel's.
The pulses in a NeoPixel signal train have to be timed to within about 10ns, and the strip sees a gap of 50 microseconds as a signal to end that set of commands and start a new one. A time-slicing OS swapping the process generating those signals out for a significant fraction of a second would have about the same effect as a pilediver on a game of Operation.
The usual solution for such jobs is to use an Arduino (or similar single-task microcontroller) as a driver for the NeoPixel strip, and let the BBB or RasPi do the heavy thinking. You can arrange a UART connection between the BBB/RasPi and the microcontroller that isn't timing critical, but feeds the microcontroller the information it needs to keep the strip going.
- pburgess
- Posts: 4161
- Joined: Sun Oct 26, 2008 2:29 am
Re: Beagle Bone & NeoPixels
Update: have a look at Trammell Hudson's LEDscape.
https://trmm.net/LEDscape
https://trmm.net/LEDscape
Please be positive and constructive with your questions and comments.