NeoPixel with 272/273 on Pico 2 W Bright White #16723
Replies: 35 comments 16 replies
-
Sorry, can't confirm with v1.25.0-preview-273/272/270*/172. One NeoPixel on GPIO 0 and this code: from machine import Pin
from neopixel import NeoPixel
from time import sleep
pin = Pin(0, Pin.OUT) # set GPIO0 to output to drive NeoPixels
np = NeoPixel(pin, 1)
while True:
np[0] = (64, 0, 0)
np.write()
sleep(1)
np[0] = (0, 64, 0)
np.write()
sleep(1)
np[0] = (0, 0, 64)
np.write()
sleep(1) cycles between red, green and blue as expected. What is your code doing? *: NB - the RPI_PICO2_W-20250207-v1.25.0-preview.267.ge44a2c692.uf2 image (sha1sum
|
Beta Was this translation helpful? Give feedback.
-
Hello,
Your test code works with build 283. I had to move the GPIO to pin 28 to
work with the *Maker Pi Pico V1.2*.
I have my RPi Pico 2 W plugged into a Maker Pi Pico board.
The NeoPixel is on GPIO28
I also have a DS3231 on I2C #1 (not #0) Pins 6 & 7. Should detect missing
DS3231 and adapt for it.
I tried *RPI_PICO2_W-20250210-v1.25.0-preview.283.g11c9656fa.uf2* with the
same result. Max white on the NeoPixel
My main.py is attached.
270 does not exist for the 2 W
Bruce
…On Sun, Feb 9, 2025 at 3:08 PM Stewart Russell ***@***.***> wrote:
Sorry, can't confirm with v1.25.0-preview-273/272/270*/172. One NeoPixel
on GPIO 0 and this code:
from machine import Pinfrom neopixel import NeoPixelfrom time import sleep
pin = Pin(0, Pin.OUT) # set GPIO0 to output to drive NeoPixelsnp = NeoPixel(pin, 1)
while True:
np[0] = (64, 0, 0)
np.write()
sleep(1)
np[0] = (0, 64, 0)
np.write()
sleep(1)
np[0] = (0, 0, 64)
np.write()
sleep(1)
cycles between red, green and blue as expected.
What is your code doing?
*: *NB* - the RPI_PICO2_W-20250207-v1.25.0-preview.267.ge44a2c692.uf2
image (sha1sum 911536199e599b7dcf66fb5775c7e43f220edaf9) is preview-270.
This is its boot banner:
MicroPython v1.25.0-preview.270.gd76733d05 on 2025-02-07; Raspberry Pi Pico 2 W with RP2350
—
Reply to this email directly, view it on GitHub
<#16723 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AWCPQOKJ5ZQDUSX3EBH2BQL2O6YSTAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMJRGA4DOMY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***
com>
|
Beta Was this translation helpful? Give feedback.
-
Your test code works fine under build 238 using GPIO 28. I had to change the GPIO port, but your code still works. The code I attached previously does not work under build 238 using GPIO 28. The NeoPixel on the Maker Pi Pico is hard wired. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
My error for finding an icon <> saying Code and clicking on it. |
Beta Was this translation helpful? Give feedback.
-
I agree it is long, but it fails near the beginning. The user would only be looking for the NeoPixel code initially. It may be other code that is clobbering the neopixel code. The code checks if there is a DS3231. If not it turns off the DS3231 and Neopixel. Were there any changed to the NeoPixel code internal to MicroPython? |
Beta Was this translation helpful? Give feedback.
-
267/270 is the last working version |
Beta Was this translation helpful? Give feedback.
-
OK, I went back to the start. Below is the latest test code. The user can move back and forth by changing line 7. The schematic shows GPIO28 going to the WS2812B pin 4 (Page 1), and a Resistor/Diode/FET/LED. (Q19, BSS138), (Page 2) I don't see any magic there. It looks to go max at the first np.write(). Has there been a change the the internal neopixel library? Bruce
|
Beta Was this translation helpful? Give feedback.
-
I don't know what to say. For you 295 100% good. For me 295 100% bad. I'll try 295 with the SD card pulled. I'll also try with the DS3231 removed. The UART baud rates (which are truly bit rates) are the result of "Let's see how fast can they go?" P.S. My training was that baud rate was when 2 or more bits were encoded into one information packet by phase shift, frequency shift, Quadra-Phase, etc. |
Beta Was this translation helpful? Give feedback.
-
No joy in Mudville after removing the SD card and DS3231. There have been preview releases before that did not work on my MCUs. Other than the NeoPixel, 295 works just fine. What was changed between build 270 and 272? Would having me test 271 be of help? I have Maker Pi Pico Rev1.2. That says there was a 1.0, and 1.1 before 1.2. Do you have 1.2? |
Beta Was this translation helpful? Give feedback.
-
Stewart, More strange results. My O'Scope shows no signal on pin 28.. That cannot be true. It is not a fancy scope. Logic probe fails too. More strange. Running the cycle code below. Basically your version. with 270 I get Red, Green, Blue, Red, . . . (1 second intervals) With 259 I get Red, White, Blue, White, Green, White, Red, . . . (I believe 1/2 second interval for color, then 1/2 second for white) I tried to reproduce the above by loading 270 then 295. Now I get. I am having a hard time typing because the brilliant white is burning a big dot in my retina.. No matter what happens, when I go back to 270, all works correctly. O'Scope and Logic Probe still fails.
|
Beta Was this translation helpful? Give feedback.
-
If I increase the number of NeoPixels to more than 1, my O'Scope and Logic Probe show signals in and out of the NeoPixel. No guess from here. |
Beta Was this translation helpful? Give feedback.
-
The IO Pin to the neopixel should be one way - the Pin should be an
output on the RP2350/RP2040. The pulse bit for the neopixel color is a
high-low pair, of fixed length with the ratio of high to low time
determining 1 or 0, and there are 24bits sent per pixel. An extended low
time is used to mark end of the bit sequence. The high value should be at
VCC (3.3 V) and the low at GND (0V). Default timing in neopixel.py is
1250 ns/bit with high for a '1' bit at 800ns and for a '0' bit at 400 ns
…On Wed, Feb 12, 2025 at 5:17 PM b-blake ***@***.***> wrote:
If I increase the number of NeoPixels to more than 1, my O'Scope and Logic
Probe show signals in and out of the NeoPixel.
No guess from here.
—
Reply to this email directly, view it on GitHub
<#16723 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA5QPQD4COXLGXNLMS5WGBT2PPJA5AVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMJYGA3TSNI>
.
You are receiving this because you commented.Message ID:
***@***.***
com>
--
Rick Sorensen
***@***.***
651-470-5511
|
Beta Was this translation helpful? Give feedback.
-
Rick, I am referring to the input (4) and output (2) pins of the NeoPixel WS2812B. If I confused you into thinking I was referring to the same pin, I apologize. As to the timing of the pulses, my oscilloscope is not of the finest quality. I have yet to figure out how to resolve to the multi-nanosecond, and get the triggering right.. Again I apologize. Right now we are playing the "600 mile screwdriver game". You guys are turning the handle right and left. I am the screwdriver tip reporting what I see with the tools I have available. My confusion comes from things working with build 144 - 270 and not working with build 272 - 295. It looks to me like something changed between build 270 and build 272 that impacts the NeoPixel data stream formation. What that change is, is not visible to me on my scope. I could guess, but I would be doing it through complete ignorance as to what is happening in the source code. Would any of the bugs in the RP2350 chip impact this? Is GPIO 28 any different from the other pins? Bruce |
Beta Was this translation helpful? Give feedback.
-
I tried build 301. No change. |
Beta Was this translation helpful? Give feedback.
-
This change causes the timing to be changed marginally. Before the change: 380ns T0H, 800ns T0L, 1:780 ns T1H, 400ns T1L Actually there are different value for that in the two data sheet copies I have. I get from the first WS2812B Mini:
From the second, WS2812B:
Do you know which version is at the board? |
Beta Was this translation helpful? Give feedback.
-
I do not have a true build 267. The file name I have says 267, but the os.name()[3] says it is 270. |
Beta Was this translation helpful? Give feedback.
-
Isn't it the opposite: using a "fast" WS2812 with the slow timing=0 results in all white, while using a "slow" WS2812 with the fast timing=1 would result in all black? |
Beta Was this translation helpful? Give feedback.
-
timing=0 ~ Solid bright white. timing=1 ~ flickering bright white |
Beta Was this translation helpful? Give feedback.
-
If it is looping too fast with all colors alternatively on you will see a flickering White. So you need a sleep in between. Just verified. |
Beta Was this translation helpful? Give feedback.
-
Below is the code I am using for testing
When I slow it down to 1 second per color I get a color, white, color,
white...
Each lasts about a second.
The colors change each time ~ green, red, blue, *magenta*, red, blue,
green, red, blue, *orange*, *cyan*, blue, green, red, blue...
I have seen yellow too.
As far as I can tell there is no pattern to the color replacing green, red,
blue in the sequence
It should be noted with 267 I get red, green, blue, as the code says, with
no white between each color.
It looks like the RGB are in the reverse order for 301. No guess on the
random, random color.
```
from time import sleep
GPIOPin = 28
noPixels = 1
if True: # Stewart's setup
from machine import Pin
from neopixel import NeoPixel
pin = Pin(GPIOPin, Pin.OUT) # set GPIO0 to output to drive NeoPixels
np = NeoPixel(pin, noPixels, bpp=3, timing=1)
sleep(0.1)
np[0] = (0, 0, 0)
np.write()
sleep(1)
else: # Bruce's setup
import machine
import neopixel
np = neopixel.NeoPixel(machine.Pin(GPIOPin), noPixels, bpp=3, timing=1)
sleep(0.1)
np[0] = (0, 0, 0)
np.write()
sleep(1)
print('Start')
i = 1
p = noPixels - 1
while True:
np[p] = (64, 0, 0)
np.write()
print('Red')
sleep(i)
np[p] = (0, 64, 0)
np.write()
print('Green')
sleep(i)
np[p] = (0, 0, 64)
np.write()
print('Blue')
sleep(i)
```
…On Sat, Feb 15, 2025 at 3:11 PM Robert Hammelrath ***@***.***> wrote:
It flickers because I have it looping as fast as possible.
If it is looping too fast with all colors you will see a flickering White.
—
Reply to this email directly, view it on GitHub
<#16723 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AWCPQOMJ5Y4ALSQ74GHW3BL2P6NOVAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMRRGE3DSOI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***
com>
|
Beta Was this translation helpful? Give feedback.
-
Stewart,
1. you have an intermittent hardware issue that unfortunately
*somehow* correlates
to the firmware loading process;
2. you aren't running the code you're showing us; or
3. you are trolling and deliberately wasting our time.
I am running the code in the previous post. I have added diagnostic code
to assist me.
I will not address item 3.
…On Sat, Feb 15, 2025 at 3:44 PM Bruce Blake ***@***.***> wrote:
Below is the code I am using for testing
When I slow it down to 1 second per color I get a color, white, color,
white...
Each lasts about a second.
The colors change each time ~ green, red, blue, *magenta*, red, blue,
green, red, blue, *orange*, *cyan*, blue, green, red, blue...
I have seen yellow too.
As far as I can tell there is no pattern to the color replacing green,
red, blue in the sequence
It should be noted with 267 I get red, green, blue, as the code says, with
no white between each color.
It looks like the RGB are in the reverse order for 301. No guess on the
random, random color.
```
from time import sleep
GPIOPin = 28
noPixels = 1
if True: # Stewart's setup
from machine import Pin
from neopixel import NeoPixel
pin = Pin(GPIOPin, Pin.OUT) # set GPIO0 to output to drive NeoPixels
np = NeoPixel(pin, noPixels, bpp=3, timing=1)
sleep(0.1)
np[0] = (0, 0, 0)
np.write()
sleep(1)
else: # Bruce's setup
import machine
import neopixel
np = neopixel.NeoPixel(machine.Pin(GPIOPin), noPixels, bpp=3, timing=1)
sleep(0.1)
np[0] = (0, 0, 0)
np.write()
sleep(1)
print('Start')
i = 1
p = noPixels - 1
while True:
np[p] = (64, 0, 0)
np.write()
print('Red')
sleep(i)
np[p] = (0, 64, 0)
np.write()
print('Green')
sleep(i)
np[p] = (0, 0, 64)
np.write()
print('Blue')
sleep(i)
```
On Sat, Feb 15, 2025 at 3:11 PM Robert Hammelrath <
***@***.***> wrote:
> It flickers because I have it looping as fast as possible.
>
> If it is looping too fast with all colors you will see a flickering White.
>
> —
> Reply to this email directly, view it on GitHub
> <#16723 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AWCPQOMJ5Y4ALSQ74GHW3BL2P6NOVAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMRRGE3DSOI>
> .
> You are receiving this because you were mentioned.Message ID:
> ***@***.***
> com>
>
|
Beta Was this translation helpful? Give feedback.
-
Robert,
I do not understand what you are saying with:
*If the timing is the problem, you can try to directly set it with the
timing argument, e.g. as timing=(300,800,800,300)*
Do you want me to pass the tuple you show in your statement? If so, how
should I vary the numbers to find a workable number?
…On Sat, Feb 15, 2025 at 3:50 PM Bruce Blake ***@***.***> wrote:
Stewart,
1. you have an intermittent hardware issue that unfortunately *somehow* correlates
to the firmware loading process;
2. you aren't running the code you're showing us; or
3. you are trolling and deliberately wasting our time.
I am running the code in the previous post. I have added diagnostic code
to assist me.
I will not address item 3.
On Sat, Feb 15, 2025 at 3:44 PM Bruce Blake ***@***.***> wrote:
> Below is the code I am using for testing
>
> When I slow it down to 1 second per color I get a color, white, color,
> white...
> Each lasts about a second.
> The colors change each time ~ green, red, blue, *magenta*, red, blue,
> green, red, blue, *orange*, *cyan*, blue, green, red, blue...
> I have seen yellow too.
>
> As far as I can tell there is no pattern to the color replacing green,
> red, blue in the sequence
>
> It should be noted with 267 I get red, green, blue, as the code says,
> with no white between each color.
> It looks like the RGB are in the reverse order for 301. No guess on the
> random, random color.
>
> ```
> from time import sleep
>
> GPIOPin = 28
> noPixels = 1
>
> if True: # Stewart's setup
> from machine import Pin
> from neopixel import NeoPixel
> pin = Pin(GPIOPin, Pin.OUT) # set GPIO0 to output to drive NeoPixels
> np = NeoPixel(pin, noPixels, bpp=3, timing=1)
> sleep(0.1)
> np[0] = (0, 0, 0)
> np.write()
> sleep(1)
> else: # Bruce's setup
> import machine
> import neopixel
> np = neopixel.NeoPixel(machine.Pin(GPIOPin), noPixels, bpp=3,
> timing=1)
> sleep(0.1)
> np[0] = (0, 0, 0)
> np.write()
> sleep(1)
> print('Start')
> i = 1
> p = noPixels - 1
> while True:
> np[p] = (64, 0, 0)
> np.write()
> print('Red')
> sleep(i)
>
> np[p] = (0, 64, 0)
> np.write()
> print('Green')
> sleep(i)
>
> np[p] = (0, 0, 64)
> np.write()
> print('Blue')
> sleep(i)
> ```
>
> On Sat, Feb 15, 2025 at 3:11 PM Robert Hammelrath <
> ***@***.***> wrote:
>
>> It flickers because I have it looping as fast as possible.
>>
>> If it is looping too fast with all colors you will see a flickering
>> White.
>>
>> —
>> Reply to this email directly, view it on GitHub
>> <#16723 (comment)>,
>> or unsubscribe
>> <https://github.com/notifications/unsubscribe-auth/AWCPQOMJ5Y4ALSQ74GHW3BL2P6NOVAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMRRGE3DSOI>
>> .
>> You are receiving this because you were mentioned.Message ID:
>> ***@***.***
>> .com>
>>
>
|
Beta Was this translation helpful? Give feedback.
-
Robert,
You found the nail. * timing=(300,800,800,300) *made it work under 301
It works under 267 also. What does this tell us. Well you guys, I have no
idea.
…On Sat, Feb 15, 2025 at 3:54 PM Bruce Blake ***@***.***> wrote:
Robert,
I do not understand what you are saying with:
*If the timing is the problem, you can try to directly set it with the
timing argument, e.g. as timing=(300,800,800,300)*
Do you want me to pass the tuple you show in your statement? If so, how
should I vary the numbers to find a workable number?
On Sat, Feb 15, 2025 at 3:50 PM Bruce Blake ***@***.***> wrote:
> Stewart,
>
>
> 1. you have an intermittent hardware issue that unfortunately
> *somehow* correlates to the firmware loading process;
> 2. you aren't running the code you're showing us; or
> 3. you are trolling and deliberately wasting our time.
>
> I am running the code in the previous post. I have added diagnostic code
> to assist me.
>
> I will not address item 3.
>
>
> On Sat, Feb 15, 2025 at 3:44 PM Bruce Blake ***@***.***> wrote:
>
>> Below is the code I am using for testing
>>
>> When I slow it down to 1 second per color I get a color, white, color,
>> white...
>> Each lasts about a second.
>> The colors change each time ~ green, red, blue, *magenta*, red, blue,
>> green, red, blue, *orange*, *cyan*, blue, green, red, blue...
>> I have seen yellow too.
>>
>> As far as I can tell there is no pattern to the color replacing green,
>> red, blue in the sequence
>>
>> It should be noted with 267 I get red, green, blue, as the code says,
>> with no white between each color.
>> It looks like the RGB are in the reverse order for 301. No guess on the
>> random, random color.
>>
>> ```
>> from time import sleep
>>
>> GPIOPin = 28
>> noPixels = 1
>>
>> if True: # Stewart's setup
>> from machine import Pin
>> from neopixel import NeoPixel
>> pin = Pin(GPIOPin, Pin.OUT) # set GPIO0 to output to drive NeoPixels
>> np = NeoPixel(pin, noPixels, bpp=3, timing=1)
>> sleep(0.1)
>> np[0] = (0, 0, 0)
>> np.write()
>> sleep(1)
>> else: # Bruce's setup
>> import machine
>> import neopixel
>> np = neopixel.NeoPixel(machine.Pin(GPIOPin), noPixels, bpp=3,
>> timing=1)
>> sleep(0.1)
>> np[0] = (0, 0, 0)
>> np.write()
>> sleep(1)
>> print('Start')
>> i = 1
>> p = noPixels - 1
>> while True:
>> np[p] = (64, 0, 0)
>> np.write()
>> print('Red')
>> sleep(i)
>>
>> np[p] = (0, 64, 0)
>> np.write()
>> print('Green')
>> sleep(i)
>>
>> np[p] = (0, 0, 64)
>> np.write()
>> print('Blue')
>> sleep(i)
>> ```
>>
>> On Sat, Feb 15, 2025 at 3:11 PM Robert Hammelrath <
>> ***@***.***> wrote:
>>
>>> It flickers because I have it looping as fast as possible.
>>>
>>> If it is looping too fast with all colors you will see a flickering
>>> White.
>>>
>>> —
>>> Reply to this email directly, view it on GitHub
>>> <#16723 (comment)>,
>>> or unsubscribe
>>> <https://github.com/notifications/unsubscribe-auth/AWCPQOMJ5Y4ALSQ74GHW3BL2P6NOVAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMRRGE3DSOI>
>>> .
>>> You are receiving this because you were mentioned.Message ID:
>>> <micropython/micropython/repo-discussions/16723/comments/12211699@
>>> github.com>
>>>
>>
|
Beta Was this translation helpful? Give feedback.
-
FYI ~ *timing=(400,800,800,400)* returns to brilliant white.
A quick search does not explain what is happening.
…On Sat, Feb 15, 2025 at 4:03 PM Bruce Blake ***@***.***> wrote:
Robert,
You found the nail. * timing=(300,800,800,300) *made it work under 301
It works under 267 also. What does this tell us. Well you guys, I have
no idea.
On Sat, Feb 15, 2025 at 3:54 PM Bruce Blake ***@***.***> wrote:
> Robert,
>
> I do not understand what you are saying with:
>
> *If the timing is the problem, you can try to directly set it with the
> timing argument, e.g. as timing=(300,800,800,300)*
>
> Do you want me to pass the tuple you show in your statement? If so, how
> should I vary the numbers to find a workable number?
>
> On Sat, Feb 15, 2025 at 3:50 PM Bruce Blake ***@***.***> wrote:
>
>> Stewart,
>>
>>
>> 1. you have an intermittent hardware issue that unfortunately
>> *somehow* correlates to the firmware loading process;
>> 2. you aren't running the code you're showing us; or
>> 3. you are trolling and deliberately wasting our time.
>>
>> I am running the code in the previous post. I have added diagnostic
>> code to assist me.
>>
>> I will not address item 3.
>>
>>
>> On Sat, Feb 15, 2025 at 3:44 PM Bruce Blake ***@***.***> wrote:
>>
>>> Below is the code I am using for testing
>>>
>>> When I slow it down to 1 second per color I get a color, white, color,
>>> white...
>>> Each lasts about a second.
>>> The colors change each time ~ green, red, blue, *magenta*, red, blue,
>>> green, red, blue, *orange*, *cyan*, blue, green, red, blue...
>>> I have seen yellow too.
>>>
>>> As far as I can tell there is no pattern to the color replacing green,
>>> red, blue in the sequence
>>>
>>> It should be noted with 267 I get red, green, blue, as the code says,
>>> with no white between each color.
>>> It looks like the RGB are in the reverse order for 301. No guess on
>>> the random, random color.
>>>
>>> ```
>>> from time import sleep
>>>
>>> GPIOPin = 28
>>> noPixels = 1
>>>
>>> if True: # Stewart's setup
>>> from machine import Pin
>>> from neopixel import NeoPixel
>>> pin = Pin(GPIOPin, Pin.OUT) # set GPIO0 to output to drive
>>> NeoPixels
>>> np = NeoPixel(pin, noPixels, bpp=3, timing=1)
>>> sleep(0.1)
>>> np[0] = (0, 0, 0)
>>> np.write()
>>> sleep(1)
>>> else: # Bruce's setup
>>> import machine
>>> import neopixel
>>> np = neopixel.NeoPixel(machine.Pin(GPIOPin), noPixels, bpp=3,
>>> timing=1)
>>> sleep(0.1)
>>> np[0] = (0, 0, 0)
>>> np.write()
>>> sleep(1)
>>> print('Start')
>>> i = 1
>>> p = noPixels - 1
>>> while True:
>>> np[p] = (64, 0, 0)
>>> np.write()
>>> print('Red')
>>> sleep(i)
>>>
>>> np[p] = (0, 64, 0)
>>> np.write()
>>> print('Green')
>>> sleep(i)
>>>
>>> np[p] = (0, 0, 64)
>>> np.write()
>>> print('Blue')
>>> sleep(i)
>>> ```
>>>
>>> On Sat, Feb 15, 2025 at 3:11 PM Robert Hammelrath <
>>> ***@***.***> wrote:
>>>
>>>> It flickers because I have it looping as fast as possible.
>>>>
>>>> If it is looping too fast with all colors you will see a flickering
>>>> White.
>>>>
>>>> —
>>>> Reply to this email directly, view it on GitHub
>>>> <#16723 (comment)>,
>>>> or unsubscribe
>>>> <https://github.com/notifications/unsubscribe-auth/AWCPQOMJ5Y4ALSQ74GHW3BL2P6NOVAVCNFSM6AAAAABWX6HUTWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEMRRGE3DSOI>
>>>> .
>>>> You are receiving this because you were mentioned.Message ID:
>>>> <micropython/micropython/repo-discussions/16723/comments/12211699@
>>>> github.com>
>>>>
>>>
|
Beta Was this translation helpful? Give feedback.
-
Lacking knowledge of the exact timing at your WS2812B chip it's hard to find a reason. We do not know if the boards send wrong times or if the WS2812B is out of spec. Most likely it's the latter. The only thing we observed is, that shortening the H phase for a 0 bit solves the problem. @scruss pointed at commit 7964a43 which caused the bit times to be extended a little bit. That could be the change you have seen between working and failing. |
Beta Was this translation helpful? Give feedback.
-
I have done some playing with the first number. It works with 399, and fails with 400. That is a very, very close miss. After reading four different discussions about WS2812 timing I settled on (350, 750, 800, 400). The WS2812B specification sheet I found says (400, 800, 850, 450) is the center value +/- 150 nanoseconds. Knowing that commit 7964a43 has extended the NeoPixel timing, does the MicroPython NeoPixel code need to be adjusted? Please advise if the MicroPython code is adjusted so I can test with the change. |
Beta Was this translation helpful? Give feedback.
-
This commit extended the timing for RP2350 only to better match the NeoPixel specification. Before, the timing was slightly to low, but still within the NeoPixel tolerance. |
Beta Was this translation helpful? Give feedback.
-
@robert-hh, I understand. I have been looking on the internet for the documentation for the NeoPixel timing=(400,800,800,400) option. |
Beta Was this translation helpful? Give feedback.
-
I agree. 4 out of 5 say the first state should be 220ns to 380ns. The first data sheet numbers may have been rounded. .350 will round to .400 even though that is not in the range of .220 to .380. The data sheet with a 2020 in its title is the one I have most confidence in. 3.7 volts minus 5% is 3.515 volts. 3.5 volts minus 5% is 3.325 volts. Both are above the 3.3 nominally available on microprocessors and microcontrollers, again out of spec. I would think a slightly lower voltage would impact timing. Which way I am not sure. I doubt the timing inside a NeoPixel is crystal controlled. Most likely an R-C triple inverter oscillator. Very susceptible to voltage and temperature influence. |
Beta Was this translation helpful? Give feedback.
-
Hello,
Versions prior to 272 drive the NeoPixel properly.
Starting with 272/273 the NeoPixel goes to bright white with very minor flicker.
Going back to 267 all is good again.
Bad = RPI_PICO2_W-20250208-v1.25.0-preview.273.gb2ce9b6fb.uf2
Bruce
Beta Was this translation helpful? Give feedback.
All reactions