jgarff / rpi_ws281x

Userspace Raspberry Pi PWM library for WS281X LEDs
BSD 2-Clause "Simplified" License
1.78k stars 622 forks source link

Raspberry Pi Zero W + SN74AHCT125N + ws2812b #314

Open Piero87 opened 6 years ago

Piero87 commented 6 years ago

Hi, I have follow the Adafruit Guide to wire my led strip ws2812b (of 10 led) to Raspberry Pi Zero W using the SN74AHCT125N as level converter, i have a power supply for the led strip of 5V 500ma, the strandtest.py give me a bad result the colors are not what they should be. So I try this simple test:

from neopixel import *
strip = Adafruit_NeoPixel(10, 18, 800000, 5, False, 255)
strip.begin()
strip.setPixelColorRGB(0, 127, 127, 127)
strip.setPixelColorRGB(1, 127, 127, 127)
strip.setPixelColorRGB(5, 127, 127, 127)
strip.show()

The 127,127,127 should be a white color, the result of this code is this:

LED0 = RED LED1 = OFF LED5 = WHITE

This code:

from neopixel import *
strip = Adafruit_NeoPixel(10, 18, 800000, 5, False, 255)
strip.begin()
strip.setPixelColorRGB(7, 127, 127, 127)
strip.setPixelColorRGB(8, 127, 127, 127)
strip.setPixelColorRGB(9, 127, 127, 127)
strip.show()

Result:

LED5 = Blue (That is not in the code and should be off) LED6 = White (That is not in the code and should be off) LED7 = White (correct) LED8 = GREEN (wrong) LED9 = Off (should be on)

I can't understand why i get this result, i have tried also to edit the strandtest example:

#!/usr/bin/env python3
# NeoPixel library strandtest example
# Author: Tony DiCola (tony@tonydicola.com)
#
# Direct port of the Arduino NeoPixel library strandtest example.  Showcases
# various animations on a strip of NeoPixels.

import time
from neopixel import *
import argparse

# LED strip configuration:
LED_COUNT      = 10      # Number of LED pixels.
LED_PIN        = 18      # GPIO pin connected to the pixels (18 uses PWM!).
#LED_PIN        = 10      # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ    = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA        = 10      # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 255     # Set to 0 for darkest and 255 for brightest
LED_INVERT     = False   # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL    = 0       # set to '1' for GPIOs 13, 19, 41, 45 or 53

# Define functions which animate LEDs in various ways.
def colorWipe(strip, color, wait_ms=50):
    """Wipe color across display a pixel at a time."""
    for i in range(strip.numPixels()):
        strip.setPixelColor(i, color)
        strip.show()
        time.sleep(wait_ms/1000.0)

# Main program logic follows:
if __name__ == '__main__':
    # Process arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit')
    args = parser.parse_args()

    # Create NeoPixel object with appropriate configuration.
    strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
    # Intialize the library (must be called once before other functions).
    strip.begin()

    print ('Press Ctrl-C to quit.')
    if not args.clear:
        print('Use "-c" argument to clear LEDs on exit')

    try:

        while True:
                # Color wipe animations.
                colorWipe(strip, Color(127, 127, 127), 0)  # Composite White wipe
    except KeyboardInterrupt:
        if args.clear:
            colorWipe(strip, Color(0,0,0), 10)

And with this example all the led are white but the light is flickering, I made a video: https://www.youtube.com/watch?v=biANv3kYmsI&feature=youtu.be

Anyone can help me?


I want add also another thing that I can't understand, my led strip is of 10 led, if I print this:

print(strip.numPixels())

the output is 10, if I print this:

for i in range(strip.numPixels()):
  print(i)

The output is this:

0
1
2
3
4
5
6
7
8
9
10

so seems to be 11 led, why?

jtkDvlp commented 5 years ago

Two ideas, maybe it will help:

  1. try a more powerfull power supply with more A. 10 leds a 60ma is more than 500ma a 5V this could be the reason for flickering
  2. do you connect led´s ground to the power supply AND your controller?