WS2812 LED Strip

Für Themen rund um das Prozessabbild des RevPi Core
Post Reply
Donald
Posts: 2
Joined: 12 May 2022, 22:03

WS2812 LED Strip

Post by Donald »

Hallo Zusammen,
ich habe mich vor ein paar Wochen mit RevPi beschäftigt und würde gerne auf RevPi ein WS2812 LED Strip mit Python ansteuern. Ich bin noch in der Einarbeitungsphase und ich weiß nicht wie ich damit anfangen soll. Die Bibliothek von RevPiModIO mit Python habe ich gelesen und habe leider keine Ahnung wie ich mit meinem Programm anfangen soll. Kann jemand mir bitte mit einem kleinen Progrämmschen helfen. Tausend Dank im Voraus
Gruß
Donald
User avatar
nicolaiB
KUNBUS
Posts: 916
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: WS2812 LED Strip

Post by nicolaiB »

Hallo Donald,

ich fürchte das wird nicht so ohne weiteres Möglich sein, da der Revolution Pi die GPIOs nicht direkt nach Außen zur Verfügung stellt (wie etwa der Raspberry Pi). Oder hast du einen anderen Plan, wie du die WS2812 mit dem Revolution Pi anbinden kannst?

Gruß Nicolai
User avatar
crismancich
KUNBUS
Posts: 40
Joined: 05 Jan 2021, 11:25
Location: Hamburg
Contact:

Re: WS2812 LED Strip

Post by crismancich »

Hallo Donald,

der RevPi ist dafür gedacht, mit der 24V Industriewelt zu arbeiten. Der LED Strip kommt aus der 5V Maker welt. In den Industriesensoren sind häufig auch 5V Welt Teile verbaut, aber nach außen über Industrieübliche Spannungsversorgung, 24V Digital, Analog 5-10V, 4-20ma, RTD, 24V PWM etc. Idealerweise würde man den LED Strip über einen ESP8266, Raspberry Pi, Arduino o.ä. ansteuern. Dafür gibt es fertige Software, die Hardware ist günstiger. Zudem kannst du die LED Strips dann über Wifi vom RevPi aus steuern. So habe ich es in meinem Demo Showcase auf der Hannover Messe gemacht. ESP8266 am Stripe, Steuerung über RevPi und NodeRed. In der Industrie würde man eher Sachen wie das Balluff Smart Light verwenden. https://assets.balluff.com/WebBinary1/L ... 02_000.pdf

Wir verwenden die GPIOs des Raspberry Pi Compute Module intern. Man kommt, wie ich mich erinnere, über die Con Bridge des Connect etwas umständlich da ran. Die Schaltpläne können wir zur Verfügung stellen. Aber dieser Weg wird von uns nicht aktiv Supported. Daher die Frage: Warum Revolution Pi und LED Strip?
Viele Grüße / Kind regards / Quapla’ / 此致敬意
Boris Crismancich
Donald
Posts: 2
Joined: 12 May 2022, 22:03

Re: WS2812 LED Strip

Post by Donald »

#!/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 revpimodio2
import time
from rpi_ws281x import PixelStrip, Color
import argparse
import neopixel
from time import sleep
from neopixel import *
from rpi_ws281x import PixelStrip, Color
import argparse
import board

outputformat = "PWM_{}"
revpi = revpimodio2.RevPiModIO(autorefresh=True)


# LED strip configuration:
LED_COUNT = 40 # Number of LED pixels.
LED_PIN = revpi.io.PWM_3.value # 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

class revPi():

def __init__(self):
self.out = [outputformat.format(x) for x in range(1, 5)]

self.revpi = revpimodio2.RevPiModIO(autorefresh=True)

# Define functions which animate LEDs in various ways.
def colorWipe(self, 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 = PixelStrip(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()

root = revPi()


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

try:

while True:
print('Color wipe animations.')
root.colorWipe(strip, Color(255, 0, 0)) # Red wipe
root.colorWipe(strip, Color(0, 255, 0)) # Green wipe
root.colorWipe(strip, Color(0, 0, 255)) # Blue wipe


except KeyboardInterrupt:
if args.clear:
root.colorWipe(strip, Color(0, 0, 0), 10)
Post Reply