vendredi 3 mars 2017

S4A (Scratch pour Arduino)

S4A (Sratch for Arduino) est une version de Scratch qui permet d’interagir avec une carte Arduino en manipulant des blocs de codes dans un environnement graphique.  Puisque l’utilisateur n’a pas à écrire la moindre ligne de code, ce type de logiciel est particulièrement approprié pour les novices en programmation et, de façon particulière, les enfants.

J’ai déjà eu quelques occasions de parler de la version Rasbperry Pi  de Scratch, qui permet d’interagir avec les pins GPIO du Raspberry Pi. De plus, il y a quelques semaines, je vous avais présenté Blockly@rduino, qui poursuit le même objectif de faciliter la programmation d’une carte Arduino grâce à une interface graphique composée de blocs à imbriquer.

Attention à une différence importante entre Blockly@rduino et S4A:  alors que Blockly@rduino traduit les instructions formées par les blocs pour en faire un véritable sketch Arduino que nous pouvons ensuite téléverser dans le microcontrôleur, S4A se contente d’envoyer en temps réel des instructions à une carte Arduino dans laquelle on a préalablement téléversé un sketch qui lui permet d’interpréter les instructions provenant de S4A (sur cet aspect, S4A ressemble donc davantage à Firmata. qui nous permet entre autres choses de piloter une carte Arduino au moyen d’un script en Python exécuté sur un ordinateur).

Faisons maintenant un petit essai de S4A, pour voir…

1) Téléchargement du logiciel S4A sur un ordinateur

Attention:  même si la version conventionnelle de Scratch est déjà installée sur votre ordinateur, elle ne sera ici d’aucune utilité.  Pour communiquer avec une carte Arduino, vous devez installer le logiciel S4A, qui comporte des fonctionnalités qui ne se trouvent pas sur Scratch.  Pour ce faire, rendez-vous sur la page web de S4A, et cliquez sur le bouton “Téléchargement”.  Le logiciel existe en version Windows, MacOS et Linux (incluant Raspbian), et c’est évidemment gratuit.



2)  Installation du firmware sur une carte Arduino

Comme je le disais plus haut, S4A se contentera d’envoyer des instructions à l'Arduino par le port USB.  Pour que la carte soit en mesure d’interpréter correctement ces instructions, nous devons préalablement y téléverser le sketch "S4AFirmware16.ino" au moyen de l’IDE Arduino.  Ce sketch se trouve ici.  (Je suppose que l'IDE Arduino se trouve déjà sur votre ordinateur, et que vous savez comment l'utiliser...à moins que vous soyez vraiment arrivé ce sur blog par accident!).



3)  Quelques contraintes

S4A est officiellement compatible avec les cartes de modèle Uno (ainsi qu’avec les antédiluviennes Duemilanove et Diecemila):  aucune garantie de fonctionnement en ce qui concerne les autres modèles.

Lors d'une utilisation avec S4A, la vocation des pins de votre Arduino ne peut pas être modifiée:
  • Les pins 2 et 4 sont obligatoirement des entrées numériques
  • Les pins 5, 6 et 9 sont obligatoirement des sorties PWM
  • Les pins 10, 11 et 13 sont obligatoirement des sorties numériques
  • Les pins 4, 7, 8 et 12 sont réservées à la connexion d’un servomoteur à rotation continue
  • Les 6 entrées analogiques ne peuvent pas être converties en autre chose que des entrées analogiques
Admettez que ça limite un peu les possibilités…

4)  Démarrage de S4A




Dès le démarrage, le logiciel se met à la recherche de votre carte Arduino.  Si elle est branchée à l'ordinateur, elle sera automatiquement détectée (nul besoin de choisir soi-même le bon port série). Là où on voit habituellement le chat de Scratch (un "lutin", dans le jargon de Scratch), le dessin d'une carte Arduino apparaît, ainsi qu'un tableau montrant en temps réel l'état des entrées analogiques et numériques.


Pendant ce temps, les LEDs TX et RX de la carte clignotent frénétiquement, puisque la carte communique sans arrêt avec le logiciel.

5)  Premier exemple:  Une LED qui clignote

Pour vérifier que ça fonctionne, commençons par le traditionnel clignotement de la LED intégrée à la carte (qui correspond à la pin 13).

Il s'agit de faire glisser quelques blocs empruntées au catégories "Contrôle" et "Mouvement".



La routine s'exécute lorsque vous cliquez sur le drapeau vert, dans le coin supérieur droit de la fenêtre.

6) Deuxième exemple:  une LED commandée par un bouton

Dans ce deuxième exemple, une LED branchée à la pin 13 s'allume lorsqu'on appuie sur un bouton branché à la pin 2 (les schémas de circuit qui figurent sur la page web de S4A proposent de brancher la LED directement, sans résistance de protection...je ne le conseille pas...).


Là encore, le programme démarre lorsqu'on clique sur le drapeau vert.



7) Troisième exemple:  Un potentiomètre qui contrôle la taille du lutin Arduino

Finalement, amusons-nous à varier la taille du lutin Arduino (le dessin d'une carte Arduino dans la fenêtre du logiciel S4A) en tournant un potentiomètre branchée à l'entrée analogique A0:




Puisque l'entrée A0 peut prendre n'importe quelle valeur située entre 0 et 1023, le dessin peut prendre n'importe quelle taille de 0 jusqu'à 102% de sa taille d'origine.

Analog0 = 1023:


Analog0 = 401:

Analog0 = 0:




Conclusion:  C'est effectivement très facile d'interagir avec l'Arduino de cette façon, particulièrement si vous avez déjà un peu d'expérience avec Scratch (mon fils, qui a 13 ans, a appris à programmer avec Scratch à l'école).  Vous pouvez obtenir des résultats rapidement, en ne vous préoccupant que de la logique du code plutôt que de la syntaxe d'un langage de programmation.  Par contre, c'est dommage que la vocation des pins (entrée ou sortie) ne puisse pas être modifiée au besoin.

Yves Pelletier   (TwitterFacebook)

1 commentaire: