vendredi 6 janvier 2017

Scratch sur Rasbperry Pi (3): Modifions la luminosité d'une LED

Dans ce troisième tutoriel concernant l'électronique avec le logiciel Scratch sur Rasbperry Pi, nous allons modifier l'intensité lumineuse d'une LED au moyen des touches du clavier.

Si ce n'est pas déjà fait, je vous conseille la lecture premier tutoriel de cette série: Scratch sur Raspberry Pi (1): Faisons clignoter une LED. Dans cette activité, la LED ne pouvais avoir que 2 états: complètement éteinte, ou complètement allumée. Dans l'activité d'aujourd'hui, elle pourra prendre plusieurs d'états différents, comme par exemple "allumée à 20% de son intensité maximale" ou "allumée à 60% de son intensité maximale".

Construction du circuit

Nous allons utiliser exactement le même circuit que dans le premier tutoriel: une LED (peu importe la couleur) est branchée en série avec une résistance (la résistance doit avoir une valeur se situant quelque part entre 100 Ω et 300 Ω).

La broche la plus longue de la LED est reliée à la pin 14 du Raspberry Pi (il s'agit de la quatrième pin de la rangée du haut,  tel qu'illustré), alors qu'à l'autre extrémité du circuit, la résistance est reliée à une des pins GND (la troisième pin de la rangée du haut, tel qu'illustré).

La LED sera allumée quand la pin 14 sera à 3,3 V, et éteinte quand elle sera à 0 V. Comment varier son intensité lumineuse?  En la faisant clignoter très rapidement.  Cette façon de contrôler la luminosité de la LED s'appelle "modulation par largeur d'impulsion", ou PWM (pour "pulse width modulation").

Construction du programme dans Scratch

Démarrons le logiciel Scratch (il se trouve dans le menu "Programmation").

Nous allons d'abord nous occuper de ce qui se produira au début du programme, lorsqu'on clique sur le bouton en forme de drapeau.

Dans la catégorie "contrôle", nous prenons un bloc "quand drapeau pressé", ainsi qu'un bloc "envoyer à tous".

Comme message dans le bloc envoyer à tous, nous écrivons:  "gpioserveron ".


Ce message démarrera le serveur GPIO, qui permet à nos programmes Scratch de contrôler les pins GPIO du Raspberry Pi.  Une autre méthode aurait consisté à démarrer nous-mêmes le serveur GPIO en choisissant "Start GPIO Server" dans le menu "Éditer", mais grâce à ce bloc, ce sera fait automatiquement.

Ajoutons un autre bloc "envoyer à tous".  Celui-ci enverra le message "config14outputpwm".  Ce message signifie que la pin 14 à laquelle nous avons branché la LED sera une sortie qu'il sera possible de faire clignoter très rapidement.


L'étape suivante consiste à créer une variable qui contiendra un nombre correspondant à la luminosité de la LED.  Dans la catégorie "Variables", cliquez sur le bouton "Nouvelle variable".


Nous donnons à cette variable le nom "luminosité".


Quand la variable "luminosité" contiendra la valeur "0", la LED sera éteinte.  Quand sa valeur sera "30", la LED sera allumée à 30% de son intensité maximale, etc.  Au moyen d'un bloc "à luminosité attribuer", nous allons régler sa valeur initiale à 50, ce qui correspond à 50% de la valeur maximale.


La variable "luminosité" contient le nombre 50.  Nous allons maintenant envoyer un message pour ordonner à la LED se s'allumer avec cette luminosité.  Nous ajoutons donc un nouveau bloc "envoyer à tous":


Nous nous rendons ensuite dans la catégorie "Opérateurs" pour prendre un bloc "joindre salut monde" que nous faisons glisser à l'intérieur du bloc "envoyer à tous":


Retour à la catégorie "variables" afin de faire glisser le bloc "luminosité" au-dessus du deuxième élément du bloc "joindre":


Et nous remplaçons le mot "salut" par "gpio14pwm":


Puisque la variable "luminosité" contient le nombre 50, le message envoyé sera "gpio14pwm50", ce qui obligera la pin 14 à clignoter rapidement, en étant allumée 50% du temps.

La suite de notre programme consiste à augmenter la luminosité de la LED lorsque l'utilisateur appuie sur la touche "flèche vers le haut du clavier".

Dans la catégorie "Contrôle", nous choisissons le bloc "quand espace est pressé", et nous remplaçons "espace" par "flèche haut".


Lorsque l'utilisateur pressera la flèche vers le haut, nous voulons que la variable "luminosité" augmente de 10.  Dans la catégorie "Variables", nous utilisons un bloc "à luminosité ajouter 1" et nous remplaçons 1 par 10:


...et nous ordonnons à la LED de briller selon cette nouvelle valeur:


(une façon simple consiste à faire un clic droit sur le bloc identique situé plus haut, et choisir "dupliquer").

Quand c'est la flèche vers le bas qui est pressée, nous voulons soustraire 10 de la variable "luminosité", ce qui revient à lui additionner "-10":


Et notre programme est complet!

Mise à l'essai du programme

Vous cliquez sur le bouton en forme de drapeau pour démarrer le programme.  La LED devrait devenir plus lumineuse quand vous appuyez sur la touche "flèche vers le haut" du clavier, et moins lumineuse quand vous appuyez sur la touche "flèche vers le bas".

Observation du signal PWM

Voici ce qu'on obtient lorsqu'on branche un oscilloscope à la pin 14 du Raspberry Pi...

... pendant que la variable "luminosité" est à 0 (la tension est toujours 0 V):


Pendant que la variable "luminosité" vaut 30 (la sortie est à 3 V 30% du temps, et à 0 pendant 70% du temps):


Pendant que luminosité est à 50 (sortie à 3 V 50% du temps):


Pendant que "luminosité" est à 80:



Et, finalement, quand luminosité est à 100:



Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire