Algorithmique Et ArduinoV2
Algorithmique Et ArduinoV2
Algorithmique Et ArduinoV2
Algorithmique et Arduino
Programmation d’une carte Arduino
On peut actuellement programmer une carte Arduino de multiples manières, mais celles identifiées pour cette
formation sont :
- mBlock ;
- Ardublock ;
- ide Arduino.
Aucun de ces environnements de programmation n’est explicitement au programme. Ainsi, il n’est pas
nécessaire de formaliser les connaissances et compétences liées à ces environnements de programmation.
Par contre, elles peuvent aider les élèves à acquérir la pensée algorithmique, pour peu que l’on fasse l’effort
de prendre du recul sur la programmation, en faisant le lien avec les concepts algorithmiques fondamentaux.
En effet, les environnements de programmation sont appelés à évoluer, à devenir de plus en plus
ergonomiques. Par contre, la pensée algorithmique, elle, restera.
Cependant, il est absolument indispensable par ailleurs de formaliser les notions techniques relatives
La notion d'événement est primordiale en algorithmique. Un événement est un changement d’état d’une
variable extérieure au programme, qui déclenche le lancement de code informatique.
Dans l’exemple ci-dessous, sous mBlock un appui sur les flèches haut et bas allume ou éteint la lampe :
ETEINDRE la lampe
appui sur Bouton Poussoir ON et appui sur Bouton Poussoir OFF sont des évènements, de même pour
appui sur flèche haut et appui sur flèche bas.
Remarque : dans Ardublock, il est plus difficile de programmer un évènement, ce qui est un inconvénient.
Une action est une activité d’un programme. Elle est exprimée par un verbe à l’infinitif.
Les exemples ci-dessous permettent de jouer une note avec un buzzer.
Sous mBlock :
Sous Ardublock :
En C :
On remarque que sous Ardublock, les actions ne sont pas forcément écrites avec un verbe à l’infinitif, ce qui
peut prêter à confusion pour les élèves. Par contre en C, c’est bien le cas.
REPETER indéfiniment
JOUER un son
FIN REPETER
Attention, les élèves confondent fréquemment l'infinitif et le participe passé pour les verbes du premier groupe,
ce qui rend l’algorithme incompréhensible. Exemple : Jouer, joué, Connecter, connecté ; Avancer, avancé.
La structure SI ALORS SINON permet de prendre des décisions quant à l’action à réaliser.
On teste une condition qui doit être soit vraie, soit fausse. (C’est une condition binaire)
Exemple avec une orientation de servomoteur après appui sur bouton poussoir branché sur D8 :
Sous mBlock :
Sous Ardublock :
REPETER indéfiniment
SI Appui sur le bouton branché sur D8 ALORS
Orienter le servomoteur à 90°
SINON
Orienter le servomoteur à 135 °
FIN SI
FIN REPETER
Programmation Arduino Page 5/17
Le diagramme d’activité associé est :
Appui sur
BP D8 Pas appui sur BP D8
(Appui sur Bouton Poussoir D8 = VRAI) est une condition, soit vraie, soit fausse.
Attention : pour tester une condition, il est important de connaître le type de donnée que l’on manipule (voir
plus bas)
Lorsque le programme évolue, il affecte une valeur dans cet espace, qui peut changer au cours du temps. On
dit alors que la valeur est affectée à la variable.
mBlock :
Ardublock :
REPETER indéfiniement
NiveauSonore Capteur son
SI NiveauSonore < 100 ALORS
AFFICHER “Niveau sonore acceptable”
SINON
AFFICHER “Trop de bruit”
FIN SI
FIN REPETER
Il est très important de connaître le type de la variable quand l’on veut faire un test.
● un binaire sera comparé à 0/1, ou VRAI/FAUX ;
● un entier, sera comparé à un nombre ;
● une chaîne de caractère sera comparée à du texte.
Remarque :
- dans mBlock, le type de la variable n'apparaît pas explicitement.
- dans Ardublock, le type de la variable est indiqué par la forme des bords (Arrondi pour du binaire,
triangulaire pour des entiers, angles droits pour des chaînes de caractère)
Attention :
• Dans Ardublock, le nom de la variable est toujours un peu plus foncé que la valeur de la variable. C’est
un moyen de les reconnaitre.
• Dans Ardublock, il existe des types de variables que l’on utilisera rarement au niveau collège (long et
décimal notamment)
Par exemple, sous AppInventor, pour envoyer les codes on utilise invariablement :
Et sous Ardublock :
Carte
Pile moteur Moteur Réducteur
Stocker Distribuer Convertir Moduler
La carte Arduino présente des entrées et des sorties, visibles dans le diagramme des blocs internes du robot.
Il est nécessaire de caractériser. Ce n’est pas si simple que cela et c’est un passage obligatoire
obligatoi ! ! ! !
Si l’on branche une carte Grove dessus, on a accès aux entrées (pas toutes). Chaque
que connectique Grove
propose l’alimentation pour son module.
Mais attention !!! Grove a apposé un grand repère D2 en bas de chaque connectique, qui peut prêter à
confusion.
La carte Arduino comporte 6 entrées analogiques, qui convertissent une tension de 0 à 5V en un code allant
de 0 à 1023 : Codage analogique (INT)
Codage analogique = f(Tension
ension entrée)
1023
5V
0 Tension entrée (V)
Exemples :
• Capteur de luminosité ;
• Potentiomètre.
La
a valeur renvoyée sera comprise entre 0 et 1024.
Si Arduino rencontre
re cette instruction, il saura que D2 est une sortie :
5V
Tension sortie = f(Codage
Codage analogique)
analogique
255
0 Codage analogique (INT)
Pour cela, Arduino utilise la technique dite du PWM (Pulse Width Modulation) : la valeur de sortie bascule de 0
à 5V, et la valeur moyenne donne la tension de sortie apparente
apparent :
Structure interne d’un servomoteur. Pour un servomoteur à rotation continu, l’axe entre le potentiomètre et la
sortie moteur est coupée.
Chaque équipement possède son adresse sur le bus I2C. Le protocole est capable de faire dialoguer Arduino
avec n’importe lequel de ces équipements.