Exemples de projets

avec Scratch 3 et Raspberry Pi4




Exemples de projets avec Scratch 3 et Raspberry Pi 4

https://projects.raspberrypi.org/en/projects/button-switch-scratch-pi/4 (aller sur le site pour avoir les codes Scratch)

https://projects.raspberrypi.org/fr-FR/projects ¤https://projects.raspberrypi.org/fr-FR/ 

Fondation Raspberry Pi

Imprimer ce projet

Contrôler une LED

Vous vous souvenez peut-être que les interrupteurs à bouton sont une entrée qui envoie des informations à votre Pi au moment où il est enfoncé ou relâché, et s'il est actuellement maintenu enfoncé ou non.

Jusqu'à présent, vous avez obtenu différents effets sur un sprite Scratch affiché visuellement sur un écran .

                                                                             

Dans le projet LED, buzzers et jeux Scratch , vous avez examiné comment contrôler des sorties telles que les LED. Vous allez maintenant combiner votre entrée bouton avec une sortie LED .

                                                                                    

Les circuits électroniques

Commençons par la configuration simple de vos boutons.

                                           

Ajoutez une LED connectée à la broche GPIO 4.

                                           

REMARQUE : Les deux circuits, un pour le bouton et un pour la LED, sont des circuits complètement séparés et indépendants.

Le programme Scratch

Maintenant que vos circuits sont prêts, il est temps d'écrire du code dans Scratch.

Dans la Raspberry Pi Simple Electronicspalette de blocs, saisissez un when button pressedbloc et définissez le numéro du bouton sur 2.

Ajoutez un autre bloc turn LED onet définissez le numéro de LED sur 4.

whenbutton2ispressedturnLED4on

Et d'éteindre à nouveau la LED.

Dupliquez le code que vous venez d'écrire, remplacez le when button pressedpar when button releasedet remplacez le turn LED 4 onpar turn LED 4 off.

whenbutton2ispressedturnLED4onwhenbutton2isreleasedturnLED4off

REMARQUE : Les blocs when button pressedet when button releasedvérifient constamment si le bouton est enfoncé ou relâché. En arrière-plan, ils agissent comme foreverdes boucles ; ils vérifient constamment l'état du bouton.

Vous pouvez écrire votre propre code pour faire la même chose. Ensuite, vous écrirez du code qui « demande » constamment si le bouton est enfoncé et indique à la LED d'être allumée ou éteinte, en fonction de la réponse.

Jetez votre ancien code !

Prenez un événement de départ, le when flag clickedbloc.

En dessous, placez une foreverboucle et à l’intérieur, placez un if... then... else...bloc.

whenclickedforeverifthenelse

Entre le ifet le thenva l’état à vérifier.

Dans la Raspberry Pi Simple Electronicspalette de blocs, prenez un button is pressedbloc hexagonal, placez-le dans l'espace hexagonal et définissez le numéro du bouton sur 2.

whenclickedforeverifbutton2ispressed?thenelse

Après thenet après, elseles réponses sont à savoir si oui button 2 is pressedou non.

Dans le premier espace, après then, placez un turn LED 4 onbloc, et dans le deuxième espace, après else, placez un turn LED 4 offbloc.

whenclickedforeverifbutton2ispressed?thenturnLED4onelseturnLED4off

Essayez ceci par vous-même. Il semble faire la même chose que le code précédent mais il est un peu plus réactif.

Contrôler une séquence de LED

Contrôler une séquence de LED

Dans la dernière section, contrôlant une LED , vous avez utilisé un bouton pour allumer et éteindre une LED. Vous allez maintenant utiliser le bouton pour contrôler une LED exécutant une séquence de clignotement.

Vous pouvez conserver la même configuration matérielle que celle que vous avez utilisée pour contrôler une LED . Si vous le souhaitez, vous pouvez facilement adapter le projet et ajouter des LED supplémentaires ou un buzzer.

                                               

Clignotant lorsque vous appuyez dessus

Pour votre premier projet de contrôle de séquence, vous coderez la LED pour qu'elle clignote uniquement lorsque le bouton est enfoncé.

Tout d'abord, vous avez besoin d'un événement tel que le when flag clickedblocage.

En dessous, placez une foreverboucle et à l’intérieur, placez un if... thenbloc.

whenclickedforeverifthen

Cet ensemble de blocs vérifie en permanence une condition, ou pose une question, puis fait quelque chose si la condition est vraie , c'est-à-dire que la réponse est positive. Dans ce cas, vous souhaitez demander si le bouton attaché à la broche GPIO 2 est enfoncé.

Ajoutez un bloc Rapsberry Pi de sélection , qui demande si un button is pressed. Définissez le numéro du bouton sur 2.

whenclickedforeverifbutton2ispressed?then

Vous devez maintenant combler le vide après thenavec ce qui se passe si la condition est vraie , c'est-à-dire si le bouton est enfoncé.

Dans cet exemple, la LED clignotera, mais cela pourrait être ce que vous voulez.

Ajoutez des blocs à turn LED 4 on, wait 0.1 seconds(un dixième de seconde), turn LED 4 offpuis à waitnouveau.

whenclickedforeverifbutton2ispressed?thenturnLED4onwait0.1secondsturnLED4offwait0.1seconds

Cliquez sur le drapeau vert et appuyez sur le bouton. Maintenez le bouton enfoncé et voyez ce qui se passe.

Le code indique uniquement d'allumer et d'éteindre la LED lorsque le bouton est enfoncé. Cependant, tant que le bouton est enfoncé, ces instructions se répètent et la LED clignote.

La dernière instruction LED est de turn LED 4 off. Par conséquent, la LED sera toujours éteinte lorsque le bouton n’est pas enfoncé.

Inversez la position des deux turn LED 4 on & offblocs.

Pouvez-vous voir quel sera l’effet ?

whenclickedforeverifbutton2ispressed?thenturnLED4offwait0.1secondsturnLED4onwait0.1seconds

Cliquez sur le drapeau vert, appuyez sur le bouton et voyez ce qui a changé.

Clignotant jusqu'à ce qu'on appuie dessus

Pour votre deuxième projet de contrôle séquentiel, codez la LED pour qu'elle clignote en continu jusqu'à ce que le bouton soit enfoncé.

Pour cela, vous devez d'abord échanger le if... then...bloc contre un if... then... else...bloc.

Vous pouvez réutiliser la majeure partie du code, alors ne le jetez pas. Retirez le button 2bloc de condition et la turn LED 4 on & offséquence. Disposez les LEDblocs comme ils étaient précédemment pour que le LED turns onpremier.

Jetez le if... then...bloc et remplacez-le par un if... then... else...bloc.

whenclickedforeverifthenelsebutton2ispressed?turnLED4onwait0.1secondsturnLED4offwait0.1seconds

Remplacez le button 2bloc de condition hexagonal dans l'espace du nouveau if... then... else...bloc.

Puisque cette séquence éteint la LED lorsque le bouton est enfoncé, placez un turn LED 4 offbloc après le then.

whenclickedforeverifbutton2ispressed?thenturnLED4offelse

Enfin, placez la turn LED 4 on & offséquence dans l'espace ci-dessous else. Cela se produit chaque fois que le bouton n'est pas enfoncé.

whenclickedforeverifbutton2ispressed?thenturnLED4offelseturnLED4onwait0.1secondsturnLED4offwait0.1seconds

Cliquez sur le drapeau vert et voyez ce qui se passe. Que se passe-t-il lorsque vous appuyez sur le bouton ?

Après avoir relâché le bouton, la LED reste-t-elle allumée ou éteinte ? Pouvez-vous comprendre pourquoi ?