Definition GPIO mittels zweiter Datei
Verfasst: Samstag 22. Juni 2019, 08:13
Guten Morgen,
Ich bin frischer Neuling in der Programmiersprache Python. Da ich gerne den Raspberry Pi in verschiedenen Projekten einsetzen möchte und mich sehr gerne mit Programmieren an sich beschäftige, habe ich mich auch an Python rangetraut. Dazu habe ich auch als Hilfestellung "das umfassende Handbuch - Raspberry Pi".
Ich habe mit Hilfe des Buches es geschafft, die GPIO Pins erfolgreich einzurichten und schon in einem kleinen Testprogramm zu benutzen.
Dann habe ich mir überlegt, dass ich gerne das Setup etwas vereinfachen möchte. Dazu habe ich mir eine zweite Datei ("GPIO_Hilfe.py") erstellt.
Mittels print - Befehlen kann ich überprüfen, ob die Datei auch abgearbeitet wird, was sie tut, aber ich bekomme trotzdem eine Fehlermeldung:
meine zweite Datei "GPIO_Hilfe":
Wie kann ich den Fehler beheben?
Vielen Dank für eure Hilfe.
Habt ein schönes Wochenende.
LG
Danieldz
Ich bin frischer Neuling in der Programmiersprache Python. Da ich gerne den Raspberry Pi in verschiedenen Projekten einsetzen möchte und mich sehr gerne mit Programmieren an sich beschäftige, habe ich mich auch an Python rangetraut. Dazu habe ich auch als Hilfestellung "das umfassende Handbuch - Raspberry Pi".
Ich habe mit Hilfe des Buches es geschafft, die GPIO Pins erfolgreich einzurichten und schon in einem kleinen Testprogramm zu benutzen.
Dann habe ich mir überlegt, dass ich gerne das Setup etwas vereinfachen möchte. Dazu habe ich mir eine zweite Datei ("GPIO_Hilfe.py") erstellt.
Mittels print - Befehlen kann ich überprüfen, ob die Datei auch abgearbeitet wird, was sie tut, aber ich bekomme trotzdem eine Fehlermeldung:
Mein Hauptprogramm:>>> %Run 'GPIO Basics_V2.py'
Setup OK
Pin 26 Setup OK
Pin 21 Setup OK
Traceback (most recent call last):
File "/home/pi/Python/Einstieg/GPIO Basics_V2.py", line 16, in <module>
gpio.add_event_detect(21, gpio.BOTH)
RuntimeError: You must setup() the GPIO channel as an input first
>>>
Code: Alles auswählen
#! /usr/bin/python3
#noch in Bearbeitung
import RPi.GPIO as gpio #alle RPi.GPIO Befehle mit gpio ausführen
import time
import GPIO_Hilfe as IO
IO.Setup("Board", False) #Setup ausführen
IO.IO(26, "OUT", "HIGH") #als Ausgang definieren
IO.IO(21, "IN", "HIGH") # als Eingang definieren
def Taster(n):
print('Pegelwechsel für Pin ', n)
gpio.add_event_detect(21, gpio.BOTH)
gpio.add_event_callback(21,Taster) #Funktion wird solange aufgerufen, wie das Programm auch läuft
time.sleep(10) #nach 10 Sekunden wird das Programm beendet
gpio.cleanup(n) # GPIO Pins wieder freigeben
Code: Alles auswählen
#! /usr/bin/python3
import RPi.GPIO as gpio #alle RPi.GPIO Befehle mit gpio ausführen
def Setup(bez, warn):
if bez == "Board":
gpio.setmode(gpio.BOARD) #Zählweise entspricht dem J8 Header
else:
gpio.setmode(gpio.BCM) #Zählweise Broadcam-GPIO-Nummern
if warn == True:
gpio.setwarnings(True)
else:
gpio.setwarnings(False) #Warnungen unterdrücken
print("Setup OK")
def IO(Pin, Dir, HL): #LOW, HIGH, NONE
if Dir == "In":
if HL == "LOW":
gpio.setup(Pin, gpio.IN, pull_up_down=gpio.PUD_DOWN)
elif HL == "HIGH":
gpio.setup(Pin, gpio.IN, pull_up_down=gpio.PUD_UP)
else:
gpio.setup(Pin, gpio.IN)
else:
if HL == "LOW":
gpio.setup(Pin, gpio.OUT)
gpio.output(Pin, gpio.LOW)
elif HL == "HIGH":
gpio.setup(Pin, gpio.OUT)
gpio.output(Pin, gpio.HIGH)
else:
gpio.setup(Pin, gpio.OUT)
print("Pin ", Pin, " Setup OK")
Vielen Dank für eure Hilfe.
Habt ein schönes Wochenende.
LG
Danieldz