Hallo zusammen,
mache gerade meine ersten RPi gehversuche und hänge schon an der blinkenden LED.
dieses kleine Programm
import RPi.GPIO as GPIO
import time
GPIO.setmode (GPIO.BCM)
GPIO.setup (11, GPIO OUT)
while True:
GPIO.output (11, True)
time.sleep (2)
GPIO.output (11, False)
time.sleep (2)
GPIO.cleanup()
funktioniert leider nicht. was mach ich falsch ??
GPIO Port in Python nutzen
-
perseus -
24. Februar 2017 um 19:31 -
Erledigt
-
-
GPIO Port in Python nutzen? Schau mal ob du hier fündig wirst!
-
Hallo Perseus,
herzlich Willkommen in unserem Forum!
funktioniert leider nicht. was mach ich falsch ??
Kommt 'ne Fehlermeldung? Wenn ja, da posten!
Kommt keine? Was passiert sonst?
Quellcode ohne Schaltung zu posten ist nur bedingt tauglich, um Dir zu helfen.Mir fällt auf, daß
wohl eine Fehlermeldung erzeugen müsste. Es sollte wohl heißenDann startest Du eine Endlosschleife, an deren Ende die GPIOs aufgeräumt werden. Im zweiten Durchlauf gibt's die dann nicht mehr. Ist das beabsichtigt? Oder verstehst Du unter Blinken 1x an, 1x aus - dann passiert nichts mehr, aber Programm läuft weiter.
Auch hier würde ich eine Fehlermeldung erwarten...
Beste Grüße
Andreas
-
Hallo,
ich würde das wie unten angehängt machen.
Aufpassen Pin11 ist GPIO17
Gruß FranzelCode
Alles anzeigenimport time import RPi.GPIO as GPIO # Pin-Nummern wie auf dem Raspberry Board verwenden GPIO.setmode(GPIO.BOARD) # Pin 11 (GPIO 17) als Output GPIO.setup(11, GPIO.OUT) # Dauersschleife für das Blinken while 1: # LED aus GPIO.output(11, GPIO.LOW) # eine Sekunde warten time.sleep(1) # LED an GPIO.output(11, GPIO.HIGH) # eine Sekunde warten time.sleep(1)
-
Nutzt doch bitte die Code Klammern. Bei pyhton ist extrem wichtig Auf die einrückung zu achten!
Codeimport RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(11,GPIO.OUT) while True: GPIO.output(11,True) time.sleep(2) GPIO.output(11,False) time.sleep(2) GPIO.cleanup()
müsste eher stimmenps: welchen pi nutzt du ? könnte auch mit GPIO.setmode (GPIO.BOARD) gehen
-
Die erste Zeile wird leider überall falsch vermittelt - habe das selbst auch erst vor kurzem erfahren:
[code=php]import RPi.GPIO as GPIO[/php]
Eigentlich wäre korrekt:
[code=php]from RPi import GPIO[/php]Bei der folgenden Zeile gibts ebenfalls etwas zu beachten:
[code=php]GPIO.setmode (GPIO.BCM)[/php]
Als erstes setzt man kein Leerzeichen in den Funktionsaufruf, also zwischen setmode und ()
Nicht:
[code=php]
GPIO.setmode (GPIO.BCM)
GPIO.output (11, True)
time.sleep (2)
[/php]
Sondern:
[code=php]
GPIO.setmode(GPIO.BCM)
GPIO.output(11, True)
time.sleep(2)
[/php]Das entscheidende ist aber dass es 2 verschiedene Modies gibt: GPIO.BCM und GPIO.BOARD
BCM bezieht sich auf die GPIO-Nummer
BOARD auf die Pin-Nummer
So wäre zum Beispiel GPIO#2 -> Pin#3 und GPIO#3 wäre Pin#5
Würdest du also GPIO.BOARD verwenden und stellst 11 auf GPIO.OUT müsstest du dein Kabel an Pin#11 bzw GPIO#17 anschließen. Da du aber GPIO.BCM verwendest wäre es GPIO#11 und somit Pin#23Und natürlich musst du GPIO punkt OUT setzen ohne Leerzeichen:[code=php]GPIO.OUT[/php]
GPIO.cleanup() setzt die GPIO's wieder zurück.
Bei Python sind Einrückungen extrem wichtig - anhand derer erkennt Python welche Zeilen wozu gehören und wo sich Blöcke von anderen Absetzen. Deine while Schleife ist also ein Block die Zeile für Zeile abgearbeitet wird. Das GPIO.cleanup() müsste wenn dann unter diesen Block gesetzt werden damit dies erst später ausgeführt wird... Allerdings blockiert die while Schleife das Script und nur ein STRG+C KeyboardInterrupt unterbricht diese..... aber erstmal egal
-
- Offizieller Beitrag
Hallo meigrafd,
[code=php]import RPi.GPIO as GPIO[/php]Eigentlich wäre korrekt:
[code=php]from RPi import GPIO[/php]Interessant, hast Du eine Quelle?
Dann sollte ich das bei meinen Scripten auch ändern.
-
bootsmann ist meine Quelle
In der Python Umgebung gibt es ein Verzeichnis: dist-packages/RPi/
Dessen Inhalt ist:Python
Alles anzeigenroot@raspberrypi:~# ls -la /usr/local/lib/python3.4/dist-packages/RPi/ total 148 drwxr-sr-x 4 root staff 4096 Nov 23 17:48 . drwxrwsr-x 47 root staff 4096 Feb 19 19:31 .. drwxr-sr-x 3 root staff 4096 Nov 23 17:48 GPIO -rwxr-xr-x 1 root staff 132160 Nov 23 17:48 _GPIO.cpython-34m.so -rw-r--r-- 1 root staff 0 Nov 23 17:47 __init__.py drwxr-sr-x 2 root staff 4096 Nov 23 17:48 __pycache__ root@raspberrypi:~# ls -la /usr/local/lib/python3.4/dist-packages/RPi/GPIO/ total 16 drwxr-sr-x 3 root staff 4096 Nov 23 17:48 . drwxr-sr-x 4 root staff 4096 Nov 23 17:48 .. -rw-r--r-- 1 root staff 1112 Nov 23 17:47 __init__.py drwxr-sr-x 2 root staff 4096 Nov 23 17:48 __pycache__ root@raspberrypi:~# cat /usr/local/lib/python3.4/dist-packages/RPi/GPIO/__init__.py [...] from RPi._GPIO import * VERSION = '0.6.3'
Ein Import mit " . " bezieht sich immer auf ein Unterverzeichnis.
Bei meinem RoPi Projekt habe ich zum Beispiel folgende Struktur:
Meine Main.py liegt also direkt im RoPi Verzeichnis und ist jene die ich direkt starte. Im Toolsbox/ Unterverzeichnis hab ich weitere *.py Dateien die wiederum über die Main.py importiert werden:
[code=php]
from Toolsbox.USBinterface import USBinterfaceClass
[/php]Übrigens: RPi.GPIO ist mittlerweile überholt. Nutze lieber das weitaus bessere und insbesondere für Anfänger leichter nutzbare gpiozero Module
-
Vielen Dank an's Forum für die schnelle Hilfe.
Fehler gefunden -
Hallo Perseus,
Vielen Dank an's Forum für die schnelle Hilfe.
Fehler gefunden
aber wie DEINE Lösung jetzt aussieht, behältst Du für Dich? :sBeste Grüße
Andreas
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!