@Michael1991: In Python funktionieren verkettete Vergleichsoperatoren wie in der Mathematik: Ein Ausdruck der Form `a OP1 b OP2 c` ist äquivalent zu einem Ausdruck der Form `a OP1 b and b OP2 c` (wobei `OP1` und `OP2` beliebige binäre Vergleichsoperatoren sein können). `b` wird dabei allerdings nur einmal ausgewertet.
Damit wird deine `if`-Bedingung zu `if int(angle) > 20 and 20 < 40:`. Du möchtest aber, dass `20` kleiner als`int(angle)` und `int(angle)` kleiner als `40` ist.
GUI zur Steuerung eines Servo's
@Michael1991: die zweite Bedingung 20 < 40 ist immer wahr. Es kommt auf die Reihenfolge an:
Code: Alles auswählen
pi.write(led2, 20 < int(angle) < 40)
-
- User
- Beiträge: 16
- Registriert: Sonntag 14. Januar 2018, 19:13
und wieder einmal ein großes danke an euch jetzt funktioniert es
anbei noch eine frage habt ihr einen guten tipp für ein gutes buch zum programmieren mit python.
hab im moment Raspberry Pi Das umfassende Handbuch aber ist sehr hilfreich nur python ist leider nicht sehr ausführlich beschrieben und bitte bedenkt ich bin erst ganz am anfang
vielen dank
mfg michael
Code: Alles auswählen
if int(angle) >20 and int(angle)<40 :
pi.write(led2, 1)
else:
pi.write(led2, 0)
hab im moment Raspberry Pi Das umfassende Handbuch aber ist sehr hilfreich nur python ist leider nicht sehr ausführlich beschrieben und bitte bedenkt ich bin erst ganz am anfang
vielen dank
mfg michael
- noisefloor
- User
- Beiträge: 3857
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Und natürlich learning-by-doing, im im Forum fragen / Code posten, Kritik abholen, besser werden
Gruß, noisefloor
Die beste Lektüre für Einsteiger ist immer noch das offiziellen Python-Tutorial, da brauchst du kein Buch.anbei noch eine frage habt ihr einen guten tipp für ein gutes buch zum programmieren mit python.
Und natürlich learning-by-doing, im im Forum fragen / Code posten, Kritik abholen, besser werden
Gruß, noisefloor
-
- User
- Beiträge: 16
- Registriert: Sonntag 14. Januar 2018, 19:13
Hallo da bin ich wieder mit einer neuen Frage hab mir jetzt eine kleine GUI gebastellt und möchte dazu jetzt das Servo mit dem Slider steuern was ja schon funktioniert und zusätzlich noch per Eingabefeld und da kommt meine Frage wie bekomme ich die Daten vom Eingabefeld an das Servo möchte im Eingabefeld die Grad eingeben und per Button Eingabe an das Servo weiterleiten
Hier mal mein Code
bin wie immer für jeden TIPP dankbar
Mfg
Michael
Hier mal mein Code
Code: Alles auswählen
from tkinter import*
import pigpio
pi=pigpio.pi()
servo= 16
pi.set_mode(servo, pigpio.OUTPUT)
root = Tk() #Fenster erstellen
root.wm_title("Probe") #Fenster Titel
root.config(background = "#FFFFFF") # Hintergrundfarbe des Fensters
leftFrame = Frame(root, width=200, height = 400) # Frame initialisieren
leftFrame.grid(row=0, column=0, padx=10, pady=3) # Relative Position und Seitenabstand (padding) angeben
rightFrame = Frame(root, width=400, height=400)
rightFrame.grid(row=0, column=1, padx=10, pady=3)
leftLabel1 = Label(leftFrame, text="Servosteuerung mit\nSlider und Eingabefeld")
leftLabel1.grid(row=0, column=0, padx=10, pady=3)
leftLabel1.config(background = "#FF8800")
imageEx= PhotoImage(file = 'led2.png')
Label(leftFrame, image=imageEx).grid(row=1, column=0, padx=10, pady=3)
E1= Entry(rightFrame, width=50)
E1.grid(row=0, column=0, padx=10, pady=3)
def change_servo_angle(angle):
d = float(angle) *8.06 +650
pi.set_servo_pulsewidth(servo, d)
def callback1():
print(E1.get())
def callback2():
print(1+1)
buttonFrame = Frame(rightFrame)
buttonFrame.grid(row=1, column=0, padx=10, pady=3)
B1=Button(buttonFrame, text="Eingabe", bg="#FF0000", width=15, command=callback1)
B1.grid(row=0, column=0, padx=10, pady=3)
B2= Button(buttonFrame, text="1+1", bg="#FFFF00", width=15, command=callback2)
B2.grid(row=0, column=1, padx=10, pady=3)
Slider= Scale(rightFrame, from_=0, to=180, resolution=0.1, orient=HORIZONTAL, length=400,
command=change_servo_angle)
Slider.grid(row=2, column=0, padx=10, pady=3)
Mfg
Michael
-
- User
- Beiträge: 16
- Registriert: Sonntag 14. Januar 2018, 19:13
bzw
wie kann ich durch die Eingabe bewirken das nach dem Button der eingegebene wert auch am Slider ist
mfg
Michael
wie kann ich durch die Eingabe bewirken das nach dem Button der eingegebene wert auch am Slider ist
mfg
Michael