1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
| / Inclure le code de la bibliothèque:
#include <LiquidCrystal.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Initialiser la bibliothèque avec les numéros des broches de l'interface
LiquidCrystal_I2C lcd(0x3f, 20, 4);
// La broche Numérique 6 est reliée au Bouton1. On lui donne le nom BtStartStop.
int BtStartStop = 6;
// La broche Numérique 7 est reliée au Bouton2. On lui donne le nom BtReset.
int BtReset = 7;
// Déclaration variable EtatBtStartStop qui va servir à stocker une valeur au format bool.
bool EtatBtStartStop;
// Déclaration variable EtatBtReset qui va servir à stocker une valeur au format bool.
bool EtatBtReset;
// Déclaration variable EtatBoutonAppuyer qui va servir à stocker une valeur au format int.
int EtatBoutonAppuyer;
// Etc...
int EtatChronoOnOFF;
int TempsEcoule;
int Milliseconde;
int Seconde;
int Minute;
// Variable pour stocker la valeur du timer interne du microcontrôleur (millis()) au format int unsigned long
unsigned long currentTime = 0;
// Variable pour Mémoriser la valeur du timer interne du microcontrôleur "currentTime" pour par la suite la comparer
// au format int unsigned long
unsigned long previousTime = 0;
void setup() {
// Faire de la broche du BtStartStop une entrée avec activation de la résistance de rappel interne de l'ARDUINO .
pinMode(BtStartStop, INPUT_PULLUP);
// Faire de la broche du BtReset une entrée avec activation de la résistance de rappel interne de l'ARDUINO .
pinMode(BtReset, INPUT_PULLUP);
lcd.init();
lcd.backlight();
// Configurez le nombre de colonnes et de lignes de l'écran LCD :
lcd.begin(20,4);
// Imprime un message sur l'écran LCD.
lcd.setCursor(2,1);
lcd.print ("** Boitier 1 **");
}
void loop() {
// Lit la broche d'entrée du BtStartStop et stock ça valeur dans EtatBtStartStop.
EtatBtStartStop = digitalRead(BtStartStop);
// Lit la broche d'entrée du BtReset et stock ça valeur dans EtatBtReset.
EtatBtReset = digitalRead(BtReset);
// Si EtatBtStartStop == LOW et EtatBoutonAppuyer == 0 on exécute les actions entre {}
if (EtatBtStartStop == LOW && EtatBoutonAppuyer == 0) {
// La variable EtatBoutonAppuyer prend la valeur de 1.
EtatBoutonAppuyer = 1;
// Si EtatChronoOnOFF = 0 alors EtatChronoOnOFF = 1 et inversement.
EtatChronoOnOFF = !EtatChronoOnOFF;
}
// Si EtatBtReset == LOW et EtatChronoOnOFF == 0 et EtatBoutonAppuyer == 0 on exécute les actions entre {}
if (EtatBtReset == LOW && EtatChronoOnOFF == 0 && EtatBoutonAppuyer == 0) {
// La variable EtatBoutonAppuyer prend la valeur de 1.
EtatBoutonAppuyer = 1;
// La variable Milliseconde prend la valeur de 0.
Milliseconde = 0;
//Etc...
Seconde = 0;
Minute = 0;
}
// Si EtatBtStartStop == HIGH et EtatBtReset == HIGH on exécute les actions entre {}
if (EtatBtStartStop == HIGH && EtatBtReset == HIGH) {
// La variable EtatBoutonAppuyer prend la valeur de 0.
EtatBoutonAppuyer = 0;
}
//On stocke la valeur du timer interne du microcontrôleur de l'arduino qu'ont récupére grace à millis() dans la variable currentTime
currentTime = millis();
//On calcule la valeur de TempsEcoule en effectuant une soustraction entre currentTime et previousTime.
TempsEcoule = currentTime - previousTime;
//On stocke la valeur du timer interne du microcontrôleur de l'arduino qu'ont récupére grace à millis() dans la variable previousTime
previousTime = millis();
// Si EtatChronoOnOFF == 1 on exécute les actions entre {}
if (EtatChronoOnOFF == 1) {
// On calcule la valeur de Milliseconde en effectuant une addition entre Milliseconde et TempsEcoule.
Milliseconde = Milliseconde + TempsEcoule;
// Si Milliseconde > 999 on exécute les actions entre {}
if (Milliseconde > 999) {
Milliseconde = Milliseconde - 1000;
// On incrémente la variable Seconde de + 1
Seconde++;
}
if (Seconde > 59) {
Seconde = 0;
Minute++;
}
}
// Placer le curseur sur la colonne 9, ligne 1 du LCD
// (note : la ligne 0 est la première ligne, puisque le comptage commence par 0):
lcd.setCursor(9, 3);
// Imprime un message sur l'écran LCD.
lcd.print(":");
// Si la variable Milliseconde est plus grande que 99 on exécute les actions entre {}
if (Milliseconde > 99) {
// Placer le curseur sur la colonne 10, ligne 1 du LCD
lcd.setCursor(10, 3);
// Imprime la valeur de la variable Milliseconde sur l'écran LCD
lcd.print(Milliseconde);
}
// Sinon si la variable Milliseconde est plus grande que 99 on exécute les actions entre {}
else if (Milliseconde > 9 && Milliseconde < 100) {
//Etc...
lcd.setCursor(10, 3);
lcd.print("0");
lcd.setCursor(11, 3);
lcd.print(Milliseconde);
}
else if (Milliseconde > 0 && Milliseconde < 10) {
lcd.setCursor(10, 3);
lcd.print("00");
lcd.setCursor(12, 3);
lcd.print(Milliseconde);
}
else {
lcd.setCursor(9, 3);
lcd.print(":000");
}
lcd.setCursor(6, 3);
lcd.print(":");
if (Seconde < 10) {
lcd.setCursor(7, 3);
lcd.print("0");
lcd.setCursor(8, 3);
lcd.print(Seconde);
}
else {
lcd.setCursor(7, 3);
lcd.print(Seconde);
}
lcd.setCursor(3, 3);
if (Minute < 10) {
lcd.setCursor(4, 3);
lcd.print("0");
lcd.setCursor(5, 3);
lcd.print(Minute);
}
else {
lcd.setCursor(4, 3);
lcd.print(Minute);
}
} |
Partager