jeudi 19 janvier 2017

Blockly@rduino: programmez votre Arduino par glisser-déposer

Vous pensez que l'Arduino est facile à programmer?  Je suis bien d'accord avec vous, mais il faut quand même admettre qu'il est nécessaire d'apprendre la syntaxe (en anglais), ne pas oublier les points virgules à la fin des lignes, éviter les coquilles typographiques (au fait, c'est digitalread, DigitalRead, Digitalread, ou digitalRead?), etc.

Conçu par Sébastien Canet pour être utilisé en salle de classe, Blockly@rduino a pour objectif de faciliter la programmation d'une carte Arduino.  Pour construire votre programme, il s'agit de d'agencer, au moyen de la souris, des blocs de codes déjà prêts, rédigés en français, à l'intérieur même de votre fureteur web (Chrome ou Firefox).

Pour accéder à Blockly@rduino sur le web, vous pouvez aller sur le site technologiescollege ou encore sur ce miroir québécois.  Vous n'avez pas besoin de vous inscrire, et il n'y a rien à installer sur votre ordinateur.

Vous devriez voir s'afficher cette page:


Vous pouvez faire disparaître le dialogue de bienvenue (bouton "J'ai compris, merci").

Pour sélectionner votre modèle de carte Arduino, vous cliquez sur le petit bouton jaune, en bas à gauche, qui présente la silhouette d'une roue d'engrenage.  Le même dialogue vous permet également de sélectionner la langue d'affichage.


De retour sur la page principale, cliquez sur le bouton jaune, en haut à gauche, intitulé "configurer les blocs".  Dans le dialogue qui apparaît, sélectionnez "TOUT".


À moins d'avoir des besoins très spécifiques, vous pouvez vous contenter des catégories qui sont déjà cochées par défaut.



Vous devriez maintenant voir s'afficher une liste de catégories:  logique, boucles, maths, variables, procédures et fonctions, arduino.


Comme premier exemple, nous allons tenter  le traditionnel clignotement de la LED intégrée à la carte.

Je clique sur la catégorie Arduino:



Parmi les choix proposés, je choisi le bloc "initialisation (setup)/répéter indéfiniment (loop)", qui constitue la base habituelle de tout programme Arduino.   Je vais glisser ce bloc dans l'espace de travail (la moitié droite de la fenêtre).

Je veux d'abord que la LED soit allumée.  Je clique sur la catégorie "sorties":


...dans laquelle je choisis le bloc "mettre la DEL sur la carte à l'état logique 1 (état haut)".  Je fais glisser ce bloc à l'intérieur de ma boucle:

J'aimerais que la LED demeure allumée pendant 1 seconde.  Je vais donc dans la catégorie "temps et durées":



Et cette fois je choisis le bloc "faire une temporisation (en ms) de 1000":

(le nombre 1000 pourrait être remplacé par autre chose, mais je le laisse tel quel, puisqu'il me convient).

Ensuite, je veux que la LED s'éteigne, j'ajoute donc un nouveau bloc tiré de la catégorie "sorties":


...mais je remplace l'état "1 (état haut)" par "0 (état bas)":

Et on ajoute un autre délai d'une seconde:

Je clique sur le bouton "code Arduino", pour voir à quoi ressemble mon sketch:


C'est bien ce que je voulais.  Remarquez que la pin 13 (qui contrôle la LED intégrée à la carte) à été automatiquement déclarée en sortie à l'intérieur de setup.

Il reste à téléverser mon sketch dans la carte.  En principe, il est possible de le faire directement à partir de Blockly@rduino à la condition d'installer le plugin de Codebender.  Je n'ai pas testé cette fonction; je ne sais pas si elle fonctionne encore, suite à la fermeture de Codebender.  Par contre il y a un bouton "sauver le code en INO" qui fonctionne très bien:  votre sketch est enregistré sous la forme d'un fichier .ino que vous pouvez ensuite ouvrir avec l'IDE conventionnel.  Vous pouvez aussi copier le sketch et le coller dans l'IDE.

Maintenant, je tente un deuxième sketch:  une LED (branchée à la pin numéro 4) sera contrôlée par un bouton (branché à la pin numéro 3).  Je commence donc avec la structure générale du programme.



J'ai besoin d'une boucle "si", que je trouve, logiquement, dans la catégorie "logique":




En fait, j'aimerais faire une bouche de type "if...else":  si bouton enfoncé, LED allumée, sinon, LED éteinte.  Pour ajouter cette partie supplémentaire, je clique sur le petit bouton bleu en forme de roue d'engrenage:

et dans le nouveau rectangle qui est apparu, je glisse "sinon" sous "si":

...et je clique à nouveau sur le bouton en forme d'engrenages pour faire disparaître ce rectangle.

J'ajoute maintenant un opérateur d'égalité, trouvé dans la catégorie logique:

...et j'y insère un bloc "'l'état logique de la broche Numérique", trouvé dans la catégorie "entrées":

J'indique le numéro de la broche à laquelle j'ai branché mon bouton:

Et un bloc d'état logique trouvé dans la catégorie "logique":

Dans la catégorie "sorties", je trouve un bloc permettant de modifier l'état d'une sortie numérique:


La LED sera branchée à la broche numéro 4:

Sinon, on éteint la LED:


Un coup d'oeil au sketch (bouton "code Arduino"):


Ça correspond bien à ce que je voulais faire (encore une fois, la pin 3 a été déclarée en entrée et la pin 4 a été déclarée en sortie automatiquement, sans que j'aie à le faire moi-même à partir des blocs).

Il ne me reste plus qu'à enregistrer le fichier .ino afin de l'ouvrir avec l'IDE Arduino.

Voilà, il ne s'agit bien sûr que d'un survol rapide.  Il semble y avoir une grande quantité de blocs spécialement conçu pour utilisation avec des capteurs ou actuateurs spécifiques, permettant de simplifier le code au maximum.

Pour en savoir plus, vous pouvez consulter le wiki, visiter le forum, télécharger les fichiers sur GitHub pour installation locale, visionner une présentation vidéo très détaillée,  voir comment c'est utilisé dans des ateliers de robotique pour enfants, ou lire cet article par Daniel Pers.

Attention de ne pas confondre Blockly@rduino avec d'autres logiciels similaires portant des noms presque identiques:  Blocklyduino est une vieille version qui a servi de départ à Blockly@rduino. Mais Ardublockly n'est pas exactement la même chose.  Puis il y a aussi eu Ardublock...


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...