Arduino – Hello world!

17 juillet 2021
+

Contenu


1 – Allumer la DEL sur D13

En utilisant un module de prototypage Arduino Uno, l’environnement intégré de développement Arduino (IDE) ainsi que quelques instructions en langage C, nous allons changer l’état (ON/OFF) de la diode émetteuse de lumière incorporée au Arduino Uno et reliée à la broche digitale numéro 13.


Action 1.1 – Créer un nouveau projet Arduino IDE, Option menu Fichier/Nouveau:

Action 1.2 – Analyser le code de départ; les fonctions setup() et loop()

Action 1.2.1 – Comprendre le rôle des fonctions setup() et loop()

Action 1.3 – Insérer les lignes 2 et 5, fonctions pinMode() et digitalWrite()

Au besoin, copier/coller ->

void setup() {
  pinMode(13, 1);
}

void loop() {
  digitalWrite(13, 1);     
}

Action 1.4 – Comprendre le rôle de la fonction pinMode()

La fonction pinMode() permet d’indiquer si une broche digitale du MCU sera utilisée en mode d’entrée (INPUT/lecture) ou en mode de sortie (Output/écriture).

La syntaxe d’utilisation est:

pinMode(numéroDeLaBroche [0..13], ModeUtilisation [0 pour entrée, 1 pour sortie])

Par exemple, pour placer la broche digitale numéro 5 en lecture (entrée):

pinMode(5,0);

Pour placer la broche digitale numéro 13 en mode écriture (sortie):

pinMode(13, 1);

NOTE: pinMode() ne changera pas l’état de la broche, seulement son mode de fonctionnement.

Pour lire ou écrire une valeur sur une des broches du MCU, il faut utiliser la fonction digitalWrite().


Action 1.5 – Comprendre le rôle de la fonction digitaleWrite()

La fonction digitaleWrite() permet de changer l’état de sortie d’une broche.

Par exemple, elle est utilisée pour allumer (mettre en marche) ou éteindre un objet connecté à une broche digitale. Cela pourrait être une diode lumineuse, un relai, …

La syntaxe d’utilisation est:

digitaleWrite(numéroDeLaBroche [0..13], État [0 pour Éteint/OFF, 1 pour Allumé/ON])

Par exemple, pour allumer l’objet connecté la broche digitale numéro 13:

digitaleWrite(13, 1);

Pour éteindre l’objet connecté la broche digitale numéro 13:

digitaleWrite(13, 0);

Action 1.6 – Compiler et téléverser le projet vers l’Arduino

NOTE: À cette étape, le module Arduino Uno doit-être relié à l’ordinateur via le port USB. Il devrait alors être reconnu par l’ordinateur et disponible via la liste de sélection de modules. Suivre les directives de l’enseignant pour le branchement en classe.

Action 1.7 – Observer le résultat sur le module Arduino Uno

Réalisé avec https://www.tinkercad.com/

2 – Utilisation de la fonction delay()

Action 2.1 – Comprendre la fonction delay()

La fonction delay() permet de faire une pause de n millisecondes à l’endroit du programme où elle sera utilisée.

Par exemple, le programme suivant:

Lever la main;
delay(1000);
Baisser la main;

Produira une main levée pendant une (1) seconde.


Action 2.2 – Faire clignoter la DEL du module, renseigner le programme suivant,

void setup()
{
  pinMode(13, 1);
}

void loop()
{
  digitalWrite(13, 1);
  delay(500);
  digitalWrite(13, 0);
  delay(500);
}

Action 2.2 – Compiler et téléverser le programme vers le module Arduino:

Action 2.3 – Examiner le résultat sur le module Arduino:


3 – Documentation du code

En entreprise, la documentation du code est habituellement prescrite. Imaginez un algorithme de code de votre cru, complexe et long, qui devra être mise à jour par un autre programmeur.

Il est important de laisser le plus d’information possible, sous forme de commentaires, dans le code.

Pas de craintes, les commentaires ne seront pas incorporés dans la version compilée du projet.

Selon les entreprises, les normes et standards de documentation peuvent varier.



Action 3.1 – Étudier un exemple classique de documentation

Voici le code précédent, documenté de façon classique:

// Cette ligne est un commentaire.  Elle ne sera pas exécutée.
// À vrai dire, elle ne fera même pas partie du programme final ;-)

// Ce qui suit est aussi un commentaire:

/* 
   -----------------------------------------------------------------------
   Projet:         Introduction à Arduino
   Nom du fichier: exemple01.uno
   Auteur:         Alain Boudreault
   Date:           2021.07.17
   -----------------------------------------------------------------------
   Description:    Petit programme qui allume la DEL intégrée au
                   module Arduino Uno sur la broche numéro 13.
   -----------------------------------------------------------------------
   M-A-J:          2021.07.26 - Par A.B - Modification du délai ON/OFF
   -----------------------------------------------------------------------
*/

