Stap 4: Program de Controller
Het besturingselement voor de lichtshow werd gedaan met behulp van Python en geëxecuteerd op een Raspberry Pi model B. Ik een paar van de bestanden hier opgenomen, maar de volledige set van broncode kan worden gevonden op github. Het belangrijkste bestand is lightshow.py. Dit is waar u omhoog de pennen die u op de Raspberry Pi gebruikt, zult u moeten er zeker en sluit de dezelfde pinnen zoals ik deed of bijwerken van dit deel van de code. Lightshow.py is ook waar u de afspeellijst die zal worden uitgevoerd. Ik heb het ingesteld op het uitvoeren van een reeks eenvoudige chase tweemaal aan het begin. Dit is nuttig om ervoor te zorgen dat alles wordt vastgehaakt en werkt correct. Het draait dan elk nummer in de afspeellijst. Vóór elk lied die het geeft een indicatie van welke genummerd item in de afspeellijst (beginnend met 0) begint dat er over te lopen door de verlichting van dat aantal. Als de afspeellijst meer nummers dan sterren de indicator zal teruglopen van de andere kant en start met 1 ster verlicht bevat. Wanneer elke song voltooid is, loopt het een finale programma waar het schittert van alle sterren gedurende 5 seconden en dan laat ze allemaal verlicht. Het gaat dan over naar het volgende liedje.
De nummers zijn geprogrammeerd met behulp van de klasse van een Song die is gedefinieerd in het bestand lightshow_classes.py. De Song-klasse bepaalt elk van de e-f-g-a-b-c-d in mijn geval samen met de duur van de toelichting merkt. 1 beat voor een kwartnoot, 1/2 beat voor een achtste noot, etc. Als je gebruiken meer dan 7 sterren wilt, zou u wilt wijzigen in deze sectie als u wilt de extra notities toewijzen.
Elk nummer heeft zijn eigen bestand. Gebruik Deck_The_Halls.py als voorbeeld. Deze bestanden zijn gemaakt door het kijken naar een set van bladmuziek en elke noot en de duur toe te voegen aan de lijst met Song.notes. Een belangrijk onderdeel van dit bestand is het tempo spelen op. Dit is een argument aan de constructor van de klasse Song (in het voorbeeld is het 140 slagen/minuut). Deze werden ingesteld door trial and error en met behulp van wat leek te kijken best. In theorie, kan elk nummer worden gecodeerd op deze manier en toegevoegd aan de afspeellijst, hoewel het is beperkt tot slechts verhelderend één licht tegelijkertijd.
Er is ook een Toon klasse die kan worden gebruikt voor het uitvoeren van commando's zoals het draaien van een licht aan/uit, alle lichten in-/ uitschakelen, spelen een nummer. De combinatie van deze methoden is hoe de chase.py functie is gemaakt.
Zodra geladen op de Raspberry Pi, het programma kan worden uitgevoerd door de opdracht: sudo python lightshow.py
Het Relais maken een hoorbaar 'Klik' wanneer ze schakelen dus krijg je een indicatie dat het liedje wordt afgespeeld, zelfs als u niet kunt het licht zelf zien.