Outils pour utilisateurs

Outils du site


issue105:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue105:python [2016/02/10 09:07] d52frissue105:python [2016/02/12 11:33] (Version actuelle) auntiee
Ligne 8: Ligne 8:
  
 The red LED cathode is connected to GPIO 17 (Physical pin 11), yellow LED cathode is connected to GPIO 23 (Physical pin 16), and the green LED cathode is connected to GPIO 22 (Physical pin 15). The Anodes of all three LEDs are connected to one side of 220 Ohm resistors and the other sides are connected to a common 3.3 VDC. We don’t need the ground voltage for this particular project.** The red LED cathode is connected to GPIO 17 (Physical pin 11), yellow LED cathode is connected to GPIO 23 (Physical pin 16), and the green LED cathode is connected to GPIO 22 (Physical pin 15). The Anodes of all three LEDs are connected to one side of 220 Ohm resistors and the other sides are connected to a common 3.3 VDC. We don’t need the ground voltage for this particular project.**
 +
 +Heureux de vous revoir dans notre série sur la programmation dans le monde réel. La dernière fois, nous avons programmé le RPi pour allumer et éteindre une LED quand on a appuyé sur un bouton. Très simple, mais c'est un bon démarrage. Ce mois-ci, nous allons réaliser un autre projet simple, un simulateur de feux tricolores routiers utilisant 3 LED, une rouge, une jaune et une verte. Majoritairement, le code va être très proche de celui utilisé le mois dernier ; il ne devrait donc pas y avoir de problème. Si vous avez des questions, je vous suggère de regarder l'article du mois dernier qui devrait répondre à toutes ces interrogations.
 +
 +D'abord, regardons le schéma et la plaque d'essai (en bas à droite).
 +
 +Notez que les couleurs des câbles correspondent à leur fonction, à l'exception du fil orange. Les fils rouges fournissent 3,3 volts. Le câble vert pilote la LED verte, le jaune, la LED jaune et le fil orange contrôle la LED rouge, puisque le fil rouge est déjà pris.
 +
 +La cathode de la LED rouge est connecté à GPIO 17 (picot physique 11), la cathode de la LED jaune est connectée à GPIO 23 (picot physique 16) et la cathode de la LED verte est reliée à GPIO 22 (picot physique 15). Les anodes des trois LED sont connectées à un bout des résistances de 220 ohms et les autres terminaisons sont reliées au point haut de 3,3 volts. Nous n'avons pas besoin de la masse pour ce projet-ci.
  
 **Since I’ve driven only in the U.S. I’ve based the simulation on our traffic patterns. Long red light (10 seconds), green light is usually shorter than the red light time (8 seconds), and the yellow light is fairly short (2 seconds). These values are currently hard coded in the time.sleep() function calls. Feel free to change them as you see fit. **Since I’ve driven only in the U.S. I’ve based the simulation on our traffic patterns. Long red light (10 seconds), green light is usually shorter than the red light time (8 seconds), and the yellow light is fairly short (2 seconds). These values are currently hard coded in the time.sleep() function calls. Feel free to change them as you see fit.
Ligne 32: Ligne 40:
  
 The first 9 lines are our standard import statements and a few comment lines. The next three lines define the BCM pin numbers for our LED pins. If you wish to use physical pin numbers, be sure to change the GPIO.setmode() line in the next routine (top right).** The first 9 lines are our standard import statements and a few comment lines. The next three lines define the BCM pin numbers for our LED pins. If you wish to use physical pin numbers, be sure to change the GPIO.setmode() line in the next routine (top right).**
 +
 +Comme je n'ai conduit qu'aux États-Unis, j'ai basé la simulation sur la séquence US. Un long feu rouge (10 secondes), un vert habituellement plus court que le rouge (8 secondes) et un orange assez court (2 secondes). Ces valeurs sont actuellement codées en dur dans les appels de fonction time.sleep(). Vous pouvez les changer comme bon vous semble.
 +
 +Maintenant, commençons à travailler sur le code.
 +
 +#!/usr/bin/env python
 +
 +# Traffic Light Simulator
 +# Written by G. D. Walters
 +
 +#--------------------------
 +
 +import RPi.GPIO as GPIO
 +import os
 +import time
 +import datetime
 +
 +#--------------------------
 +
 +RedLedPin = 17
 +YellowLedPin = 23
 +GreenLedPin = 22
 +
 +Les 9 premières lignes sont des déclarations classiques d'import, plus quelques lignes de commentaires. Les 3 lignes suivantes définissent les numéros des picots BCM de nos picots de LED. Si vous voulez utiliser les numéros physiques des picots, assurez-vous de changer la ligne GPIO.setmode() dans la routine suivante (en haut à droite).
  
 **As I mentioned above, the GPIO.setmode needs to be changed from ‘GPIO.BCM’ to ‘GPIO.BOARD’ if you want to use the physical pin numbers instead of the BCM numbers in our definitions. The next three lines set the LED pins as output pins, and then turn all three LEDs off to start the program by setting the output value to HIGH. **As I mentioned above, the GPIO.setmode needs to be changed from ‘GPIO.BCM’ to ‘GPIO.BOARD’ if you want to use the physical pin numbers instead of the BCM numbers in our definitions. The next three lines set the LED pins as output pins, and then turn all three LEDs off to start the program by setting the output value to HIGH.
