mercredi, février 5, 2025
ArduinoAtelier "Jeunes"Informatique & programmation

Arduino : initiation à l’usage des radioamateurs. 6ème partie.

Programmation : la page blanche !

Samedi dernier, mise en situation de nos jeunes avec des exercices de programmation en partant de la feuille (presque) blanche et de quelques pistes.

Voilà ce qu’on obtient quand on choisi de créer un nouveau code.

Exercice 1 : Chronomètre en secondes = Arduino + afficheur
Construire et programmer un chronomètre affichant les secondes écoulées depuis le lancement du programme.
On a juste besoin notre carte Arduino précédemment utilisée et équipée de l’afficheur LCD.

Voilà à quoi ressemblerait notre programme en langage français !

Déclarer
La bibliothèque LCD
Les bornes à utiliser pour l’affichage LCD
Une variable de type int (pour integer, entier en anglais) appelée Temps et une autre Seconde

Préparer
L’afficheur LCD 16 colonnes 2 lignes
Afficher CHRONOMETRE (par défaut colonne 0 de la ligne 0)

Répéter
Positionner le curseur colonne 0 de la ligne 1
Utiliser la fonction millis() pour calculer les secondes écoulées (dans la variable Seconde)
Afficher les secondes sur la deuxième ligne

 //  Déclarer   
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int Seconde;

// Préparer
void setup() {
lcd.begin(16, 2);
lcd.print("CHRONOMETRE");
}

// Répéter
void loop() {
Seconde = (millis()/1000);
lcd.setCursor(0, 1);
lcd.print (Seconde);
}

Exercice 2 : Chronomètre en minutes et secondes = Arduino + afficheur .
Construire et programmer un chronomètre affichant les minutes et secondes écoulées depuis le lancement du programme.
On a juste besoin notre carte Arduino équipée de l’afficheur LCD.

Voilà à quoi ressemblerait notre programme en langage français !

Déclarer
La bibliothèque LCD
Les bornes à utiliser pour l’affichage
Des variables de type int (pour integer, entier en anglais) appelées Temps, Minute et Seconde

Préparer
L’afficheur LCD 16 colonnes 2 lignes
Afficher CHRONOMETRE (par défaut colonne 0 de la ligne 0)

Répéter
Positionner le curseur colonne 0 de la ligne 1
utiliser la fonction millis() pour calculer les secondes (dans la variable Temps)
Et appliquer l’opérateur arithmétique MODULO % qui donne comme résultat le reste après la division (exemple 66 % 60 = 6 et 120 % 60 = 0) syntaxe 6 = (66)%60
Afficher les minutes puis : et les secondes sur la deuxième ligne

 //  Déclarer  
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int Temps,Seconde,Minute;

// Préparer
void setup() {
lcd.begin(16, 2);
lcd.print("CHRONOMETRE");
}

// Répéter
void loop() {
Temps = (millis()/1000);
lcd.setCursor(0, 1);
Seconde = (Temps)%60;
Minute = (Temps/60);

lcd.print (Minute);
lcd.print (":");
lcd.print (Seconde);
}

Que remarquez-vous ?
ça marche, sauf que le cadrage des nombres est à gauche, et par exemple à la 61ème secondes on affiche 10 (le zéro venant de l’affichage précèdent de 60)
Que proposez-vous ?
Effacer les nombres ? Non on va obtenir un clignotement de la ligne.
Ajouter un zéro quand le nombre est inférieur à 10 ? OUI !

 
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int Temps,Seconde,Minute;

void setup() {
lcd.begin(16, 2);
lcd.print("CHRONOMETRE");

}

void loop() {
Temps = (millis()/1000);
lcd.setCursor(0, 1);
Seconde = (Temps)%60;
Minute = (Temps/60);

if (Minute<10){lcd.print("0");}
lcd.print (Minute);
lcd.print (":");
if (Seconde<10){lcd.print("0");}
lcd.print (Seconde);
}

Et voilà le code obtenu, bien entendu et sans autres explications, les jeunes ont ajouté les heures et les centièmes …..