Raspberry Pi fotocell log och alert system (4 / 5 steg)
Steg 4: Den final koden
#Settings
IN_RC = 18 #Input pin
OUT_LOW = 24 #Low-light output
OUT_HIGH = 25 #High-light output
OUT_STATE = 22 #Program staten utgång
Med dessa kan du ändra GPIO stiften som programmet är att få input från och skicka utdata till.
Här är den fullständiga koden:
#! / usr/bin/env python
# Fotocell ingång och tolkning för Ras Pi
# Måste användas med GPIO 0.3.1a eller senare - tidigare versioner
# är inte tillräckligt snabb!
# Set för fotocell input på stift 18 som standard
importera RPi.GPIO som GPIO, tid, os, sys
#Settings
IN_RC = 18 #Input pin
OUT_LOW = 24 #Low-light output
OUT_HIGH = 25 #High-light output
OUT_STATE = 22 #Program staten utgång
FELSÖKA = 1
GPIO.setmode (GPIO. BCM)
GPIO.setup (OUT_LOW, GPIO. OUT)
GPIO.setup (OUT_HIGH, GPIO. OUT)
GPIO.setup (OUT_STATE, GPIO. OUT)
def RCtime (RCpin):
läsning = 0
GPIO.setup (RCpin, GPIO. OUT)
GPIO.output (RCpin, GPIO. LÅG)
Time.Sleep(0.1)
GPIO.setup (RCpin, GPIO. I)
# Detta tar ca 1 millisekund per slinga cykel
medan (GPIO.input(RCpin) == GPIO. LÅG):
behandlingen + = 1
returnera behandlingen
def ledOut(state):
om statliga == 0:
GPIO.output (OUT_LOW, sant)
GPIO.output (OUT_HIGH, sant)
returnera 0
om statliga == 1:
GPIO.output (OUT_LOW, falskt)
GPIO.output (OUT_HIGH, sant)
returnera 0
om statliga == 2:
GPIO.output (OUT_LOW, sant)
GPIO.output (OUT_HIGH, falskt)
returnera 0
om statliga == 3:
GPIO.output (OUT_LOW, falskt)
GPIO.output (OUT_HIGH, falskt)
returnera 0
returnera 1
def photocellParse(reading):
ut = ""
om läser < = 65:
ut = "0"
ledOut(0)
återvända ut
om läser < = 150:
ut = "o"
ledOut(1)
återvända ut
om läser < = 350:
ut = "."
ledOut(2)
återvända ut
ut = ""
ledOut(3)
återvända ut
samtidigt sant:
GPIO.output (OUT_STATE, sant)
sys.stdout.write(photocellParse(RCtime(IN_RC))) # Läs RC timing med RC_IN pin, tolka det och spotta det till stdout
#print photocellParse(RCtime(IN_RC)),
sys.stdout.flush()
GPIO.output (OUT_STATE, falskt)