| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| issue107:python [2016/04/11 10:27] – auntiee | issue107:python [2016/04/12 19:05] (Version actuelle) – erlevo |
|---|
| So get your Pi and your breadboard and we’ll start working.** | So get your Pi and your breadboard and we’ll start working.** |
| |
| Bon retour dans le monde assez fou de Python Programming dans la vraie vie. Avant de commencer, j'ai besoin de vous avouer quelque chose. La dernière fois, j'ai fait une grosse faute : les images dans la partie 63 sont erronées. Les LED sont à l'inverse de ce qu'ils devraient être. Brian Kelly l'a remarqué et était assez courageux de signaler les erreurs du vieillard que je suis. Merci, Brian. Si vous suivez le texte, cela devrait aller. | Bon retour dans le monde assez fou de Python Programming, dans la vraie vie. Avant de commencer, je dois vous avouer quelque chose. La dernière fois, j'ai fait une grosse faute : les images dans la partie 63 sont erronées. Les LED sont à l'inverse de ce qu'ils devraient être. Brian Kelly l'a remarqué et a été assez courageux pour signaler les erreurs du vieillard que je suis. Merci, Brian. Si vous suivez le texte, cela devrait aller. |
| |
| Ensuite, je dois vous présenter des excuses, car je n'ai pas pu faire mon article le mois dernier (dans le FCM n° 106). J'ai encore des problèmes de santé qui m'empêchent de rester assis pendant longtemps. En principe, cela devrait être corriger bientôt. | Ensuite, je dois vous présenter des excuses, car je n'ai pas pu faire mon article le mois dernier (dans le FCM n° 106). J'ai encore des problèmes de santé qui m'empêchent de rester assis pendant longtemps. En principe, cela devrait être corrigé bientôt. |
| |
| Bon, ça suffit. Maintenant pour ce que je vous propose ce mois-ci. | Bon, ça suffit. Maintenant voyons ce que je vous propose ce mois-ci. |
| |
| Le LED mystère | Le LED mystère |
| |
| Dans les deux derniers articles, vous avez appris à allumer et à atteindre des LED avec un programme. C'était assez simple. Il s'agit d'une sortie numérique et non pas une sortie analogique. Le Rpi, contrairement à l'Arduino, ne peut pas faire entrée/sortie analogique et nous sommes limités à régler un pin GPIO (dans ce cas, un LED) soit allumé soit éteint. Cette fois-ci, nous allons utilisé nos connaissance pour faire quelque chose de très intéressant. | Dans les deux derniers articles, vous avez appris à allumer et à éteindre des LED avec un programme. C'était assez simple. Il s'agit de sortie numérique et non pas analogique. Le Rpi, contrairement à l'Arduino, ne supporte pas d'entrée/sortie analogique, et nous sommes limités à n'utiliser une sortie du GPIO (et une LED dans ce cas) que dans l'état allumé ou éteint. Cette fois-ci, nous allons utiliser nos connaissances pour faire quelque chose de très intéressant. |
| |
| Allez chercher votre Pi et votre carte (« breadboard ») et au travail ! | Allez chercher votre Pi, votre carte d'expérimentation et au travail ! |
| |
| **The Wiring | **The Wiring |
| Le câblage | Le câblage |
| |
| Il vous faut un Raspberry Pi, une carte, deux LED (un Red (rouge) et un White (blanc)), deux résistances à 220Ohm et 3 fils de raccordement. | Il vous faut un Raspberry Pi, une carte d'expérimentation, deux LED,une rouge et une blanche, deux résistances de 220 Ohms et 3 fils de raccordement. |
| |
| Pour cet exemple de câblage, j'utilise le pi original. Si vous avez un Pi B+ ou 2B (ou encore le tout nouveau 3), les pins ici sont exactement les mêmes. | Pour cet exemple de câblage, j'utilise le Pi original. Si vous avez un Pi B+ ou 2B (ou encore le tout nouveau 3), les broches concernées sont exactement les mêmes. |
| |
| Pour éviter de se mêler les pinceaux (de mon côté), les Cathodes (côté Négatif) des LED sont connectéees aux résistances, qui sont connectées, elles, à la terre, et les Anodes (côté Positif) sont connectées par les fils de raccordement aux pins du Pi. Le côté positif du LED est habituellement indiqué par le « lead » le plus long et le côté négatif est celui qui a un endroit plat sur la base du LED. | Pour éviter de s'emmêler les pinceaux (de mon côté), les Cathodes (côté Négatif) des LED sont connectées aux résistances, qui sont connectées, elles, à la terre, et les Anodes (côté Positif) sont connectées par les fils de raccordement aux broches du Pi. Le côté positif de la LED est habituellement indiqué par la broche la plus longue et le côté négatif est celui qui a un méplat sur la base du LED. |
| |
| **The Code | **The Code |
| Le code | Le code |
| |
| Je n'expliquerais pas le code tout de suite. Il suffit de le copier tel quel dans l'éditeur. Je vais en parler après. | Je n'expliquerai pas le code tout de suite. Il suffit de le copier tel quel dans l'éditeur. J'en parlerai après. |
| |
| Une fois le code rentré correctement, lancez-le et regardez ce qui se passe. | Une fois le code entré correctement, lancez-le et regardez ce qui se passe. |
| |
| La révélation | La révélation |
| Si vous avez prêté attention aux articles depuis le début, vous avez sans doute compris ce que fait le code. Sinon, ne vous tracassez pas : une explication suivra. | Si vous avez prêté attention aux articles depuis le début, vous avez sans doute compris ce que fait le code. Sinon, ne vous tracassez pas : une explication suivra. |
| |
| Les LED ne sont ni allumés ni éteints, mais, à la place, ils basculent rapidement entre On et Off. Puisque j'ai bien dit plus tôt que l'on ne peut émettre (ou lire) un voltage On/Off (ou 1/0 ou High/Low), comment est-ce possible ? | Les LED ne sont ni allumées ni éteintes, mais, à la place, elles basculent rapidement entre allumé et éteint. Puisque j'ai bien dit plus tôt que l'on ne peut émettre (ou lire) un voltage On/Off (ou 1/0 ou High/Low), comment est-ce possible ? |
| |
| Nous utilisons un truc appelé PWM ou Pulse Width Modulation (modulation de largeur d'impulsions). Nous respectons toujours les règles, mais nous les contournons un peu dans notre intérêt. Les images ci-dessous, de mon oscilloscope connecté au projet, devront vous aider à comprendre un peu mieux. À ce stade, nous nous occuperons d'un seul LED. | Nous utilisons un truc appelé PWM ou Pulse Width Modulation (modulation de largeur d'impulsions). Nous respectons toujours les règles, mais nous les contournons un peu dans notre intérêt. Les images ci-dessous, de mon oscilloscope connecté au projet, devront vous aider à comprendre un peu mieux. À ce stade, nous nous occuperons d'une seule LED. |
| |
| **If we send out a Low to the GPIO pin to the LED it's zero volts. The LED is getting nothing on the Anode, so it is off. In the last two articles, when we turned the LED on by sending the Anode of the LED a High So we have in the first instance a zero, and in the second a 1. Just like we have assumed... either Off or On. | **If we send out a Low to the GPIO pin to the LED it's zero volts. The LED is getting nothing on the Anode, so it is off. In the last two articles, when we turned the LED on by sending the Anode of the LED a High So we have in the first instance a zero, and in the second a 1. Just like we have assumed... either Off or On. |
| In the picture above, we have a duty cycle of about 5%. In this case the LED is turned on for such a short time, that it is extremely dim and for all intents and purposes it is off.** | In the picture above, we have a duty cycle of about 5%. In this case the LED is turned on for such a short time, that it is extremely dim and for all intents and purposes it is off.** |
| |
| Si nous envoyons un Low au pin GPIO vers le LED, cela fait zéro volt. Le LED ne reçoit rien sur l'Anode et il est donc éteint. Dans les deux derniers articles, nous avons allumé le LED en envoyant un High à l'Anode du LED. Ainsi, dans la première instance, nous avons un zéro et, dans la seconde, un 1. Exactement ce que nous avons supposé... soit Off soit On. | Si nous envoyons un Low sur la sortie GPIO de la LED, cela fait zéro volt. La LED ne reçoit rien sur l'Anode et elle est donc éteinte. Dans les deux derniers articles, nous avons allumé la LED en envoyant un High à l'Anode de la LED. Ainsi, dans la première instance, nous avons un zéro et, dans la seconde, un 1. Comme prévu... soit Off soit On. |
| |
| Cette fois-ci, nous varions le laps de temps où le signal GPIO est High et Low. Si nous le faisons lentement, le LED clignoteraient en réponse au voltage. Dans le cas de cette version, nous basculons entre les deux états très rapidement, tout en changeant le laps de temps pendant lequel il est On comparé à Off, ce qui s'appelle le duty cycle (le cycle de service). | Cette fois-ci, nous varions le laps de temps où le signal GPIO est High et Low. Si nous le faisons lentement, les LED clignoteraient en réponse au voltage. Dans le cas de cette version, nous basculons entre les deux états très rapidement, tout en changeant le laps de temps pendant lequel il est On comparé à Off, ce qui s'appelle le rapport cyclique. |
| |
| Comme vous pouvez le voir, le signal est On pour environ 80 % du temps et Off pour environ 20 %, ce qui ferait un cycle de service de 80 %. En faisant cela rapidement, le LED réagit en s'assombrissant un peu en dessous du 100 % On sans cesse. Pendant la boucle du programme, le cycle de service change et le High est rendu plus long ou plus court, selon la partie précise de la boucle. Dans l'image ci-dessus, le cycle de service est à environ 5 %. Dans ce cas, le LED est allumé pendant si peu de temps qu'il est extrêmement sombre et, pour ainsi dire, il est Off. | Comme vous pouvez le voir, le signal est On pendant environ 80 % du temps et Off pendant 20 %, ce qui ferait un rapport cyclique de 80 %. En faisant cela rapidement, la LED réagit en s'assombrissant un peu en dessous du 100 % de manière continue. Durant la boucle du programme, le rapport cyclique change et le High est rendu plus long ou plus court, selon telle ou telle partie de la boucle. Dans l'image ci-dessus, le rapport cyclique est d'environ 5 %. Dans ce cas, la LED est allumée pendant si peu de temps qu'elle est extrêmement sombre et, pour ainsi dire, elle est Off. |
| |
| **Now, let’s start taking apart the code. | **Now, let’s start taking apart the code. |
| red = GPIO.PWM(24,100) | red = GPIO.PWM(24,100) |
| |
| Dans ces cinq lignes, nous avons réglé le mode GPIO sur BCM et configuré le pins GPIO 24 (pin physique 9) et 25 (pin physique 11) comme pins de sortie. Nous avons déjà fait cela. Maintenant, nous réflons les valeurs du PWM à un cycle de service de 100 %. | Dans ces cinq lignes, nous avons réglé le mode GPIO sur BCM et configuré le pins GPIO 24 (pin physique 9) et 25 (pin physique 11) comme pins de sortie. Nous avons déjà fait cela. Maintenant, nous réglons les valeurs du PWM à un rapport cyclique de 100 %. |
| |
| white.start(0) # start white led on 0 percent duty cycle (off) | white.start(0) # Démarrer la LED blanche avec un rapport cyclique de 0% (off) |
| |
| red.start(100) # red fully on (100%) | red.start(100) # La rouge allumée en permanence (100%) |
| |
| Ensuite, nous allumons le LED rouge (100%) et réglons le LED blanc à 0 volts. | Ensuite, nous allumons la LED rouge (100%) et réglons la LED blanche à 0 volts. |
| |
| pause_time = 0.05 | pause_time = 0.05 |
| Next time, we will start to examine a different GPIO library. Until then, have fun. | Next time, we will start to examine a different GPIO library. Until then, have fun. |
| |
| Nous réglons la variable pause_time à 0,05 secondes. Cela le rend assez rapide pour (je l'espère) ne pas permettre un scintillement. | Nous réglons la variable pause_time à 0,05 seconde. Cela la rend assez rapide pour (je l'espère) ne pas permettre un scintillement. |
| |
| Dans le segment de code suivant, nous faisons les boucles. L'objectif de la première boucle est de rendre le LED blanc plus « brillant » et le LED rouge plus « sombre ». Celui de la deuxième est d'inverser le processus. Prenons la première boucle comme exemple : nous utilisons une boucle FOR pour régler la valeur de i, puis mettons le cycle de service pour le LED blanc à i et celui du LED rouge à 100-i. | Dans le segment de code suivant, nous faisons les boucles. L'objectif de la première boucle est de rendre la LED blanche plus « brillante » et la LED rouge plus « sombre ». Celui de la deuxième est d'inverser le processus. Prenons la première boucle comme exemple : nous utilisons une boucle FOR pour régler la valeur de i, puis mettons le rapport cyclique de la LED blanche à i et celui de la LED rouge à 100-i. |
| |
| Remarquez que nous l'avons entourer d'un ensemble TRY...EXCEPT, ce qui permet au programme de s'exécuter jusqu'à ce que l'utilisateur fasse CTRL+C. Quand cela arrive, nous quittons le côté TRY afin de pouvoir faire le code de nettoyage. | Remarquez que nous l'avons entouré d'un ensemble TRY...EXCEPT, ce qui permet au programme de s'exécuter jusqu'à ce que l'utilisateur fasse CTRL+C. Quand cela arrive, nous quittons le côté TRY afin de pouvoir faire le code de nettoyage. |
| |
| Ainsi, vous savez maintenant que nous avons la possibilité de contourner les règles dans notre intérêt. | Ainsi, vous savez maintenant que nous avons la possibilité de contourner les règles dans notre intérêt. |
| |
| La prochaine fois, nous commencerons notre examen d'une différente bibliothèque GPIO. En attendant, amusez-vous bien. | La prochaine fois, nous commencerons notre examen d'une différente bibliothèque GPIO. En attendant, amusez-vous bien. |