CPR TP 1
CPR TP 1
CPR TP 1
1. Introduction
Dans ce TP, nous allons faire une initiation à la plateforme de développement Arduino, où
nous commençons par voir l’interface graphique de l’éditeur sur lequel on écrit le code
source. Par la suite, nous réalisons un simple montage à base de LED (petite ampoule) et la
commander automatiquement.
Le projet Arduino a été inventé par un groupe d’enseignants et d’étudiants d’une école de
design italienne, et ceci dans le but de faciliter le prototypage en électronique à toutes les
tranches d’utilisateurs (i.e. électroniciens, informaticiens, musiciens, etc.).
1
ABAINIA K. TP1- Introduction à l'Arduino
Tableau 1.1. Comparaison entre quelques cartes Arduino [1]
Vu que les microcontrôleurs ne peuvent pas interagir directement avec les ordinateurs, les
cartes Arduino sont dotées d’une puce (ATmega16U2) d’interfaçage et de communication
avec l’ordinateur.
Figure 1.1. Carte Arduino UNO avec étiquetage des ports [2]
A partir de ce TP, nous utilisons la carte Arduino UNO qui est dotée de 14 ports
numériques et 6 ports analogiques (Figure 1.1). Outre le nombre de ports de la carte, elle est
dotée de protocole SPI implémenté en hardware, protocole I2C implémenté en hardware,
signal PWM dans six ports (11, 10, 9, 6, 5 et 3). Elle est dotée également de deux
interruptions (port 2 et 3) et un protocole UART/Serial implémenté en hardware (port 0 et 1).
2
ABAINIA K. TP1- Introduction à l'Arduino
Une fois le câble USB est branché dans l’ordinateur et dans l’Arduino, ce dernier est
alimenté par défaut avec cinq volts (5v) sortant du port USB de l’ordinateur. Sinon, la carte
peut être alimentée par une alimentation externe via une fiche jack ayan un voltage d’entrée
compris entre 5-12 volts, et ce dernier est passé par un régulateur de voltage (typiquement un
circuit L7805CV) pour le réguler à cinq volts. La carte Arduino UNO peut délivrer une
tension de sortie 5v et une autre 3.3v pour alimenter des capteurs et actionneurs fonctionnant
à ces voltages.
Les ports numériques peuvent lire ou écrire une valeur binaire telle que HIGH qui
correspond à TRUE ou1 (ou 5 volt) et LOW qui correspond à FALSE ou 0 (0 volt), tandis que
les ports analogiques lisent une valeur numérique comprise entre 0-1024 ce qui correspond à
un intervalle entre 0-5 volt.
Le logiciel comprend principalement un menu, une barre d’outils, une barre de progression
et trois fenêtres dont la première (couleur blanche) est l’éditeur de texte (ou code source), la
deuxième fenêtre (couleur noire avec texte orange) est le log du processus de compilation et
de télé-versement du programme, et la troisième fenêtre affiche le numéro de la ligne actuelle
(à gauche) et le type de carte sélectionné avec le port COM dédié (à droite). En accédant à la
barre d’outils, on peut bénéficier de quelques raccourcis pour effectuer les opérations
fréquentes telles que la compilation du code source, le télé-versement du programme créé,
l’ouverture d’un fichier, la sauvegarde d’un fichier et la création d’un nouveau projet.
En cliquant sur le menu ‘fichier’, on accède aux opérations de base qui sont communes
entre la plupart des éditeurs (préférences, sauvegarde, ouverture, nouveau, etc.), ainsi on
accède un ensemble d’exemple de codes sources prêts à utiliser (sous-menu ‘exemple’ du
menu ‘fichier’). En cliquant sur le menu ‘édition’, on accède aux opérations d’édition de texte
(copier, coller, remplacer, commenter, etc.).
3
ABAINIA K. TP1- Introduction à l'Arduino
binaire généré par la compilation du code source pour une utilisation externe (fichier portant
l’extension ‘.hex’). Comme l’interfaçage des dispositifs (capteurs et actionneurs) est basé sur
l’utilisation des bibliothèques contenant des fonctions facilitant la programmation, i.e. en
écrivant quelques lignes au lieu des centaines et des milliers de lignes, il y a un sous-menu
‘inclure une bibliothèque’ ou ‘include library’ pour inclure la définition 1 des fonctions
utilisées par une bibliothèque quelconque. En outre, on peut également rajouter une nouvelle
bibliothèque qui n’existe pas parmi l’ensemble des bibliothèques prédéfinies, soit en la
téléchargeant automatiquement du serveur (en cliquant sur ‘gérer les bibliothèques…’ ou
‘manage libraries…’), soit en l’ajoutant manuellement à partir d’un fichier zip (en cliquant
sur ‘ajouter la bibliothèque .ZIP…’ ou ‘add .ZIP library…’).
Figure 1.2. Capture d’écran sur le logiciel Arduino version 1.8.5 pour Windows
Parmi les menus les plus importants, il y a le menu ‘outils’ ou ‘tools’ qui est conçu pour
interagir avec la carte Arduino (Figure 1.3). Plus spécifiquement, à partir de ce menu on peut
choisir le type de carte sur laquelle on veut télé-verser le programme en cliquant sur le sous-
menu ‘Carte’ ou ‘Board’. On a également la possibilité de choisir le numéro de port COM sur
lequel la carte est connectée en cliquant sur le sous-menu ‘port’, car il est évidant qu’on peut
connecter plusieurs cartes Arduino sur le même ordinateur, mais chacune est branchée dans
un port USB différent.
1
La définition des fonctions se trouve dans les fichiers headers portant l’extension .h, et leur implémentation se
trouve dans les fichiers .cpp
2
Un programmateur est un outil pour programmer les microcontrôleurs et les mémoires EEPROM
4
ABAINIA K. TP1- Introduction à l'Arduino
‘AVRISP mkII’). Dans le cas où le microcontrôleur de l’Arduino (i.e. Atmega328) est
remplacé par l’utilisateur, il doit contenir le bootloader d’Arduino pour pouvoir comprendre
les programmes Arduino. Donc, pour faire ceci, on clique sur ‘Graver la séquence
d’initialisation’ ou ‘Burn Bootloader’ pour installer le bootloader dans le nouveau
microcontrôleur qui vient pratiquement vierge (ou vide). On peut lancer le moniteur série (ou
Serial Monitor) et le traceur série (Serial Plotter) à partir du menu ‘outils’ ou ‘tools’, où les
deux outils sont conçus pour interagir en temps réel avec la carte Arduino et lire/écrire des
données via le bus UART ou Serial.
Figure 1.3. Capture d’écran sur le logiciel Arduino IDE. A gauche une illustration du menu
« Sketch » et à droite une illustration du menu « Tools »
Enfin, le dernier menu est le menu ‘Help’ ou ‘Aide’ qui contient un référentiel
d’apprentissage et un guide en cas de soucis de compilation et télé-versement.
4. Fonctions de base
Nous commençons par la première fonction qui permet de configurer les ports de
l’Arduino, soit en entrée (ou input) soit en sortie (ou output). C’est la fonction pinMode(pin,
mode) qui prend en charge de deux paramètres, i.e. le numéro du port (pin) et le mode
(INPUT, OUTPUT ou INPUT_PULLUP). Le mode OUTPUT configure le port en étant
sortie, ce qui veut dire un signal sort du port de la carte vers le dispositif. Les deux modes
5
ABAINIA K. TP1- Introduction à l'Arduino
INPUT et INPUT_PULLUP configurent le port en étant entrée, ce qui veut dire un signal sort
du dispositif vers le port de la carte. Cependant, la différence entre les deux réside dans l’état
du bouton quand il est appuyé, où dans le mode INPUT_PULLUP on lit l’état HIGH quand le
bouton est en repos et l’état LOW quand il est appuyé.
Après la configuration du port, on effectue soit une lecture soit une écriture, et pour faire
cela on utilise des fonctions dépendant du type du port (numérique ou analogique). Pour
envoyer un signal via un port numérique, on utilise la fonction digitalWrite(pin, value) qui
prend en charge un numéro de port et la valeur à écrire (soit HIGH/1 ou soit LOW/0). Bien
évidemment le contraire de la fonction digitalWrite est digitalRead(pin) qui prend en charge
d’un seul paramètre (le numéro du port) et renvoie une valeur booléenne (soit HIGH/1 ou soit
LOW/0).
Les fonctions similaires utilisées avec les ports analogiques sont analogWrite(pin, value)
et analogRead(pin), où le deuxième paramètre de la première fonction est une valeur
numérique entre 0 et 255. La fonction analogRead renvoie une valeur numérique comprise
entre 0 et 1023 ce qui correspond à 0-5v, donc on applique la règle des trois pour trouver le
voltage d’entrée. Par exemple, lorsqu’on lit la valeur 980, elle correspond à 4.7v (962 * 5 /
1023).
Pour faire un délai de retard entre les instructions du programme, on utilise la fonction
delay(milliSeconds) dans laquelle on passe le temps en milli secondes. Cette instruction met
la carte ou le microcontrôleur en repos pendant un moment tout en gardant l’état des ports tels
qu’ils sont avant cette instruction. Donc, elle est très utile dans les protocoles de
communication pour régler la fréquence du signal inter-échangé, ainsi pour faire des
animations (e.g. clignotement d’une LED).
Il y a une autre alternative de la fonction delay et qui travaille sur l’ordre de micro
secondes, c’est la fonction delayMicroseconds(microSeconds) qui reçoit la valeur en micro
secondes comme paramètre. Dans la même famille des fonctions, on trouve la fonction
millis() qui renvoie le nombre de milli secondes passés depuis le démarrage de la carte
Arduino (branchement de l’alimentation).
Enfin, si on veut échanger des données entre la carte Arduino et l’ordinateur en temps réel
via le câble USB en utilisant le bus UART, on a trois fonctions dédiées. La première fonction
est la fonction begin (de l’objet Serial) qui initie la communication avec l’ordinateur, elle
reçoit en paramètre la vitesse de communication en baud (ou bits par seconde). Donc, on fait
appel à begin dans la fonction principale setup(), où on précise la vitesse telle que 4800,
9600, 19200, etc.
Pour écrire une valeur (numérique ou autre) de l’Arduino vers l’ordinateur, ou autrement
on affiche une valeur acquise depuis l’Arduino, on fait appel à la fonction print(value) ou
println(value) appartenant au même objet Serial. Donc, on écrit Serial.print(value) ou
Serial.println(value). On peut même spécifier le format d’affichage tel que BIN (binaire),
OCT (octal), DEC (décimal) et HEX (hexadécimal) en mettant un de ces formats comme
deuxième paramètre de la fonction, par exemple Serial.println(value, HEX). On note que la
6
ABAINIA K. TP1- Introduction à l'Arduino
différence entre les deux fonctions d’affichage print et println réside dans le retour à la ligne
(line feed en anglais) ajouté par la deuxième fonction (println).
7
ABAINIA K. TP1- Introduction à l'Arduino
Pour faire l’inverse et écrire une valeur depuis l’ordinateur vers l’Arduino, ou acquérir une
valeur par l’Arduino depuis l’ordinateur, il y a une multitude de fonctions selon l’usage et
l’application. Par exemple, la fonction Serial.read() lit les données octet par octet et la
fonction Serial.readBytes(buffer, size) lit les données en vrac et les sauvegarde dans un
buffer avec une taille passée comme paramètre. Il y a également deux fonctions qui
convertissent les données d’entrée en valeur numérique entière ou réelle, ces fonctions sont
Serial.parseInt() et Serial.parseFloat(). Donc, on résume les fonctions citées précédemment
dans le Tableau 1.2.
Dans cette section, on fait notre première expérimentation en contrôlant une LED avec
l’Arduino. Donc, dans ce projet nous utilisons un Arduino, une LED 3mm ou 5mm de
diamètre (de n’importe quelle couleur), des fils de prototypage, une plaque d’essai et une
résistance 220 Ohm. En fait, la résistance sert pour protéger la LED contre le survoltage, car
la LED fonctionne sur 3v max et le voltage sortant du port de l’Arduino Uno (5 volts)
l’endommagera au fils du temps.
Figure 1.4. Matériel utilisé pour contrôler une LED 5mm avec l’Arduino
Donc, on relit le pole positif (anode) de la LED à n’importe quel port numérique de
l’Arduino (par exemple le port 9), et le pole négatif (cathode) à une extrémité de la résistance
et l’autre extrémité de celle-ci au GND de l’Arduino (Figure 1.5).
8
ABAINIA K. TP1- Introduction à l'Arduino
Après avoir fait le branchement, on passe à la programmation de la carte Arduino en
utilisant le logiciel Arduino IDE. Donc, une fois le logiciel est démarré, on crée un nouveau
projet et on le nomme « controle_LED ». Bien évidemment le port sur lequel la LED est
branchée doit être configuré en étant sortie, car on a besoin d’un signal qui sort de l’Arduino
vers la LED. Plus précisément, soit il y a un courant sortant qui allume la LED, soit il n’y a
pas de courant et la LED s’éteint.
Donc, la première chose à faire c’est de configurer le port numéro 9 en tant que sortie avec
la fonction pinMode en choisissant le mode OUTPUT. Ensuite, dans la fonction loop, on
allume et éteint la LED avec la fonction digitalWrite en jouant avec HIGH et LOW pour
passer et couper le courant. Il est souhaitable d’ajouter un petit délai entre les deux états de la
LED pour voir le résultat clairement, car si on ne fait pas un délai on risque de ne pas voir la
transition entre les deux états. Une fois le code fait sans erreurs, on le compile et on le télé-
verse vers la carte Arduino. Comme résultat, on obtient une LED clignotante sans arrêt.
Une astuce très pratique pour contourner les erreurs dues aux numéros de ports, notamment
lorsqu’on a plusieurs ports à interagir avec, consiste à définir les numéros de ports dans des
constantes (ligne 1 Figure 1.6) et utiliser des noms au lieu des numéros (ligne 4, 8 et 10
Figure 1.6).
1. #define PIN_LED 9
2.
3. void setup() {
4. pinMode(PIN_LED, OUTPUT) ;
5. }
6.
7. void loop() {
8. digitalWrite(PIN_LED, HIGH) ;
9. delay(1000) ;
10. digitalWrite(PIN_LED, LOW) ;
11. delay(1000) ;
12. }
Figure 1.6. Code source pour clignoter une LED avec l’Arduino
9
ABAINIA K. TP1- Introduction à l'Arduino
Le but est de lire l’état du bouton, et dans le cas où il est appuyé on allume la LED, sinon
celle-ci s’éteint. Donc, on relit l’une des extrémités du bouton à un port numérique différent
du premier, ainsi l’autre extrémité avec le GND de l’Arduino.
La prochaine étape consiste à configurer le nouveau port en étant entrée pour pouvoir lire
des signaux externes, et ceci est effectué en utilisant la fonction pinMode avec le mode
INPUT_PULLUP. Ensuite, à l’intérieur de la fonction loop, on ajoute un test de l’état du
bouton pour savoir s’il est appuyé ou non en utilisant la fonction digitalRead.
1. #define PIN_LED 9
2. #define PIN_BOUTON 3
3.
4. void setup() {
5. pinMode(PIN_LED, OUTPUT) ;
6. pinMode(PIN_BOUTON, INPUT_PULLUP) ;
7. }
8.
9. void loop() {
10. if(digitalRead(PIN_BOUTON) == HIGH)
11. {
12. digitalWrite(PIN_LED, HIGH) ;
13. }
14. else
15. {
16. digitalWrite(PIN_LED, LOW) ;
17. }
18. }
Figure 1.9. Code source pour contrôler la LED avec un bouton poussoir
Le résultat du code de la Figure 1.9 est malheureusement défavorable, car on doit continuer
à enfoncer le bouton pour que la LED reste allumée. Alors pour y remédier, on ajoute une
variable booléenne qui garde l’état de la LED, et au lieu de changer l’état de la LED
directement on inverse l’état de la variable booléenne une fois le bouton appuyé.
Comme expliquez dans le premier TP, le point d’exclamation signifie la négation d’une
valeur booléenne. Donc, la ligne 14 signifie (Figure 1.10) l’inversion de la valeur de la
variable etat_led (1 devient 0 et 0 devient 1). Aussi, dans la ligne 16, on a remplacé la valeur
HIGH et LOW par la variable etat_led, car celle-ci contient soit 1 soit 0 (systématiquement
HIGH ou LOW).
10
ABAINIA K. TP1- Introduction à l'Arduino
7. Implémentation d’un système de switch
Ceci est un exercice à faire par les étudiants eux-mêmes, et consiste à implémenter un
système de switch qui contrôle deux LEDs par deux boutons poussoirs. Lorsque le premier
bouton est appuyé la première LED s’allume et la deuxième s’éteint, et le contraire lorsqu’on
appuie sur le deuxième bouton. Dans le cas où on appuie sur un bouton correspondant à une
LED allumée, alors elle s’éteint (éteindre toutes les LEDs).
1. #define PIN_LED 9
2. #define PIN_BOUTON 3
3.
4. bool etat_led = false ;
5.
6. void setup() {
7. pinMode(PIN_LED, OUTPUT) ;
8. pinMode(PIN_BOUTON, INPUT_PULLUP) ;
9. }
10.
11. void loop() {
12. if(digitalRead(PIN_BOUTON) == HIGH)
13. {
14. etat_led = ! etat_led ;
15. }
16. digitalWrite(PIN_LED, etat_led) ;
17. }
Figure 1.10. Code source amélioré pour contrôler la LED avec un bouton poussoir
Références
11
ABAINIA K. TP1- Introduction à l'Arduino
Annexe
Dans cette section, on fait un petit rappel sur le langage C++ en correspondant les mots
clés réservés et la syntaxe avec ceux de Matlab. Il est toutefois recommandé de maitriser les
bases de Matlab, vu que l’étudiant a déjà étudié le langage Matlab pendant la deuxième année
tronc commun en Sciences et Techniques, où il a appris les bases de Matlab pendant le
premier semestre et a pratiqué le module ‘analyse numérique’ sous Matlab pendant le
deuxième semestre.
1. #include<Wire.h>
2.
3. void setup() {
4. }
5.
6. void loop() {
7. }
8.
9. Figure 1.11. Exemple de code Arduino vide avec l’inclusion d’une bibliothèque
10.
11.
12.
13. 12
14.
ABAINIA K. TP1- Introduction à l'Arduino
15.
16.
2. Déclaration de variables
Contrairement à Matlab dans lequel les variables sont utilisées directement sans
déclaration au préalable et sans type, en C++ on doit déclarer chaque variable qu’on utilise
avec un type bien déterminé selon l’usage et l’application. A cet égard, on trouve plusieurs
types couramment utilisés en Arduino comme résumé dans le Tableau 1.2.
Le choix du type de la variable doit être judicieux, car la mémoire des microcontrôleurs est
très restreinte (2 Kb dans l’Arduino Uno). Plus précisément, lorsqu’on veut déclarer une
variable entière et on sait bien que notre valeur ne dépassera pas 255, il est fortement conseillé
d’utiliser le type byte au lieu le type int, car le premier est de taille 1 octet et le deuxième est
de taille 4 octets. Par exemple, un tableau de type int et de taille 500 occupera tout l’espace de
la mémoire SRAM3, tandis qu’un autre tableau de type byte peut contenir jusqu’à 2000 cases
dans le cas où aucune autre variable est déclarée.
Pour déclarer une variable, on met le type de la variable succédé par un espace, puis le
nom de la variable succédé par un point virgule pour marquer fin à l’instruction. Il est
préférable de donner des noms significatifs aux variables, et dans le cas où le nom est
composé (plusieurs mots) on sépare les mots par des tirets bas ‘_’. Par exemple, pour déclarer
une variable de type byte qui représente l’état d’une LED 4 indicatrice correspondant à un
moteur, on la déclare comme suite :
byte led_moteur ;
La déclaration des tableaux suit le même principe, mais en précisant la taille du tableau
(e.g. nombre de lignes, nombre de colonnes, etc.). Donc, après le nom du tableau et avant le
point virgule, on met des crochets [ ] en précisant la taille à l’intérieur, et on fait cette
manipulation pour chaque dimension. Par exemple, pour déclarer une matrice (tableau de
deux dimensions) de type réel, de 5 lignes et de 7 colonnes, on écrit comme suit :
3
SRAM est la mémoire volatile du microcontrôleur
4
LED est l’abréviation de light emitting diode en anglais et une petite ampoule lumineuse
13
ABAINIA K. TP1- Introduction à l'Arduino
float tableau[5][7] ;
3. Instructions de contrôle
Les instructions de contrôle se divisent en deux telles que les tests et les boucles. En C++,
il y a trois types de tests (if, else et switch) pour effectuer des comparaisons comme Matlab,
mais sans l’instruction end à la fin. Le test if est succédé par des parenthèses ( ) et à l’intérieur
on met la clause (ou condition), puis on écrit l’instruction à exécuter terminée par un point
virgule après la parenthèse fermante. Dans le cas où il y a un ensemble d’instructions à
exécuter si le test est satisfait, on met l’ensemble des instructions entre deux accolades { }
comme illustré par la Figure 1.12 (lignes 3-8).
Les valeurs à tester sont exprimées par des blocs de case (mot clé réservé), où on met le
mot case succédé par la valeur (numérique ou caractère seulement) et deux points ‘ :’.
Ensuite, on met les instructions à exécuter et à la fin on termine avec l’instruction break pour
marquer fin aux tests (Figure 1.13). Il faut noter que si on ne met pas l’instruction break, le
programme exécute les instructions du prochain bloc case et continue à faire ça jusqu’à
trouver l’instruction break ou arriver à la fin (l’accolade fermante). Ce dernier cas est plus
14
ABAINIA K. TP1- Introduction à l'Arduino
pratique lorsqu’on veut traduire le ‘ou’ logique dans switch vu que ce n’est pas autorisé
qu’avec le test if. Par exemple, si on a un test if(variable==3 || variable ==11), on traduit
cela par deux blocs case sans mettre break à la fin du premier (Figure 1.7).
1. if(variable == 3) action1() ;
2. if(variable == 5) action2() ;
3. if(variable == 10) action3() ;
4.
5. switch(variable)
6. {
7. case 3 :
8. action1() ;
9. break ;
10. case 5 :
11. action2() ;
12. break ;
13. case 10 :
14. action3() ;
15. break ;
16. }
17.
18. Figure 1.13. Exemple de plusieurs tests if et leur conversion en test switch
19.
20.
1.
21. switch(variable)
2.
22. {
3.
23. case 3 :
4.
24. case 11 :
5.
25. action() ;
6.
26. break ;
7.
27. }
8.
28.
9.
29. Figure 1.14. Exemple d’utiliser un ‘ou’ logique dans le test switch
10.
30.
11.
31. C++ les deux boucles (for et while) existent avec une syntaxe différente à celle de
En
12.
32.
Matlab.
33. Par exemple, la boucle for en C++ contient trois parties séparées par des points
13.
virgules
14. à l’intérieur d’une parenthèse. Dans la première partie, on déclare et on initialise les
15.
variables
16. à utiliser dans la boucle, la deuxième partie représente le critère d’arrêt
(généralement
17. une condition) et la troisième partie c’est la partie incrémentation et dans
18.
laquelle on met les variables qui s’incrémentent à chaque itération (Figure 1.15).
19.
20.
1.
21. for(int i=0 ; i < 10 ; i++)
2.
22. {
3.
23. }
4.
24.
5.
25. while (condition)
6.
26. {
7.
27. }
8.
28.
9.
29. do
10.
30. {
11.
31. ….
12.
32. } while (condition) ;
13.
33.
Figure 1.15. Exemple d’utilisation de la boucle for, la boucle while et la boucle do while
14.
15.
16.
17.
18.
19. 15
20.
ABAINIA K. TP1- Introduction à l'Arduino
21.
22.
La boucle while est quasi-similaire à celle de Matlab, sauf la condition est mise entre
parenthèse, ainsi le bloc d’instructions est mis entre deux accolades (le cas de plusieurs
instructions). Il existe une autre variante de la boucle while qui s’appelle do while, et son rôle
consiste à exécuter le bloc d’instructions au moins une fois avant de tester la condition
(contrairement à la boucle while).
4. Fonctions et procédures
1. void maProcedure() {
2. }
3.
4. void maProcedure_2(int param_1, bool param_2) {
5. }
6.
7. int maFonction(int param_1, bool param_2) {
8. ….
9. return valeur ;
10. }
11.
Figure 1.16. Exemple de déclaration de procédure sans paramètres, avec paramètres et
12.
13.
déclaration de fonction
14.
15.
Pour
16. déclarer une procédure, on met le nom de la procédure précédé par le type void
(signifie
17. vide en français) et succédé par une parenthèse contenant les paramètres (optionnels
18.
selon l’application). La déclaration d’une fonction est similaire à la déclaration de procédure,
19.
mais20.en utilisant un type différent de void, et à la fin du programme (de la fonction) on
21. une valeur en utilisant le mot clé return suivi par la valeur/variable (Figure 1.16).
renvoie
22.
23.
Pour appeler une fonction/procédure prédéfinie ou définie par l’utilisateur, on l’appelle
24.
juste25.avec son nom comme le cas du Matlab et on passe les paramètres (dans le cas échéant).
26.
Enfin,
27. on rappelle que chaque instruction en C++ se termine par un point virgule ‘ ;’, sauf
28.
les tests, la boucle for, la boucle while et la déclaration des fonctions.
29.
30.
31.
32.
33.
16
ABAINIA K. TP1- Introduction à l'Arduino