Stap 14: Python programma controle LED-strip
Wat doet het Python programma moet doen, nu?
Setup de OPC-client (om te communiceren met onze Fadecandy-board)
Instelling OSC server (om input ontvangen TouchOSC app via Wifi aangesloten telefoon)
Setup enkele variabelen voor het opslaan van de huidige waarden die kunnen worden gebruikt door alle functies ik deed dit met globale variabelen met succes, maar ik ben niet zeker als dit de beste praktijken is.
Worden kundig voor speurder relatieve-tot-mens-reactie-tijd snel asynchrone input (ingang komt niet regelmatige tussenpozen maken uw algehele Python programma structuur hoeft te controleren om zo vaak mogelijk ingang)
Het inkomende bericht van OSC van TouchOSC in een karakter array opslaan
Parseren van de matrix voor OSC gegevens (naam van het kanaal, kenmerknaam en kenmerk bereik; Aanpasbare in TouchOSC Editor in het eigenschappen menu links)
Verdeelde gegevens worden opgeslagen in tijdelijke functie variabelen
Tijdelijke functie waarde wordt opgeslagen in de relevante globale variabele (programma krijgt een nieuwe OSC bericht; Ik verhuisde een fader, het is nu op een waarde van 10; de fader werd op pagina 1 en heet "redfader" dus ik moet bijwerken mijn globale variabele pixelcolorred (of de beschrijvende naam die je wilt). De globale variabele was de heuristische aanpak. Ik gebruik het omdat ik kan gemakkelijk zien welke functie is knoeien met het vanwege het verdeelde osc-bericht. Ik heb begrepen dat er een gevaarlijke variabele omdat alles kunt openen en bewerken, maar thats wat was soort van de manier waarop ik zag de werking van het programma.
Opstarten in een hoofdlus op een initiële modus in een tijdje lus (zoals kanalen op een tv). Dit is de standaardmodus van de landing die het eerste "effect worden zal" de matrix LED begint te lopen wanneer het Python programma wordt opgestart (die bij het opstarten worden zal)
Kunnen uit dat de modus effect while-lus snel genoeg om op te schakelen niet aankondiging lag
Het programma vraagt voortdurend de client als geen nieuwe OSC berichten zijn ontvangen. Elke wijziging van een van de besturingselementen voor TouchOSC stuurt de relevante OSC boodschap die zal worden gedetecteerd op elke regel die wordt gebruikt:
server.handle_request()
Wanneer een moduswijziging wordt gedetecteerd (via vergelijkbare functionaliteit naar het voorbeeld van de wijziging van de fader wordt gedetecteerd) zal het programma van het voorafgaand breken terwijl lus, ga door de lijst, terwijl de lussen totdat hij vindt de juiste modus lus, en looppas die tot een andere modus wijzigen wordt gedetecteerd. Ik heb geprobeerd om het organiseren van de modi in functies in plaats van ze allemaal in de hoofdlus van run-time, maar dan kreeg een beetje meer ingewikkeld / volgestopt met behulp van de functie server.handle_request() binnenkant van de andere functie nest, en ik wilde niet vrij om te gaan met die.
Ik wil niet te specifiek om hier te komen want dat is waar de creativiteit komt, samen met sommige Python ervaring die ik niet volledig krijgen in. (Ik ben van plan om te bewerken in een aantal van de OPC en OSC setup in Python) maar sommige groot voorgerecht-middelen kunnen hier worden gevonden:
Enkele nuttige hulpprogramma's vindt u in:
- Math bibliotheek (absolute waarde)
- tijd (goed voor een andere willekeurige variabele is die lineair verloopt)
- willekeurige (het genereren van pseudo-willekeurige waarde)
- color_utils (sommige klemmen functies vergrendeling een mix en max, bereiken, remapping en andere nuttige functies met betrekking tot LED control) en komt uit een Open Pixel controle Python bibliotheek toegevoegd op