Ich bin noch ein Anfänger beim Programmieren und brauche Hilfe. Ich weiss das ich Kraut und Rüben Programmiert habe.
Ich möchte nur einige Servos Steuern und möchte Variablen aus einer Datei laden und die dann auch in meinem Programm gültig sind.
Hier ist ein ausgekürztes Beispiel.
das steht in der Parameter.dat:
Code: Alles auswählen
servo_anz=20
v_zeit=0.06
s1_min = 200
s1_max = 450
k_s1=0
s2_min = 200
s2_max = 450
k_s2=1
s3_min = 200
s3_max = 450
k_s3=5
s4_min = 200
s4_max = 450
k_s4=6
Code: Alles auswählen
import sys, time, Adafruit_PCA9685, tkinter,pickle,os
from tkinter import *
pwm = Adafruit_PCA9685.PCA9685()
pwm.set_pwm_freq(60)
def tor1():
#Daten aus Datei verarbeiten
servo1_min = s1_min
servo1_max = s1_max
kanal1=k_s1
servo2_min = s2_min
servo2_max = s2_max
kanal2=k_s2
#Variabelen verrechnen
servo1_step=(servo1_max-servo1_min)/servo_anz
servo1_pos=servo1_min #Absolute Startposition
servo2_step=(servo2_max-servo2_min)/servo_anz
servo2_pos=servo2_min #Absolute Startposition
oeffnen()
def tor2():
#Daten aus Datei verarbeiten
#Funktioniert, wenn ich Werte eintrage, aber nicht aus der Datei
servo1_min = s3_min
servo1_max = s3_max
kanal1=k_s3
servo2_min = s4_min
servo2_max = s4_max
kanal2=k_s4
#Variabelen verrechnen
servo1_step=(servo1_max-servo1_min)/servo_anz
servo1_pos=servo1_min #Absolute Startposition
servo2_step=(servo2_max-servo2_min)/servo_anz
servo2_pos=servo2_min #Absolute Startposition
#Variabelen ausführen
for i in range(int(servo_anz)):
servo1_pos=int(servo1_pos+servo1_step)
pwm.set_pwm(kanal1, 0, servo1_pos)
time.sleep(float(v_zeit))
servo2_pos=int(servo2_pos+servo2_step)
pwm.set_pwm(kanal2, 0, servo2_pos)
time.sleep(float(v_zeit))
print(servo1_pos,servo2_pos)
for i in range(servo_anz):
servo1_pos=int(servo1_pos-servo1_step)
pwm.set_pwm(kanal1, 0, servo1_pos)
time.sleep(v_zeit)
servo2_pos=int(servo2_pos-servo2_step)
pwm.set_pwm(kanal2, 0, servo2_pos)
time.sleep(v_zeit)
print(servo1_pos,servo2_pos)
def oeffnen():
for i in range(int(servo_anz)):
servo1_pos=int(servo1_pos+servo1_step)
pwm.set_pwm(kanal1, 0, servo1_pos)
time.sleep(float(v_zeit))
servo2_pos=int(servo2_pos+servo2_step)
pwm.set_pwm(kanal2, 0, servo2_pos)
time.sleep(float(v_zeit))
print(servo1_pos,servo2_pos)
for i in range(servo_anz):
servo1_pos=int(servo1_pos-servo1_step)
pwm.set_pwm(kanal1, 0, servo1_pos)
time.sleep(v_zeit)
servo2_pos=int(servo2_pos-servo2_step)
pwm.set_pwm(kanal2, 0, servo2_pos)
time.sleep(v_zeit)
print(servo1_pos,servo2_pos)
def Grafik():
rootWindow=Tk()
rootWindow.wm_geometry("500x300")
b1=Button(rootWindow,text="tor 1",command=tor1)
b1.place(x=50, y=50, anchor="s")
b2=Button(rootWindow,text="tor 2",command=tor2)
b2.place(x=100, y=50, anchor="s")
def daten():
file=open("parameter.dat")
data=pickle.load(file)
def endlos():
it=1
def programm():
daten()
Grafik()
#oeffnen()
#schliessen()
it=1
main=programm()
if it==1:
programm
main.mainloop()
def ende():
sys.exit(0)
Vielen Vielen Dank für die Hilfe