• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
led progetto ws2812b scala pico illuminazione

Progetto illuminazione scala led WS2812B + PICO
#1
Rainbow 
Buonasera a tutti!

Mi appoggio a questo forum pieno di idee per trovare supporto per un nuovo progetto che riguarda un Raspberry Pico e 15 spezzoni di strisce led con chip WS2812B che saranno inserite dentro a degli scalini di una scala murata.

Praticamente vorrei creare un effetto "cascata" facendo accendere i led partendo dal primo scalino fino all'ultimo led dell'ultimo scalino grazie alla possibilità del controllo singolo del chip WS2812B.

Ad ora la parte "hardware" del progetto sulla linea teorica è quella presentata nell'allegato nominato "attuale".
Il problema di questa configurazione è l'eccessiva lunghezza del segnale "DATA" in quanto sopra ai 7/10 metri la trasmissione non è più affidabile.
Necessito quindi di segmentare la trasmissione su più output fermo restando che il PI PICO me lo lasci fare.

L'idea di cablaggio sarebbe quindi quella dell'allegato "ipotetico".

Per la parte software userei CircuitPyhton con la libreria NeoPixel dove in situazione di singola linea dati il codice sarebbe:

Codice:
import time
import board
import neopixel

# Choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D18
# NeoPixels must be connected to D10, D12, D18 or D21 to work.
pixel_pin = board.D18

# The number of NeoPixels
num_pixels = 30

ORDER = neopixel.RGBW

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)

E' possibile invece trasformare il codice creando più istanze assegnate a pin PWM diversificati del PICO così:
Codice:
# Simple test for NeoPixels on Raspberry Pi
import time
import board
import neopixel

# Choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D18
# NeoPixels must be connected to D10, D12, D18 or D21 to work.
pixel_pin = board.D10
pixel_pin2 = board.D12
pixel_pin3 = board.D18
pixel_pin4 = board.D21

# The number of NeoPixels
num_pixels = 30

ORDER = neopixel.RGBW

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
pixels2 = neopixel.NeoPixel(pixel_pin2, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
pixels3 = neopixel.NeoPixel(pixel_pin3, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
pixels4 = neopixel.NeoPixel(pixel_pin4, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)

Grazie mille per l'aiuto! Smile


Allegati Anteprime
       
Risposta
#2
Hai già provato e non va? Perchè se le striscie sono messe in cascata, il segnale viene rigenerato al data out, quindi la distanza è quella di un gradino al successivo.
Saluti,
Fabrizio
Risposta
#3
(18/01/2022, 17:35)fabrizior Ha scritto: Hai già provato e non va? Perchè se le striscie sono messe in cascata, il segnale viene rigenerato al data out, quindi la distanza è quella di un gradino al successivo.

Ciao Fabrizio,
Grazie mille per la risposta! Detto in completa sincerità non ho ancora tutto il materiale necessario per il test.
Appena lo avrò proverò! Quindi in linea di massima potrebbe funzionare?
Risposta
  


Vai al forum:


Navigazione: 2 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect