PWM funktioniert mit python3 nicht

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo miteinander,

    ich verwende einen pi B+ V1.2 mit raspbian.

    Ich versuche mich in Python einzuarbeiten (Neuling).

    Ich will für eine Steuerung Pulsweitenmodulation (PWM) an einem pin einsetzen.

    Dazu verwende ich folgenden Code:

    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(18,GPIO.OUT)
    p = GPIO.PWM(18,1.0)

    Und hier starten schon die Probleme!

    Mit python 2.7 (Aufruf sudo python ....py) kommt keine Fehlermeldung.

    Mit python3 (Aufruf sudo python3 ......py) heißt es:
    'module' object has no attribute 'PWM'

    Kann ich mit python3 keine PWM verwenden?
    Ich hab schon Einiges gelesen, was mich aber eher verwirrt hat.
    Was muss ich installiert haben?
    Was ist mit wiringpi2?

    Für weiterführende Tips wäre ich wirklich sehr dankbar https://www.forum-raspberrypi.de/images/smilies…_danke_ATDE.gif

    Bernd

  • Hallo,

    poste mal bitte die _ganze_ Fehlermeldung, nicht nur einen Teil. Der Traceback ist normalerweise wesentlich länger.

    Und um die alle Attribute und Methoden einer Klasse bzw. eines Moduls anzeigen zu lassen gibt es `dir`. Proboier' mal im Terminal mit geöffnetem Python 3 Interpreter:

    Code
    >>> import RPi.GPIO as GPIO
    >>> dir(GPIO)

    und schaue, ob in der Ausgabe `PWM` steht.

    Gruß, noisefloor

  • Danke für deine Reaktion

    hier die Ergebnisse von dir für Python3 und Python2. Wie erwartet kommt PWM bei Python2 vor, aber nicht bei Python3. Wie das????

    Python 3.2.3 (default, Mar 1 2013, 11:53:50)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> dir(GPIO)
    ['ALT0', 'BCM', 'BOARD', 'HIGH', 'IN', 'InvalidChannelException', 'InvalidDirectionException', 'InvalidFrequencyException', 'InvalidModeException', 'InvalidPullException', 'LOW', 'ModeNotSetException', 'OUT', 'PUD_DOWN', 'PUD_OFF', 'PUD_UP', 'SetupException', 'WrongDirectionException', '__doc__', '__file__', '__name__', '__package__', 'input', 'output', 'setclock', 'setmode', 'setup']
    >>>


    Python 2.7.3 (default, Mar 18 2014, 05:13:23)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> dir(GPIO)
    ['BCM', 'BOARD', 'BOTH', 'FALLING', 'HARD_PWM', 'HIGH', 'I2C', 'IN', 'LOW', 'OUT', 'PUD_DOWN', 'PUD_OFF', 'PUD_UP', 'PWM', 'RISING', 'RPI_REVISION', 'SERIAL', 'SPI', 'UNKNOWN', 'VERSION', '__doc__', '__file__', '__name__', '__package__', 'add_event_callback', 'add_event_detect', 'cleanup', 'event_detected', 'gpio_function', 'input', 'output', 'remove_event_detect', 'setmode', 'setup', 'setwarnings', 'wait_for_edge']
    >>>

    Hier der Code meines Testprogramms:

    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(18,GPIO.OUT)
    p = GPIO.PWM(18,1.0)

    hier die vollständige Fehlermeldung für Python3-.

    sudo python3 pwm.py
    Traceback (most recent call last):
    File "pwm.py", line 4, in <module>
    p = GPIO.PWM(18,1.0)
    AttributeError: 'module' object has no attribute 'PWM'

    Bei Python2 gibt es ja keine Meldung.
    irgendwie scheinen die beiden Versionen von Python unterschiedliche libraries zu verwenden. Sehe ich das richtig? Warum? Wie kann ich das nachprüfen? Wie kann ich das ändern?


    Für weitere Tips wäre ich sehr danbar.

    Hallo,

    auch auf die Gefahr hin, dass ich mich blamiere (bin halt noch ein Neuling / newbie):

    wie prüfe ich die Gpio-Version nach?

    Ich habe den Verdacht, dass ich zwei verschiedene Versionen für python2 und python3 verwende. Kann das sein? Siehe mein letzter post.

    Ich habe schon so viel ausprobiert, dass ich "etwas" den Überblick verloren habe.

    Für weitere Hilfe wäre ich sehr dankbar.

    Einmal editiert, zuletzt von bema007 (24. Februar 2015 um 14:50)

  • Welche RPi.GPIO Version hast du für python3 installiert?

    Code
    python3
    import RPi.GPIO as GPIO
    GPIO.VERSION

    Ich hab hier nämlich PWM Unterstützung:

    Code
    root@osmc:/var/cache# python3
    Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
    [GCC 4.9.1] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> GPIO.VERSION
    '0.5.11'
    >>> dir(GPIO)
    ['BCM', 'BOARD', 'BOTH', 'FALLING', 'HARD_PWM', 'HIGH', 'I2C', 'IN', 'LOW', 'OUT', 'PUD_DOWN', 'PUD_OFF', 'PUD_UP', 'PWM', 'RISING', 'RPI_INFO', 'RPI_REVISION', 'SERIAL', 'SPI', 'UNKNOWN', 'VERSION', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add_event_callback', 'add_event_detect', 'cleanup', 'event_detected', 'getmode', 'gpio_function', 'input', 'output', 'remove_event_detect', 'setmode', 'setup', 'setwarnings', 'wait_for_edge']
    >>>

    Also muss ich Jörg leider widersprechen :s


    PS: Gleich kommt bestimmt noch jemand und empfiehlt eins der anderen GPIO Module :baeh2:

  • Die Versionen von GPIO:

    Python 2.7.3 (default, Mar 18 2014, 05:13:23)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> GPIO.VERSION
    '0.5.5'


    Python 3.2.3 (default, Mar 1 2013, 11:53:50)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import RPi.GPIO as GPIO
    >>> GPIO.VERSION
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'module' object has no attribute 'VERSION'

    Irgendwas scheint bei python3 nicht zu stimmen. Aber was?

    noch was:

    wieso ist bei dir python 3.4.2 installiert und bei mir 3.2.3?

    Ich habe update und upgrade erst kürzlich gemacht.

    Einmal editiert, zuletzt von bema007 (24. Februar 2015 um 15:26)

  • dbv: Das wäre aber nur die python2 Version, er will aber python3 :fies:

    Code
    sudo apt-get install python3-pip
    sudo pip3 install RPi.GPIO


    wieso ist bei dir python 3.4.2 installiert und bei mir 3.2.3?

    Weil ich Jessie installiert habe, du aber Wheezy ;) Das ist nicht so schlimm, dem RPi.GPIO Module ist das egal

    Ich habe update und upgrade erst kürzlich gemacht.

    Ein 'apt-get update' aktualisiert nur die Paketdatenkbank-Informationen und 'apt-get upgrade' nur die über apt-get installierbaren Pakete, RPi-GPIO gibt es aber nicht über 'apt-get'

  • Ich werde mir RPIO mal ansehen, aber erst die Reaktion von meigrafd abwarten

    Danke!

    sudo apt-get install python3-pip
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen.... Fertig
    python3-pip ist schon die neueste Version.
    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.


    sudo pip3 install RPi.GPIO
    sudo: pip3: command not found


    Komisch!??

    Einmal editiert, zuletzt von bema007 (24. Februar 2015 um 15:35)

  • sudo pip-3.2 install RPi.GPIO
    Requirement already satisfied (use --upgrade to upgrade): RPi.GPIO in /usr/local/lib/python3.2/dist-packages/RPi.GPIO-0.4.0-py3.2-linux-armv6l.egg
    Cleaning up...

    Was bedeutet das? Welches --upgrade ist gemeint?
    Ein sudo pip-3.2 --upgrade erzeugt eine Fehlermeldung

    Danke für die bisherige Hilfe. Habe schon etwas gelernt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!