Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei Lauflicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hilfe bei Lauflicht

    Hallo,

    ich versuche schon seit Tagen ein Lauflicht ans laufen zu bekommen. Dazu möchte ich die GPIO´s auf dem Raspberry nutzen.
    Ich habe nun mit WiringPi2 eine Möglichkeit gefuden, diese ohne Root-Rechte zu nutzen.

    Nun schaffe ich es aber nicht, damit ein Lauflicht zu erzeugen.
    Wenn ich nun das Modul RPi.GPIO benutze (Funktioniert nur mit Root-Rechten) kann ich dort die Ausgänge so definieren:

    Code:
    led_gpio1 = [ 3, 5, 8, 10, 12, 13]
    Und dieses dazu zu nutzen ein Lauflicht zu erstellen:

    Code:
    a = 0
    while a < 3:                                   # schleife von 0 bis 3
        a += 1                                      # zählt einen hoch
        GPIO.setup(led_gpio1[a], GPIO.OUT)           # setzt den GPIO port auf ausgang
        GPIO.output(led_gpio1[a], 0)     # schaltet led aus (0)
         
                                    # ende der schleife
    
        # Lauflicht :
    
    while 1:                                       # endlosschleife
        a = 0                                       # setzt den zähler auf 0
        while a < 3:                                # schleife von 0 bis 3
            a += 1                                  # zählt einen hoch
            GPIO.output(led_gpio1[a] , 1)             # schaltet led ein
    
            time.sleep(.4)                          # wartet einen moment
                                                  # hier lässt sich die Geschwindigkeit regulieren
            GPIO.output(led_gpio1[a] , 0)            # schaltet led aus
    Das funktionert auch wunderbar. Da jedoch Rpi.Gpio nur mit Root-Rechten läuft kann ich das so nicht verwenden.

    Nun habe ich versucht eine andere Logik zu schreiben. Jedoch funktionert diese auch nicht.
    Hätte jemand eine Idee, wie ich das umsetzen könnte?

    Code:
    #!/usr/bin/python3.2
    
    import time
    import wiringpi2
                                        # importiert die funktion time
    wiringpi2.wiringPiSetupSys()
    
    wiringpi2.pinMode(2, 1)               # setzt den GPIO ports auf ausgang (test)
    wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports auf False (test)
    
    x = 0
    while x < 5:
        x += 10
    print(x)
        
    while 1:                                       # endlosschleife
        x = 0                                       # setzt den zähler auf 0
        while x < 3:                                # schleife von 0 bis 3
            x += 1                                  # zählt einen hoch
            time.sleep(.4)                          # wartet einen moment
                                                  # hier lässt sich die Geschwindigkeit regulieren
                                                  
    if x==(1):
        wiringpi2.pinMode(2, 1)               # setzt den GPIO port 2 auf ausgang
        wiringpi2.pinMode(3, 1)
        wiringpi2.pinMode(4, 1)
        wiringpi2.digitalWrite(2, 1)        # setzt den GPIO port 2 auf True     
        wiringpi2.digitalWrite(3, 0)        # setzt den GPIO port 3 auf False
        wiringpi2.digitalWrite(4, 0)        # setzt den GPIO port 4 auf False
    if x==(2):    
        wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
        wiringpi2.pinMode(3, 1)
        wiringpi2.pinMode(4, 1)
        wiringpi2.digitalWrite(3, 1)        # setzt den GPIO port 3 auf True     
        wiringpi2.digitalWrite(2, 0)        # setzt den GPIO port 2 auf False
        wiringpi2.digitalWrite(4, 0)        # setzt den GPIO port 4 auf False
    if x==(3):
        wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
        wiringpi2.pinMode(3, 1)
        wiringpi2.pinMode(4, 1)
        wiringpi2.digitalWrite(4, 1)        # setzt den GPIO ports 4 auf True     
        wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports 2 auf False
        wiringpi2.digitalWrite(3, 0)        # setzt den GPIO ports 3 auf False
    Gruß Manuel


    #2
    Die Pins haben andere Zahlen. Kuck mal:
    https://projects.drogon.net/raspberry-pi/wiringpi/pins/

    Man kann aber glaub auch irgendwie angeben, nach welchem Modell die Pins angesprochen werden sollen.

    Kommentar


      #3
      Hi,

      Danke für deine Hilfe, das Problem ist nicht, dass ich die Ausgänge nicht beschaltet bekomme, sondern eher die Logik.
      Gruß Manuel

      Kommentar


        #4
        Du bleibst im Code bei "while 1" kleben.

        Du musst alles ab "if xx==(1):" um einen Tab einrücken.

        Ich hab das jetzt aber nur auf dem Smartphone gesehen.
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Hi,

          danke für eure Hilfe. Habe mir nun heute noch ein Buch über Phyton zugelegt und sie da, kaum macht man es richtig, schon geht es.
          Das ist der Code, mit dem es erstmal so läuft wie gewünscht:

          Code:
          #!/usr/bin/python3.2
          
          import time
          import wiringpi2
                                              # importiert die funktion time
          wiringpi2.wiringPiSetupSys()
          
                                    # wartet einen moment
          wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
          wiringpi2.pinMode(3, 1)
          wiringpi2.pinMode(4, 1)
          wiringpi2.digitalWrite(4, 0)        # setzt den GPIO ports 4 auf True     
          wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports 2 auf False
          wiringpi2.digitalWrite(3, 0)        # setzt den GPIO ports 3 auf False
                            
                                                      # hier lässt sich die Geschwindigkeit regulieren
          if sh.general.windturbine.start() == True:
          
              t = 0.3  
              while 1:                                       # endlosschleife
                  x = 0                                       # setzt den zähler auf 0
                  while x < 3:         # schleife von 0 bis 3
                      if sh.general.windturbine.start() == False:
                          wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
                          wiringpi2.pinMode(3, 1)
                          wiringpi2.pinMode(4, 1)
                          wiringpi2.digitalWrite(4, 0)        # setzt den GPIO ports 4 auf True     
                          wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports 2 auf False
                          wiringpi2.digitalWrite(3, 0)        # setzt den GPIO ports 3 auf False
                          break
                      x += 1    
                      time.sleep(t)
                      if x == 1:
                          wiringpi2.pinMode(2, 1)               # setzt den GPIO port 2 auf ausgang
                          wiringpi2.pinMode(3, 1)
                          wiringpi2.pinMode(4, 1)
                          wiringpi2.digitalWrite(2, 1)        # setzt den GPIO port 2 auf True     
                          wiringpi2.digitalWrite(3, 0)        # setzt den GPIO port 3 auf False
                          wiringpi2.digitalWrite(4, 0)        # setzt den GPIO port 4 auf False
                      
                  
              
                      if x == 2:    
                          wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
                          wiringpi2.pinMode(3, 1)
                          wiringpi2.pinMode(4, 1)
                          wiringpi2.digitalWrite(3, 1)        # setzt den GPIO port 3 auf True     
                          wiringpi2.digitalWrite(2, 0)        # setzt den GPIO port 2 auf False
                          wiringpi2.digitalWrite(4, 0)        # setzt den GPIO port 4 auf False
                      
              
                      if x == 3:
                          wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
                          wiringpi2.pinMode(3, 1)
                          wiringpi2.pinMode(4, 1)
                          wiringpi2.digitalWrite(4, 1)        # setzt den GPIO ports 4 auf True     
                          wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports 2 auf False
                          wiringpi2.digitalWrite(3, 0)        # setzt den GPIO ports 3 auf False
                          
          if sh.general.windturbine.start() == False:            
              wiringpi2.pinMode(2, 1)               # setzt den GPIO port  auf ausgang
              wiringpi2.pinMode(3, 1)
              wiringpi2.pinMode(4, 1)
              wiringpi2.digitalWrite(4, 0)        # setzt den GPIO ports 4 auf True     
              wiringpi2.digitalWrite(2, 0)        # setzt den GPIO ports 2 auf False
              wiringpi2.digitalWrite(3, 0)        # setzt den GPIO ports 3 auf False

          Kommentar

          Lädt...
          X