Trådlös Phone Remote-Controlled LED Strips: RasPi w / Fadecandy driver w / WS2811/WS2812 adresserbara LED Strips med TouchOSC Smartphone App med Iphone eller Droid (14 / 16 steg)
Steg 14: Python Program till kontroll LED strip
Vad gör programmet Python behöver göra nu?
Setup OPC klient (att kommunicera med vår Fadecandy styrelse)
Konfigurera OSC-server (för att få input från TouchOSC app via Wifi ansluten telefon)
Ställa in vissa variabler för att lagra de aktuella värdena för system som kan användas av alla funktioner jag gjorde detta med globala variabler framgångsrikt, men jag är inte säker på om detta är bästa praxis.
Att kunna upptäcka släkting till mänskliga-reaktion-tid snabbt asynkron ingång (input kommer icke regelbundna mellanrum att göra dina övergripande Python program struktur behöva kontrollera ingång så ofta som möjligt)
Lagra inkommande OSC budskapet från TouchOSC till en karaktär array
Tolka matrisen för OSC data (Kanalnamn, namn och attribut utbud; Anpassningsbar i TouchOSC Editor i egenskaper-menyn vänster)
Lagra analyserad data i tillfälliga funktionen variabler
Lagrar temporära funktionen värde till den relevanta globala variabeln (program får ett nytt OSC meddelande; Jag flyttade en fader, är det nu på en värdera av 10. Fadern var på sidan 1, och kallas "redfader" så jag behöver uppdatera min global variabel pixelcolorred (eller oavsett beskrivande namn du vill). Den globala variabeln var den heuristiska metoden. Jag använder den eftersom jag kan lätt se vilken funktion är jävlas med det på grund av analyserad osc meddelandet. Jag förstår att det är en farlig variabel eftersom allt kan komma åt den och redigera den, men det är vad var typ av vägen såg jag programmet arbetar.
Start i en huvudloop på en inledande mode i ett tag loop (som kanaler på tv). Detta är standardläget landning som kommer att vara den första "effekten" arrayen LED börjar löpa när Python programmet startar (som kommer att vara på boot)
Att kunna växla från det läget effekt tag-loop tillräckligt snabbt för att inte märka lag
Programmet ber ständigt klienten om något nytt OSC meddelande har tagits emot. Varje ändring av någon av TouchOSC kontrollerna kommer att skicka relevanta OSC meddelandet som kommer att upptäckas på varje rad används:
Server.handle_request()
När en förändring upptäcks (via liknande funktioner till exempel fader förändringen upptäcks) bryter programmet från föregående loop, gå igenom listan medan slingor tills den hittar den korrekta läget slinga, och kör det till ett annat läge ändra är att upptäcka. Jag försökte ordna lägen i funktioner istället för boet dem alla i den huvudsakliga körning slingan, men då det fick lite mer komplicerat / belamrad med funktionen server.handle_request() i den andra funktionen, och jag ville inte riktigt ta itu med detta.
Jag vill inte få alltför specifik här eftersom det är där kreativitet kommer in, tillsammans med några Python upplevelse som jag inte helt komma in. (Jag planerar att redigera i några av OPC och OSC inställningarna i Python) men några bra starter resurser kan hittas här:
Några användbara verktyg finns i:
- Math-biblioteket (absolut värde)
- tid (bra för en annan slumpvariabel som är linjärt framåt)
- slumpmässig (genererar pseudo-slumpmässiga värde)
- color_utils (vissa fastspänning funktioner låsa en mix och max, remapping spänner, och andra användbara funktioner som hänför sig till LED kontroll) och kommer från öppna Pixel kontroll Python bibliotek på