Hallo zusammen,
da war der Dennis wohl schneller!¯\_(ツ)_/¯
Hier mein Skript pegelschalter.py : An z.B GPIO 16
#!/usr/bin/python2.7
#================================================================================================================================================
#Title : Pegelschalter an GPIO 16 auslesen
#Author : Paul Fischkopf
#Datum : 28.04.2015
#Version : 03
#Anwendung :Starte Script mit ./pegelschalter.py -d
#Notizen :Um einen GPIO zu exportieren muessen wir jedoch Root sein (was ein bisschen nervt). Entweder wechselt man vorher zum Root-Benutzer,
# oder man aendert die Rechte der export-Datei: pi@raspberrypi ~ $ sudo chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport
# pi@raspberrypi ~ $ gpio export 16 in
#================================================================================================================================================
import RPi.GPIO as GPIO
import time
# Variable Pegelsch definieren
Pegelsch=1
# SoC als Pinreferenz waehlen
GPIO.setmode(GPIO.BCM)
# Pin 16 vom SoC als Input deklarieren und Pull-Down Widerstand aktivieren
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# ISR "Interrupt"
def Interrupt(channel):
# Zugriff auf globale Variablen
global Pegelsch
# Pegel ausgeben
Pegelsch = Pegelsch
# print "Pegelschalter " + str(Pegelsch)
# Interrupt Event hinzufuegen.GPIO Pin 16, auf steigende (RISING) Flanke reagieren und ISR "Interrupt" deklarieren
GPIO.add_event_detect(16, GPIO.RISING, callback=Interrupt, bouncetime=300)
# Definition der Hauptfunktion
def main():
try:
while True:
fobj = open("/sys/class/gpio/gpio16/value", "r")
for line in fobj:
print line.rstrip()
fobj.close()
# Abfrageintervall des Pegelschalters in sec.
time.sleep(60)
# zuruecksetzen der GPIO Einstellungen wenn der Benutzer Tastaturabbruch nutzt "Ctrl+C"
except KeyboardInterrupt:
print(" PEGELSCHALTER halt durch Benutzer")
GPIO.cleanup()
if __name__ == '__main__':
# GPIO Pinreferenz waehlen (GPIO.BCM)
GPIO.setmode(GPIO.BCM)
# Aufruf der Hauptfunktion
main()
[/code]
Ausgabe getestet mit Putty:
Code:
root@raspberrypi1:/var/www/teichmonitor# ./pegelschalter.py -d
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
^C PEGELSCHALTER halt durch Benutzer
root@raspberrypi1:/var/www/teichmonitor#
Für die Ausgabe und weiter Verarbeitung gibt es mehre Möglichkeiten:
1. als Variable
2. als Datei
3. cat /sys/class/gpio/gpio3/value
Das Abfrageintervall des Pegelschalters steht hier auf 60 sec. zum testen auf 1sec. bitte stellen.
# Abfrageintervall des Pegelschalters in sec.
time.sleep(60)
Meine Verschaltung, ein bisschen anders als bei Dennis, da Spannungsteiler nicht benötigt wird.
Dateianhang:
Pegel 1.jpg
Dateianhang:
Pegel_2.jpg