Bonjour je suis en train de réaliser un chronometre pour mes élèves. Le projet final devrait avoir deux boitiers avec des cartes arduino uno.
une pour la mise en route et le reset
l'autre pour l'arrêt du chrono.

Je réussi à faire un chronometre sur le boitier 1 avec le bouton start et un reset.

j'ai acheté des cartes nrf24l01 pour la communication entre les deux cartes mais je n'arrive pas a configurer l'arrêt à distance

pourriez vous m'aider
merci


voici le programme du boitier 1 :slight_smile:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
}
 
}