Beiträge von firstfacility

    Hallo Forum,

    ich hätte eine Frage bezügliche einer zeitversetzten Anweisung in einer Schleife bei denen die folgenden Anweisungen weiterlaufen, also:

    Normalerweise läuft es

    Bedingung

    Anweisung
    time.sleep Anweisung ( warte bis Anweisung abgearbeitet )
    Anweisung
    .
    .
    .

    Ich benötige aber

    Bedingung

    Anweisung
    time.sleep Anweisung ( fahre sofort weiter mit der nächsten Anweisung)
    Anweisung
    .
    .
    .

    Hätte jemand eine Idee wie ich das Lösen könnte ?

    Gruß
    Frank

    argh, habe ich nur einmal geändert. Leider übersehen.

    Ich würde gern noch mal auf das Thema Interrupt zurückkommen. Ein Taster soll einen Motor stoppen und hierzu habe ich folgende alternativen:

    Code
    def callback2():
        while (GPIO.input(10)):
            delay = 10
            steps = 200
            backwards(int(delay) / 1000.0, int(steps))
        else:
            print "Stopp"

    oder mit Interrupt

    Code
    def Interrupt_event2():
        if (GPIO.input(10)):
            delay = 10
            steps = 200
            backwards(int(delay) / 1000.0, int(steps))
        else:
            print "Stop"
    
    
    GPIO.add_event_detect(10, GPIO.RISING, callback = Interrupt_event2, bouncetime = 200)

    Bei beiden alternativen habe ich eine Verzögerung von ca. 1 Sek, ich bin davon ausgegangen das es per Interrupt schnellere Reaktionszeiten. Kann man das beschleunigen ?

    Gruß

    Frank

    ist mein Label-Widget
    und die Verbindung ist da, ich poste nicht den gesamten Code es geht nur um das Label. Zur Erklärung ich bekomme keinen Fehler, sondern er zeigt mir das Ergebnis nicht an. Sonst wäre ich schon weiter.

    siehe auch hier:
    Label

    Wenn ich hier text"bla bla bla" eintrage ist alles ok.

    das wäre dann so:

    Code
    def toggle():
      if (GPIO.input(27) == GPIO.LOW):
          MYLabel1Text.set("Schalter ist aus")
      else:
          MYLabel1Text.set("Schalter ist an")
    MyLabel1Text = StringVar()
    MyLabel1Text.set("Schalter ist aus")
    MyLabel1 = Label(master, textvariable=MyLabelText).pack()
    MyLabel1.grid(row=4, column=1)

    geht aber auch nicht

    Hallo Forum,
    ich möchte gern einen GPIO Pin auf low schalten und per Schleife abfragen und das Ergebnis in der GUI als Text ausgeben.

    Die Ausgabe macht keinen Sinn, also der Text wird nicht eingefügt, und ändert sich nicht. Hätte jemand eine Idee was ich machen könnte.

    Gruß

    Frank

    Hallo Forum,

    ich habe ein Problem mit der Ansteuerung meines Schrittmotors. Zur Zeit gehe ich davon aus das es sich um ein Hardwareproblem handelt. Falls sich rausstellen sollte das es ein Softwareproblem ist bitte ich die Mod´s meine Frage zu verschieben.

    Ich nutze einen NEMA 17 Schrittmotor:
    Stepper Motor DC 5V Schrittmotor
    Specs
    Nema 17 (42x42)
    200 step
    1.8°Angle
    200 gram
    Torque 130 m/Nm
    4 Wires
    Pairs
    Red & Red White
    Green & Green White
    Compatible
    Ramps
    A4988

    Laut Datenblatt ist die Kabelbelegung:
    1B ROT
    1A ROT/WEIß
    2A GRÜN
    2B GRÜN/WEIß

    Als Treiber nutze ich einen L298N Schrittmotorenendstufe Dual H Brücke die ich folgendermaßen angeschlossen habe ( Bild angefügt )

    Als Code nutze ich folgendes python Script:



    Wenn ich das Script starte und den Motor vor oder zurückfahre zittert der Moror nur ohne sich zu drehen. Hätte jemand eine Idee was ich falsch gemacht habe ?

    Gruß

    Frank

    Hallo zusammen,
    ich habe hier schon einiges zu diesem Thema gelesen nur leider habe ich keine Lösung finden können. Deshalb versuche ich es hier nochmal vielleicht hat ja jemand eine Idee.
    Mein Aufbau ist so wie in dieser Anleitung Link

    Ich komme bis:
    mode2 -d /dev/lirc0
    Hier werden nun keine Signale empfangen obwohl ich im Log finde :
    #modprobe lirc_rpi

    Code
    20240.071991] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
    kernel: [20240.092493] lirc_rpi lirc_rpi.0: lirc_dev: driver lirc_rpi registered at minor = 0
     [20240.092518] lirc_rpi: driver registered!
     kernel: [20241.046783] lirc_rpi: auto-detected active high receiver on GPIO pin 18

    [/quote]

    Das schaut doch ganz gut aus oder ? Bloß warum wird nichts empfangen ?
    Hier noch meine hardware.conf:


    Vielleicht kann mir jemand helfen ?

    Gruß

    Frank

    ich bekomme folgende Fehler:

    Enter zum Beenden!
    25 Input was LOW
    Traceback (most recent call last):
    File "klingel2.py", line 22, in my_callback
    time.sleep(30)
    NameError: global name 'time' is not defined
    25 Input was HIGH
    25 Input was LOW
    Traceback (most recent call last):
    File "klingel2.py", line 22, in my_callback
    time.sleep(30)
    usw

    Das ganze sollte nur einmal ausgeführt werden und zwar wenn erkannt wird das GIPO 25 LOW ist, dann sollte er 30 Sek schlafen und danach auf einen neunen LOW Zustand warten und Webif erneut ausführen.

    Ok sorry ich hoffe nun ist es besser. Zur Funktion: Wenn jemand klingelt signalisiert das meine Doorline durch eine blinkende LED. Dieses Signal wird über ein Relais genutzt um GPIO 25 low oder high zu schalten. Also low Verbindung über pullup an GND bzw High durch umschalten an 3,3V. Der Port wird nun im ca. Sekundentackt umgeschaltet von low nach high. Dieses Signal frage ich nun mit dem Code ab. das geht auch schon ich bekomme als Ausgabe :
    25 Input was HIGH
    25 Input was LOW
    25 Input was LOW
    25 Input was HIGH
    25 Input was HIGH
    25 Input was LOW
    25 Input was LOW
    25 Input was LOW
    usw ca. 30 Sek. lang
    Ich möchte nun den ersten Schaltvorgang auf LOW nutzen um den Code ab :
    "def WebIf(command):" auszuführen.
    Weiterhin sollte der Port permanent überwacht werden, heißt der event sollte weiterlaufen.

    Gruß

    Frank

    Hallo Forum,

    nachdem mir schon mit meiner Schaltung erfolgreich geholfen worden ist, wende ich mich nun mit meinem code an euch, da ich nicht weiterkomme. Es geht darum, mit dem Signal meines Türöffners, ein Programm für die Webcam zu öffnen. Das Signal ist ursprünglich für eine blinkende LED gedacht. Ich füge einen kleinen Schaltplan an woraus ihr sehen könnt wie es geschaltet ist. Ursprünglich habe ich versucht über ein Shell Script den Gpio auszulesen, leider ohne Erfolg da das Blinksignal nicht ausgewertet werden konnte. Nun habe ich mich in python versucht, und die Abfrage von GPIO klappt nun gut, nur leider wird webif nicht ausgeführt .

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    import RPi.GPIO as GPIO
    GPIO.setwarnings(False)
    from time import sleep
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    import urllib2

    def my_callback(channel):
    if GPIO.input(channel):
    print("%s Input was HIGH"%channel)
    else:
    print("%s Input was LOW"%channel)
    def WebIf(command):
    try:
    sock=urllib2.urlopen('http://192.168.11.100/web/' + command)
    data=sock.read()
    except urllib2.URLError:
    pass
    except urllib2.HTTPError:
    pass
    except urllib2.httplib.BadStatusLine:
    pass
    else:
    sock.close()
    return(data)

    WebIf('remotecontrol?command=399')
    WebIf('remotecontrol?command=3')
    WebIf('remotecontrol?command=403')
    WebIf('remotecontrol?command=403')
    WebIf('remotecontrol?command=403')
    time.sleep(30)
    GPIO.add_event_detect(25, GPIO.BOTH, callback=my_callback, bouncetime=200)

    raw_input("Enter zum Beenden!\n")


    Der Teil "def WebIf(command):" wird nicht ausgeführt, hätte jemand einen Tipp was ich tun könnte ?