Arbeitet das Play-Kommando nicht wie erwartet, hilft es, eine externe Soundkarte an den RasPi anzuschließen und zu konfigurieren. Abbildung 3 zeigt die Augen und den Mund des Automaten. Falls Sie den Aufbau in Aktion sehen möchten, schauen Sie bei Youtube vorbei [5].
Listing 4
#!/usr/bin/env python
# coding=utf-8
from __future__ import print_function
# Import Pixtend class
from pixtendlib import Pixtend
import time
import sys
import threading
import os, platform
p = Pixtend()
# Open SPI bus for communication
try:
p.open()
except IOError as io_err:
# Print error text and delete PiXtend instance
print("Error opening the SPI bus! Error is: ", io_err)
p.close()
p = None
def thread_sound():
os.system("play gost.wav")
def thread_animation():
os.system("sudo python ws.py")
# -----------------------------------------------------
# Main Program
# -----------------------------------------------------
if p is not None:
print("Running Main Program - Hit Ctrl + C to exit")
# Set some variables needed in the main loop
is_config = False
switch = True
pressed = False
while True:
try:
# Using Auto Mode for optimal SPI bus usage
if p.auto_mode() == 0:
if not is_config:
is_config = True
# Space for setup
print (p.digital_input0,":",p.digital_input1)
if p.digital_input2 == p.ON and pressed==False:
pressed=True;
x = threading.Thread(target=thread_sound)
x.start()
y = threading.Thread(target=thread_animation)
y.start()
if switch: p.digital_output0 = p.ON
else : p.digital_output1 = p.ON
switch=not(switch)
if p.digital_output0 == p.ON and di0_old == 0 and p.digital_input0 == p.ON:
p.digital_output0 = p.OFF
pressed=False
if p.digital_output1 == p.ON and di1_old == 0 and p.digital_input1 == p.ON:
p.digital_output1 = p.OFF
pressed=False
di0_old = p.digital_input0
di1_old = p.digital_input1
else:
print("Auto Mode - Communication is not yet up...Please wait...")
# Wait at minimum 0.1sec or 100ms before getting new values
time.sleep(0.1)
except KeyboardInterrupt:
# Keyboard interrupt caught, Ctrl + C, now clean up and leave program
p.close()
p = None
break
else:
# If there was an error when opening the SPI bus interface, leave the program.
print("")
print("There was a problem with the PiXtend communication. Quitting.")
print("")
Fazit
So viel wie bei diesem Halloween-Projekt ist beim Autor noch nie schiefgegangen. Wenn Sie Freude an Pleiten, Pech und Pannen haben, werfen Sie einen Blick in den Kasten “Outtakes – was alles schiefging”.
Da die kleinen Besucher immer in Gruppen kamen, stellte sich schnell heraus, dass die Kapazität des Förderbands dem Ansturm nicht gewachsen war. Im Dunkeln neue Schokolade nachzulegen, bereitete erhebliche Probleme. Legen Sie dazu entweder eine Taschenlampe bereit oder – besser – bauen Sie Licht in den Automaten ein.
Trotz aller Pannen hatten aber sowohl die großen als auch die kleinen Besucher ihre Freude an dem Automaten. Einige waren so begeistert, dass sie im Laufe des Abends mehrmals vorbeikamen. Eine Handvoll technikaffine Kinder und Erwachsene ließen es sich sogar nicht nehmen, einen ausführlichen Blick ins Innere des Geräts zu werfen. Insgesamt hat der Halloween-Automat allen Beteiligten viel Spaß gemacht. Für nächstes Jahr ist daher bereits eine Version 2.0 in Planung.
Outtakes – was alles schiefging
Schon in der Planungs- und Bauphase erwies sich der Halloween-Automat als harte Nuss. In der ersten Version sollten Bonbons aus einem Magazin fallen. Nach einigen Wochen des Herumprobierens verwarf der Autor diese Idee: Es erwies sich als unmöglich, die Anzahl der ausgegebenen Bonbons auch nur halbwegs zu steuern. Entweder kam gar keins heraus oder gleich eine ganze Ladung.
Die Anordnung der LED-Panels für Augen und Mund trieben den Autor fast in den Wahnsinn. Beim Bau des Automaten in der Garage verbrannte sich der Autor die Finger ordentlich mit dem Lötkolben, was ihm schon ewig nicht mehr passiert war. Gefühlt fielen während der Montage Hunderte Schrauben herunter und landeten zuverlässig immer in der unzugänglichsten Ecke der Garage.
Der erste Entwurf der Software war für ein PiXtend 1.3 entwickelt, im Automaten steckte aber zunächst ein PiXtend 2.0. Da es nicht möglich ist, einfach die SD-Karte von einen Modell in ein anderes zu stecken, musste der Autor in letzter Minute noch das PiXtend-Board auswechseln. Aus unerfindlichen Gründen gab es zudem Probleme mit dem Onboard-Sound des RasPi. Deshalb wurde er deaktiviert und eine externe Soundkarte verwendet.
Die WS2812-LEDs erhalten ihre Spannung über den 5-Volt-Ausgang des PiXtend. Das klappt gut, solange man die LEDs mit einer geringen Intensität betreibt. Dreht man diese aber hoch, um die Animation bei Sonnenlicht zu testen, passieren recht sonderbare Dinge mit den LEDs. Ursprünglich besaß der Automat sogar Arme zum Wedeln. Die erwiesen sich aber bei Tests als Gefahr für die Finger der Kinder, sodass sie in der finalen Version entfielen.
Schließlich traten auch beim Einsatz an Halloween noch einige Problemchen auf. Die Kamera des Autors machte in der Dunkelheit Probleme, sodass es keine Bilder des diesjährigen Halloween gibt. Zu allem Überfluss verursachte eine zur Unterstützung des Gruseleffekts aufgestellte Nebelmaschine schließlich einen haarigen Kurzschluss – das unrühmliche Ende des diesjährigen Halloween. Apropos haarig: Der Autor bekam während des Projekts auffällig viele graue Haare.
Infos
- Video der Förderbänder: https://youtu.be/3GgB42z9lZ8
- LED-Panel: https://www.aliexpress.com/item/32826934452.html
- Bibliothek für WS2812: https://github.com/jgarff/rpi_ws281x
- Download-Seite PiXtend: https://www.pixtend.de/downloads/
- Video von Augen und Mund: https://youtu.be/mvK4GS5FCJM






