Asked — Edited

Neopixels

Anyone used Neopixels yet? More precisely the Neopixels rings. Anyone have any script examples if so? Thanks. Chris


ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.

United Kingdom
#1  

@kamaroman68

From what I remember the Neopixels are not yet supported on the EZ-B via a direct connection yet, but can be done with a workaround using Arduino to EZ-B. I read about using these a little while back as I was looking to getting these myself at some point, but decided against it for now. I have just found the links to the threads I was reading, which was discussing about using them. I hope they help.

synthiam.com/Community/Questions/6767

synthiam.com/Community/Questions/6424

PRO
Canada
#2  

I bought a Neopixel Ring to test with the ez-b but haven't had a chance to play with it yet.

PRO
Canada
#4  

So I was able to make some headway. I could get all but one Neopixels to go full white. So some progress, still a bunch more to dial in.

User-inserted image

United Kingdom
#5  

Looks promising. Thanks for the update Jeremie.

#6  

Jeremie can you show how you wired it to ezb4

#7  

Looks like he is using the power and ground from port D0 and then the Tx from the UART

PRO
Canada
#8  

Got a little closer tonight with displaying some colors but the code's far from complete yet.

User-inserted image

PRO
Canada
#10  

Well, I gave it my best effort but unfortunately i just can't get the timing dialed in enough to control the WS2812 LEDs directly with the ez-bv4.

The WS2812s are a weird beast, instead of just taking a low signal to represent a '0' they actually take a very short positive going pulse.

With the ez-bv4 I tried a couple different methods using a UART port and the sendSerial() command. As a side note, the beauty of ARC is that you can essentially build your own custom pulse train using either of the two methods above but the only thing that gets in the way is that you have to deal with the start/stop bit. I tried to get the combined start/stop bit to be short enough to represent a '0' but I couldn't make it happen. So in the end I could generate a '0' several different ways but the start/stop bit would always throw a '1' in with it. Essentially all I could reliably create was half-bright white or full-bright white (all '1' signals) on all the LEDs.

As you can see above, I did get some colors to be generated but the method wasn't reliable.

All is not lost. Since we have this information now, we will look into off-loading this kind of Addressable LED communication to a smaller processor that can easily hook up to the ez-bv4, stay tuned:D

United Kingdom
#11  

Thanks for the update Jeremie. Sounds like you gave it a good shot and got some useful info out of it. I look forward to see what you come up with using a smaller processor to get these little guys to work with the v4 directly.

@kamaroman68.

I don't know if you own, or know how to use Arduino, but it sounds like that is the only option to use the Neopixle rings with the v4 for now. As I mentioned before, other users have had them working this way. If this is something you think you might try yourself, I'd love to see how you get on with it.:)

Canada
#12  

@Jeremie I would LOVE to see the scripts you used for the Neopixels

#13  

I found this article on the web that allows an arduino to control neopixel strips. It allows the Serial Interface of the Arduino to control individual pixels.

BlinkyTape using NeoPixel Library

For my design I am using a Pololu AStar

A-Star 32U4 Mini SV

I like the 32U4 chip (Arduino Lenardo) because it has a second UART interface on it which is separate from the USB one used for programming. So I modified the code to use the "Serial1" port calls instead of the "Serial" Port this allows me to use the standard Serial port for debugging if need be. I haven't tied it to an EZ-B yet but I am confident it will work. Just need to connect the UART RX to the EZ-B. So it should work with an EZ-B SendSerial command.

The only other change I made to the code was the pin I use for the Neopixel data output. I used pin 6 instead of pin 13.

To control the individual pixel you send

"C0,255,255,255" This make the first pixel in the chain white

"C1,255,0,0" Will make the second pixel red.

"C2,0,255,0" Will make the third pixel green.

"C3,0,0,255" Will make the fourth pixel blue.

C tells the arduino it is the start of a pixel sequence, the integer immediately after the C is the pixel number. Currently the code support numbers between 0 and 60.

The next integer is the red value and numbers between 0 and 255 are supported.

The next integer is the green value and numbers between 0 and 255 are supported.

The last integer is the blue value and numbers between 0 and 255 are supported.

The Serial Port Baud rate is 9600.

Hope this helps.