lundi 19 octobre 2015

Scratch sur Raspberry Pi (2): bouton poussoir

Comme deuxième expérience impliquant le logiciel Scratch et les pins GPIO du Raspberry Pi, je vous propose la mise en place d'un bouton poussoir qui permettra de faire bouger un chat à l'écran.

La dernière fois, nous avions mis au point un programme Scratch qui allumait une LED, pour ce faire, nous avions dû définir la pin GPIO 14 comme une sortie.  Selon le bon vouloir de notre programme, cette sortie pouvait se régler à une tension de 0 volt, ou de 3,3 volts.

Avec un bouton, c'est le contraire:  la pin GPIO 14 sera une entrée. Sa tension de 0 volt ou de 3,3 volts sera contrôlée par le bouton, et non par notre programme.  Par contre, notre programme sera capable de lire l'état de cette entrée (0 ou 3,3 volts), et d'accomplir certaines tâches en fonction de cette valeur.

Le circuit

Un bouton poussoir et une résistance (de 10 kΩ, par exemple) sont branchées au Raspberry pi de la façon illustrée ci-dessous (le fil noir est branché à une des pins GND, le fil rouge est branché à une des pins 3V3, et le fil violet est branché à la pin GPIO 14).

De cette façon, lorsqu'on n'appuie pas sur le bouton, aucun courant ne circule dans la résistance, et le potentiel de la pin GPIO 14 est de 3,3 volts.  Lorsqu'on appuie sur le bouton, le potentiel de la pin GPIO 14 devient nul.

Construction du programme

Tout comme la dernière fois, nous démarrons Scratch, qui se trouve dans la catégorie "Programmation" du menu de Raspbian, et nous sélectionnons "Start GPIO Server" dans le menu "Éditer" de Scratch.


Cliquons sur le bouton "Contrôle" en haut à gauche, et glissons dans la zone centrale notre premier bloc, qui nous permettra de démarrer notre programme au moyen du bouton ayant la forme d'un drapeau vert.


L'étape suivante consiste à configurer la pin GPIO 14 du Raspberry Pi comme une entrée.  Pour ce faire, vous imbriquez sous le bloc précédent un bloc "envoyer à tous".  Après avoir cliqué sur son bouton en forme de triangle inversé, vous écrivez l'instruction "config14in".


Nous voulons ensuite que notre programme vérifie continuellement l'état de notre pin 14, afin qu'on sache si le bouton qui y est branché est enfoncé ou non.  Cette action sera répétée sans arrêt jusqu'à l'interruption du programme, grâce à un bloc "répéter indéfiniment".


À l'intérieur du bloc "répéter indéfiniment", nous allons placer une condition "si", car le chat ne bougera que si le bouton est enfoncé.


Allez maintenant dans la catégorie "Opérateurs", et placez l'opérateur d'égalité à l'endroit prévu pour placer une condition:


Cliquez maintenant dans la catégorie "Capteurs", et placer un bloc "valeur du capteur" à gauche du signe d'égalité.


Le type de capteur a été réglé par défaut à "glisseur":  remplacez-le par "gpio14" (si "gpio14" ne figure pas dans la liste, cliquez sur le bouton en forme de drapeau vert à la droite de la fenêtre afin d'exécuter le programme, puis cliquez sur le cercle rouge pour l'interrompre).


Écrivez le chiffre "0" dans l'espace situé à droite du signe d'égalité.


Il ne reste plus qu'à indiquer les actions qui doivent être accomplies pendant que le bouton est enfoncé.  Ici, j'ai choisi une rotation de 15 degrés (disponible dans la catégorie "Mouvement" suivie d'un délai d'un dixième de seconde.


Vous pouvez maintenant démarrer votre programme en cliquant sur le drapeau vert (situé du côté droit, au-dessus du chat).  Le chat devrait tourner dans le sens horaire, mais seulement pendant que vous enfoncez le bouton poussoir.  Lorsque vous relâchez le bouton, le chat cesse de tourner.

Si vous remplacez le chiffre 0 par le chiffre 1 à droite du signe d'égalité, c'est le contraire qui se produit:  le chat tourne pendant que le bouton est relâché, et il s'immobilise uniquement pendant que vous enfoncez le bouton.


Une dernière chose:  si vous désirez afficher à l'écran l'état de la pin GPIO 14, allez dans la catégorie "Capteurs", dans le bloc "valeur du capteur" remplacez "glisseur" par "gpio14", et cochez la case située à gauche du bloc:  la valeur de la pin (0 ou 1, selon que le bouton est enfoncé ou non) sera affichée pas très loin du chat.





Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire