Étape 7: Python Code
Un autre avertissement : je ne suis pas un informaticien ou un programmeur, encore moins un expert de Python. Si le code ci-dessous semble terrible, inefficace, ou juste fait vous grincer des dents, n’hésitez pas à poster un lien vers le meilleur code, dans un souci de gens lisez ceci dans le futur.Mise à jour 13/12/2013 : Voir le commentaire de mmoon ci-dessous un lien vers un code plus propre.
Maintenant que vous avez le circuit intégré, il est temps de commencer à utiliser la Pi framboise ! Il s’agit d’une autre partie qui a été source de confusion pour un utilisateur de Raspberry Pi première fois - il n’était pas immédiatement évident comment contrôler réellement les broches GPIO, parce qu’apparemment, il y a plusieurs façons de le faire. Une recherche sur Google pour « python de gpio pi framboise » révèle plusieurs différents tutoriels et paquets Python, que vous pouvez télécharger. Vous pouvez également contrôler les broches directement depuis un terminal sans utiliser Python du tout. Alors, il m’a fallu un certain temps pour comprendre que la distribution de Raspbian par défaut déjà est livré avec un module Python pour le contrôle des broches GPIO. Ouf !
N’oubliez pas que je suppose que vous disposez déjà d’un Pi de framboise vers le haut et l’exécution de ce point, à l’aide de Raspbian, qui est livré avec deux Python 2.x et 3.x (à partir de décembre 2013). J’ai écrit le code Python 3.2.3 utilisant IDLE 3 (Integrated Development Library) - il un raccourci pour cela sur le Bureau de Raspbian par défaut.
Pour exécuter le code :
1. ouvrir un terminal (« LXTerminal » icône sur le bureau), tapez sudo idle3et appuyez sur entrer. Cette attitude est IDLE "en tant que root", qui est nécessaire pour y accéder GPIO avec Python.
2. Télécharger christmas_timer.py (ci-dessous) et puis ouvrez-le dans 3 IDLE, ou créez un nouveau fichier Python et copier et coller le code ci-dessous.
3. Prenez une minute pour regarder le code et les commentaires. La seule partie vous avez besoin d’éditer est la section vers le début du mois avec tous les « on » et « off » fois (MonOn, MonOff, TueOn, etc.).
4. vous êtes presque prêt exécuter le code ! Mais d’abord... (passez à l’étape suivante)
# Raspberry Pi personnalisé Noël lumineux minuterie
module de # import GPIO
importation RPi.GPIO comme GPIO# configurer les broches GPIO comme sorties
# Cette convention est pour la convention de pin header « P1 »
# où les broches commencent par P1 dans le coin supérieur gauche
# et allez vers P26 dans l’angle inférieur droit, avec des cotes dans la
colonne de gauche de # et evens dans la colonne de droite.
# Ainsi, épingles, P1-11 et P1-12 correspondent aux GPIO17 et
# GPIO18 respectivement.
GPIO.setmode (GPIO. CONSEIL D’ADMINISTRATION)
GPIO.setup (11, GPIO. OUT)
GPIO.setup (12, GPIO. OUT)# importation modules de date et d’heure
importation de datetime
moment de l’importation# Saisissez les moments que vous voulez dans les feux à allumer et éteindre pour
# chaque jour de la semaine. Valeur par défaut est pour les feux à allumer à
# 17:30 et à 17:00 au large à 22:30 lundi au vendredi, sur et hors
# à 23:30 le week-end. Notez que c’est en utilisant une horloge de 24 heures.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)
Veronique = 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)
# Stockez ces temps dans un tableau pour un accès facile par la suite.
OnTime = [MonOn, TueOn, WedOn, veronique, FriOn, SatOn, SunOn]
OffTime = [MonOff, TueOff, WedOff, ThuOff, FriOff, SatOff, SunOff]
# Définissez un « temps d’attente » en quelques secondes. Cela garantit que le programme s’arrête
# brièvement après il allume l’éclairage allumé ou éteint. Par ailleurs, depuis le
# boucle sera exécuter plus d’une fois par seconde, il va essayer de garder
# tourner les lumières quand ils sont déjà sur (ou désactiver lorsqu’ils sont
# déjà éteint.
waitTime = 3
# Lancer la boucle qui s’exécute jusqu'à ce que vous arrêtez le programme ou tourner
# désactiver votre Pi de framboise.
While True :
# obtenir l’heure en heures, minutes et secondes
currTime = datetime.datetime.now()
# get le jour de la semaine (0 = lundi, 1 = mardi, 2 = mercredi...)
currDay = datetime.datetime.now().weekday()
#Check pour voir si il est temps d’allumer les lumières
Si (currTime.hour - .hour OnTime [currDay] == 0 et
currTime.minute - .minute OnTime [currDay] == 0 et
currTime.second - .second OnTime [currDay] == 0) :
# définir la broche GPIO sur Elevée, équivalent de
# en appuyant sur le bouton de la télécommande
GPIO.output (11, GPIO. HAUTE)
# attendre pour un très court laps de temps, puis définissez
# la valeur à la basse, l’équivalent de libérer le
Bouton ON #
Time.Sleep(.5)
GPIO.output (11, GPIO. FAIBLE)
# attendre quelques secondes donc ne vient pas la boucle
# Retour à travers et appuyez de nouveau sur le bouton « marche »
# alors que l’ae de lumières déjà sur
Time.Sleep(waitTime)
#check pour voir si il est temps d’éteindre les lumières
Elif (currTime.hour - OffTime [currDay] .hour == 0 et
currTime.minute - OffTime [currDay] .minute == 0 et
currTime.second - .second OffTime [currDay] == 0) :
# définir la broche GPIO sur Elevée, équivalent de
# en appuyant sur le bouton OFF de la télécommande
GPIO.output (12, GPIO. HAUTE)
# attendre pour un très court laps de temps, puis définissez
# la valeur à la basse, l’équivalent de libérer le
# INTERRUPTEUR
Time.Sleep(.5)
GPIO.output (12, GPIO. FAIBLE)
# attendre quelques secondes donc ne vient pas la boucle
# Retour à travers et appuyez de nouveau sur le bouton « off »
# alors que l’ae de lumières déjà off
Time.Sleep(waitTime)