// DÉBUT du code -->

// Cette fonction sera exécutée une seule fois, au démarrage du programme.
// Elle sert à renseigner, entre autre, la fonction des différentes
// broches du MCU.
void setup() {  // Ceci est un commentaire de bout de ligne
  // Initialiser la broche digitale numéro 13 en sortie (OUTPUT)
  // OUTPUT = 1, INPUT = 0
  pinMode(13, /* 0=INPUT */ 1); // Exemple d'un commentaire dans le code
} // FIN de setup()

// Cette fonction sera exécutée en boucle tant que le module Arduino sera sous tension.
void loop() {
  digitalWrite(13, 1);   // Envoyer l'état '1/ON/Allumé) à la broche 13
  delay(500);            // Attendre 500 millisecondes (.5 seconde)
  digitalWrite(13, 0);   // Envoyer l'état '0/OFF/Éteint) à la broche 13 
  delay(500);            // Attendre 500 millisecondes (.5 seconde)
} // FIN de loop()

// -----------------------------------------------------------------------
// FIN du fichier
// -----------------------------------------------------------------------

4 – Utilisation de MACROs

Dans le programme permettant de faire clignoter une DEL connectée à la broche D13, avec un intervalle de 500 millisecondes, nous avons inséré les valeurs de la période et de la broche directement dans les instructions.

Par exemple,

delay(500);

Pour modifier le délai ON/OFF de la DEL, il faudra localiser toutes les occurrences de delay(500) et faire les modifications du code source.

Et si voulions faire clignoter une DEL connectée à une autre broche que la D13?

Par exemple, une DEL sur la broche D5?

Il faudrait alors modifier le code suivant:

pinMode(13, 1);
...
digitalWrite(13, 1);
...
digitalWrite(13, 0);

De la façon suivante:

pinMode(5, 1);
...
digitalWrite(5, 1);
...
digitalWrite(5, 0);

De plus, un programmeur non formé pour Arduino, aurait de la difficulté à comprendre ce que nous désirons obtenir avec l’instruction:

digitalWrite(5, 1);

Et si nous pouvions écrire ceci à la place:

digitalWrite(DEL_ROUGE, ALLUMER);

Avec le language C, nous avons les macros pour nous permettre de remplacer des expressions peu significatives par des compositions plus descriptives.

Elles sont définies au début d’un programme, grâce à l’énoncé #define, de la façon suivante:

#define NOM_CONSTANTE   valeur
#define PI              3.141592
#define LED_ROUGE       13

NOTE: Il faut insérer au moins un espace (il peut y en avoir plus) entre le nom de la macro et sa valeur.

Action 4.1 – Analyser le code source suivant:

// Les MACROs sont définies au début du programme, avant toutes fonctions!
// La convention dicte de les nommer avec des caractères MAJUSCULES

#define DEL_ROUGE 13     // La broche de la DEL du projet
#define SORTIE    1
#define ALLUMER   1
#define ETEINDRE  0
#define DELAI    500     // Le délai de transition entre ON/OFF de la DEL

// Programmer les états de départ.
void setup() {
  pinMode(DEL_ROUGE,    // Initialiser la broche digitale DEL_ROUGE
          SORTIE);      // en SORTIE   
} // FIN de setup()

// Boucle principale de notre application
void loop() {
  digitalWrite(DEL_ROUGE, ALLUMER);   // Allumer la DEL
  delay(DELAI);                       // Attendre DELAI de temps
  digitalWrite(DEL_ROUGE, ETEINDRE);  // Éteindre la DEL
  delay(DELAI);                       // Attendre DELAI de temps
} // FIN de loop()

Action 4.2 – Remplacer le code présent dans l’éditeur Arduino par celui du bloc précédent. Compiler et téléverser.


Maintenant, pour changer la période du clignotement de la DEL, il suffit de redéfinir la MACRO DELAI par

#define DELAI    200

Action 4.3 – Modifier la définition de DELAI pour 100. Compiler et téléverser.


Action 4.4 – Se renseigner sur les constantes disponibles avec l’IDE Arduino.

https://www.arduino.cc/reference/en/language/variables/constants/constants/


5 – Laboratoire

5.1 – Laboratoire 01

En utilisant le module d’expansion (Grove Arduino Base Shield),

  1. Relier le module DEL (Grove – LED Socket Kit) à D2
  2. Écrire un programme qui fait clignoter la DEL avec un intervalle ON/OFF de 333 millisecondes.
  3. Utiliser des constantes pour la broche digitale et la durée du temps.

5.2 – Laboratoire 02

  1. Relier un module DEL à D6 et un autre à D5
  2. Écrire un programme qui allume successivement les DEL avec les délais suivants:
    • 700 ms ON, 100 ms OFF
  3. Utiliser des MACROs (constantes) pour les broches digitales et les durées de temps.
Labo-02


Document par Alain Boudreault, aka ve2cuy, revision du 2021.00.00