Mein Code wird von einer anderen Datei aufgerufen mit einer Liste von 20 int von den ich nur 4 brauche. Der aufrufe sieht ungefähr so aus:
ausgeben(Liste)
Hier ist die PWM.py Datei:
Code: Alles auswählen
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import threading
use_GPIO_Pins = [2,3,4,14] #for GPIO(BCM)
counter = 1
Hertz = 750
data = [124, 128, 129, 128]
def ausgeben(da):
global data
data = da[0:4]
global counter
if counter:
main()
counter = 0
def PWM(dataindex, pin, Hertz):
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
p = GPIO.PWM(pin, Hertz)
p.start(0)
while True:
p.ChangeDutyCycle(round(data[dataindex]/255*100, 1))
def main():
GPIO.setwarnings(True)
GPIO.cleanup()
threading.Thread(target=PWM, args=(0,2,Hertz)).start()
threading.Thread(target=PWM, args=(1,3,Hertz)).start()
threading.Thread(target=PWM, args=(2,4,Hertz)).start()
threading.Thread(target=PWM, args=(3,14,Hertz)).start()
Also zusammengefasst wie ist das mit der Lebensdauer von Instanzen und Variabeln bei einer Funktion die immer wieder neu aufgerufen wird und nicht dauerhaft läuft???
Und wie kann ich diesen Code deutliche besser und übersichtlich schreiben kenne mich nicht wirklich mit Threads und so größern 'Projekten' mit mehreren Dateien aus.