Ligne 58: Ligne 90:
 • Set the output value of the pin back to 1 or high, • Set the output value of the pin back to 1 or high,
 • Then print that the LED is now off.** • Then print that the LED is now off.**
 +
 +Comme indiqué dans l'article précédent, GPIO.setmode doit être changé de « GPIO.BCM » en « GPIO.BOARD » si vous voulez utiliser les numéros des picots physiques à la place des numéros BCM dans nos définitions. Les trois lignes suivantes déclarent les picots de LED comme des sorties, puis les éteignent toutes les trois pour démarrer le programme, en plaçant la valeur de sortie à HIGH (haut).
 +
 +def LEDLoop():
 +    print "Green On..."
 +    GPIO.output(GreenLedPin,0)
 +    time.sleep(8)
 +    GPIO.output(GreenLedPin,1)
 +    print "Green Off..."
 +    print "Yellow On..."
 +    GPIO.output(YellowLedPin,0)
 +    time.sleep(2)
 +    GPIO.output(YellowLedPin,1)
 +    print "Yellow Off..."
 +    print"Red On..."
 +    GPIO.output(RedLedPin, 0)
 +    time.sleep(10)
 +    GPIO.output(RedLedPin,1)
 +    print "Red Off..."
 +
 +La routine LEDLoop est très simple :
 +• imprimer « <color> On… » (<couleur> allumée) sur la console,
 +• allumer la LED en mettant la valeur de sortie à 0 (niveau bas),
 +• puis une période d'attente de la valeur convenue,
 +• remettre la sortie à la valeur 1 (niveau haut),
 +• puis imprimer que la LED est éteinte.
  
 **This is then duplicated for the Yellow and Red LEDs. The loop() routine simply forces the LEDLoop() routine to be called over and over until the user hits <CTRL> C on the RPi keyboard. **This is then duplicated for the Yellow and Red LEDs. The loop() routine simply forces the LEDLoop() routine to be called over and over until the user hits <CTRL> C on the RPi keyboard.
Ligne 73: Ligne 131:
 Next time, we’ll have something that is a bit more challenging. Until then, happy programming.** Next time, we’ll have something that is a bit more challenging. Until then, happy programming.**
  
 +Puis, ceci est copié pour les LED jaune et rouge. La routine loop() force simplement l'appel répété à l'infini de la routine LEDLoop() jusqu'à ce que l'uilisateur tape <Ctrl> C sur le clavier du RPi.
 +
 +def loop():
 +    while True:
 +    LEDLoop()
 +
 +La routine destroy() et la boucle principale sont les mêmes que le mois dernier : nous mettons toutes les sorties de LED au point haut, pour les éteindre, puis nous appelons GPIO.cleanup().
 +
 +Je ne suis pas sûr que nous puissions construire un programme plus simple pour faire ce que nous devons faire.
 +
 +Si vous voulez, vous pouvez dupliquer les 3 LED et programmer une simulation de carrefour avant la prochaine fois.
 +
 +La prochaine fois, nous aurons quelque chose d'un peu plus corsé. Jusque-là, bonne programmation.
  
 **ENCART APP **ENCART APP
  
  
-The Official Full Circle App fot Ubuntu Touch+The Official Full Circle App for Ubuntu Touch
  
 Brian Douglass has created a fantastic app for Ubuntu Touch devices that will allow you to view current issues, and back issues, and to download and view them on your Ubuntu Touch phone/tablet. Brian Douglass has created a fantastic app for Ubuntu Touch devices that will allow you to view current issues, and back issues, and to download and view them on your Ubuntu Touch phone/tablet.
Ligne 87: Ligne 158:
 https://uappexplorer.com/app/ https://uappexplorer.com/app/
 fullcircle.bhdouglass** fullcircle.bhdouglass**
 +
 +ENCART APP
 +
 +L'appli officielle du FullCircle pour Ubuntu Touch
 +
 +Brian Douglass a créé une appli fantastique pour les appareils Ubuntu Touch, qui vous permettra de voir les numéros actuels et les numéros plus anciens, et de les télécharger et de les lire sur votre téléphone/tablette Ubuntu Touch.
 +
 +Installation
 +
 +Soit vous cherchez « full circle » dans le magasin Ubuntu Touch et vous cliquez sur Installer, soit vous affichez l'URL ci-dessous sur votre appareil et vous cliquez sur Installer pour être transféré sur la page des téléchargements.
 +
 +https://uappexplorer.com/app/fullcircle.bhdouglass
issue105/python.1455091629.txt.gz · Dernière modification : 2016/02/10 09:07 de d52fr