Un programme Arduino "utile" pour le quotidien des profs... :-)

Que ce soit pour faire un rappel du cours passé, pour aller corriger un exercice ou autre, la désignation d’un élève a souvent été pour moi une source de questionnement : Dois-je interroger les bons élèves pour une réponse rapide ou plutôt ceux en difficulté afin de les aider ? Quoi qu’il en soit, combien de fois n’ai-je pas eu en réponse « Eh monsieur, c’est pas juste, parce que... » ?

Pour m’affranchir de ces questionnements, il me fallait donc trouver un moyen de pouvoir désigner un élève de façon authentiquement aléatoire (ou à défaut, apparaissant comme telle pour les élèves...).
Après avoir éliminé les méthodes dans le genre « je ferme les yeux et je pointe au hasard un nom sur la liste avec mon crayon, attention...voilà ! » je me suis attelé à la rédaction d’un programme associé à un montage Arduino rudimentaire permettant de répondre aux exigences, que l’on peut résumer comme suit :

  • désigner sur commande un élève au hasard dans une liste pré-enregistrée,
  • empêcher ce hasard de sur-interroger certains élèves au sein d’une même séance,
  • utiliser des composants Groove pour Arduino (car courants et pratiques à manipuler mais l’adaptation pour Arduino seul est aisée).

Après plusieurs essais et améliorations successives, le programme obtenu est disponible ici et il nécessite :

  • Une carte Arduino Uno (par exemple, d’autres versions feraient l’affaire)
  • Un module Groove Base Shield
  • Un bouton-poussoir Groove (sur la fiche D4)
  • Un écran Groove-LCD RGB Backlight (sur une sortie I2C)

Le fonctionnement du programme est assez simple : les prénoms et noms des élèves sont stockés dans 2 tableaux, prenom et nom , ayant pour tailles l’effectif de la classe ( taille ). (Pour la démonstration, la classe fictive est composée des 29 prestigieux participants du congrès de Solvay de 1927). Un troisième tableau, passage , de même taille, stocke le nombre de passages de chaque élève. Lorsque l’interrupteur est pressé, un nombre aléatoire randNumber est généré dans l’intervalle [0, taille-1]. Si le nombre de passages passage[randNumber] de l’élève correspondant est inférieur au nombre maximal interro de passage de la classe, son nombre de passage est incrémenté puis son prénom et son nom sont affichés à l’écran. Dans le cas contraire, un autre nombre aléatoire est tiré jusqu’à ce que soit satisfaite la condition sur le nombre de passages.

Figure 1 : Montage Arduino complet

Figure 2 : Montage conditionné

L’usage en classe m’a permis de faire les observations suivantes :

  • Les élèves sont assez amusés par le concept (leur prof aussi d’ailleurs !) et par suite, ils se prennent au jeu, acceptant très bien d’être désignés lorsque leur nom apparaît.
  • Le fait qu’une remise à zéro du nombre de passages soit effectuée à chaque arrêt du microcontrôleur (c’est à dire entre chaque séance) m’a initialement gêné. Toutefois, dans une classe comme la mienne où l’effectif est de 45 élèves, elle permet d’éviter les calculs dans le genre « C’est bon j’ai été interrogé, maintenant je peux me reposer pendant les 44 autres passent ».
    (Pour ceux qui souhaiteraient que la mémoire soit maintenue d’une fois sur l’autre, il est possible, par exemple, de stocker le tableau passage sur une carte SD, via un module SD Card Shield V4 par exemple).
  • L’écran étant assez petit, il n’est que peu lisible par les élèves. Ainsi, on peut « tricher » en ré-appuyant discrètement sur le bouton pour ne pas interroger un élève dont on sait qu’il n’est actuellement pas bien dans ses baskets par exemple. Cette « astuce » est toutefois à manier avec parcimonie pour ne pas risquer de décrédibiliser tout le système…

Des améliorations sont toujours envisageables comme par exemple

  • la sélection d’une classe ou d’un groupe lors de la mise en route, afin de pouvoir utiliser le système pour tous ses groupes sans avoir à téléverser de nouveau code à chaque changement. La mémoire disponible risque cependant de limiter le nombre de tels groupes.
  • ou encore la possibilité de passer un nom d’élève, pour qu’il revienne plus tard. Ceci éviterait d’avoir recours à l’astuce précédemment exposée.

Je reste d’ailleurs preneur de toute proposition d’amélioration ou rapport de bug.

En guise de conclusion, j’adresse mes remerciements aux collègues du lycée Chaptal de St Brieuc et de l’UdPPC Bretagne dont les commentaires, encouragements et sourires amusés ont fortement contribué au développement de ce petit prototype, ainsi qu’à Marie A. sans laquelle ce projet serait resté au stade d’idée pour encore longtemps.

Bonne utilisation !
Benoît Delépine
benoit.delepine@ac-rennes.fr