Stap 7: Python Code
Een andere disclaimer: Ik ben ook niet een computerwetenschapper of programmeur, veel minder een Python-expert. Als de code hieronder ziet er verschrikkelijk, inefficiënt of gewoon maakt u ineenkrimpen, gelieve te voelen vrij to post een link naar betere code, omwille van de mensen dit leest in detoekomst.Update 12/13/2013: Zie mmoon de opmerking hieronder voor een link naar wat netter code.
Nu hebt u het circuit gebouwd, is het tijd om te beginnen met behulp van de Raspberry Pi! Dit is een ander deel dat was verwarrend voor een first-time Raspberry Pi gebruiker - het was niet meteen duidelijk hoe u eigenlijk de GPIO pinnen, want blijkbaar is er meer dan één manier om het te doen. Een Google-zoekopdracht voor "raspberry pi gpio python" onthult meerdere verschillende tutorials en Python pakketten die kunt u downloaden. U kunt ook controleren de pinnen rechtstreeks vanaf een terminal die zonder het gebruik van Python at all. Dus, het kostte me een tijdje om erachter te komen dat de standaard distributie al Raspbian wordt geleverd met een Python module voor controlerende GPIO pinnen. Oef!
Vergeet niet dat ik ervan uitgaande u al een Raspberry Pi dat ben tot en uitvoeren van dit punt, met behulp van Raspbian, die wordt geleverd met zowel Python 2.x en 3.x (vanaf December 2013). Ik schreef de code in Python 3.2.3 IDLE 3 (geïntegreerde Development Library) - er's met een snelkoppeling voor het op het standaardbureaublad Raspbian.
Het uitvoeren van de code:
1. open een terminal ("LXTerminal" pictogram op het bureaublad), typ sudo idle3, en druk op invoeren. Dit loopt IDLE "als root", die vereist voor de GPIO toegang met Python is.
2. download christmas_timer.py (zie hieronder) en vervolgens opent in IDLE 3, of Maak een nieuwe Python bestand en kopieer en plak de onderstaande code.
3. Neem een minuut om te kijken naar de code en de opmerkingen. Het enige deel dat u hoeft te bewerken is de sectie richting van het begin met alle de "aan" en "uit" tijden (MonOn, MonOff, TueOn, enz.).
4. u bent bijna klaar de code uit te voeren! Maar eerst... (Ga naar de volgende stap)
# Raspberry Pi aangepaste Kerstmis licht timer
# GPIO importmodule
importeren van RPi.GPIO als GPIO# instellen GPIO pinnen als uitgang
# Dit Verdrag is voor de "P1" koptekst pin Conventie
# waar de pinnen met P1 in de linker bovenhoek beginnen
# en ga naar P26 in het lagere recht, met kansen in de
# linkerkolom en evens in de rechterkolom.
# Dus pinnen P1-11 en P1-12 corresponderen met GPIO17 en
# GPIO18 respectievelijk.
GPIO.setmode (GPIO. RAAD VAN BESTUUR)
GPIO.setup (11, GPIO. UIT)
GPIO.setup (12, GPIO. UIT)# datum en tijd modules importeren
datetime importeren
importeren# Voer de gewenste de lichten voor het inschakelen en uitschakelen voor
# elke dag van de week. Standaard is voor verlichting in te schakelen op
# 5:30 pm en 10:30 uur op weekdagen, korting op om 5:00 pm, en uit
# 11:30 uur in het weekend. Merk op dat dit is met behulp van een 24-uurs klok.MonOn = datetime.time(hour=17,minute=30,second=0)
MonOff = datetime.time(hour=22,minute=30,second=0)
TueOn = datetime.time(hour=17,minute=30,second=0)
TueOff = datetime.time(hour=22,minute=30,second=0)
WedOn = datetime.time(hour=17,minute=30,second=0)
WedOff = datetime.time(hour=22,minute=30,second=0)
ThuOn = datetime.time(hour=17,minute=30,second=0)
ThuOff = datetime.time(hour=22,minute=30,second=0)
FriOn = datetime.time(hour=17,minute=30,second=0)
FriOff = datetime.time(hour=22,minute=30,second=0)
SatOn = datetime.time(hour=17,minute=0,second=0)
SatOff = datetime.time(hour=23,minute=30,second=0)
SunOn = datetime.time(hour=17,minute=0,second=0)
SunOff = datetime.time(hour=23,minute=30,second=0)
# Deze tijden worden opgeslagen in een array voor gemakkelijke toegang later.
OnTime = [MonOn, TueOn, WedOn, ThuOn, FriOn, SatOn, SunOn]
OffTime = [MonOff, TueOff, WedOff, ThuOff, FriOff, SatOff, SunOff]
# Een "wachttijd" in seconden instellen. Dit zorgt ervoor dat het programma wordt onderbroken
# kort na het schakelt de verlichting in of uit. Anderszins, sinds de
# loop meer dan eenmaal een seconde zal uitvoeren, zal het proberen te houden
# draaien de lichten op wanneer ze zijn al op (of af wanneer ze zijn
# al weg.
waitTime = 3
# Start de lus wordt uitgevoerd totdat u het programma stopt of draaien
# uit je Raspberry Pi.
terwijl juist:
# krijgen de huidige tijd in de uren, minuten en seconden
currTime = datetime.datetime.now()
# get de huidige dag van de week (0 = maandag, 1 = dinsdag, 2 = woensdag...)
currDay = datetime.datetime.now().weekday()
#Check om te zien of het tijd om de lichten weer op
Als (currTime.hour - OnTime [currDay] .hour == 0 en
currTime.minute - OnTime [currDay] .minute == 0 en
currTime.second - OnTime [currDay] .twee == 0):
# Stel de GPIO pin op hoog, equivalent van
# de ON-knop op de afstandsbediening te drukken
GPIO.output (11, GPIO. HOOG)
# wachten voor een zeer korte periode van tijd stel
# de waarde te laag, het equivalent van het vrijgeven van de
# ON-knop
time.Sleep(.5)
GPIO.output (11, GPIO. LAAG)
# wachten voor een paar seconden, zodat de lus komt niet
# terug door en druk opnieuw op de toets "on"
# terwijl de lichten ae reeds op
time.Sleep(waitTime)
#check om te zien als het is tijd om de lichten uit te schakelen
Elif (currTime.hour - OffTime [currDay] .hour == 0 en
currTime.minute - OffTime [currDay] .minute == 0 en
currTime.second - OffTime [currDay] .twee == 0):
# Stel de GPIO pin op hoog, equivalent van
# de OFF-knop op de afstandsbediening te drukken
GPIO.output (12, GPIO. HOOG)
# wachten voor een zeer korte periode van tijd stel
# de waarde te laag, het equivalent van het vrijgeven van de
# UIT-knop
time.Sleep(.5)
GPIO.output (12, GPIO. LAAG)
# wachten voor een paar seconden, zodat de lus komt niet
# terug door en druk opnieuw op de toets "off"
# terwijl de lichten ae al weg
time.Sleep(waitTime)