Bonjour la communauté !
J'ai encore besoin de vous🥺
Je travaille sur un code d'horloge d'échecs avec deux digit tm1637
Mes comptes à rebours fonctionnent avec les boutons des joueurs qui arrêtent le compte à rebours du joueur A et met l'autre du joueur B en route, ça c'est bon
Je travaille maintenant à un bouton pour régler le temps de départ,juste un bouton "plus+"pour l'instant qui ajoute une minute au temps de jeu.
Donc j'y suis parvenu mais sur l'écran du joueur B il ne s'affiche 59 secondes au lieu de basculer sur la minute suivante:
20 minutes de jeu
J'appuie sur le bouton "+1minute"
Il s'affiche:
Ecran A : 21:00
EcranB: 20:59
J'appuie une deuxième fois sur le bouton "+1minute"
Ecran A : 22:00
Ecran B ; 21:59
Le temps de jeu du joueur B est pourtant bien de 22 minutes ou 21,999...
Voilà si quelqu'un a une idée d'où pourrait venir le problème et m'aider à éclaircir cette énigme...
Merci de m'avoir lu
Le code arrive bientôt
#include <TM1637Display.h>
#define CLK1 2
#define DIO1 3
TM1637Display displayA(CLK1, DIO1);
#define CLK2 4
#define DIO2 5
TM1637Display displayB(CLK2, DIO2);
#define nbMilliSecondes(_temps_) ((_temps_ % 1000) / 10)
#define nbSecondes(_temps_) ((_temps_ / 1000) % 60)
#define nbMinutes(_temps_) (((_temps_ / 1000) / 60) % 60)
// Broches du bouton de depart et de stop
byte BP_A = 11;
byte BP_B = 12;
byte BP_plus = 10;// bouton ajoute une minute aux chronos
boolean chronoplus = false; // variable ajoute une minute aux chronos
boolean BP_plusRelache = true ;//verif bouton plus relaché
// Temps de jeu en millisecondes
unsigned long chronoA = 1200000;//70000; //c70 secondes pour essais
unsigned long tpsRestantA;
unsigned long tpsLimiteA = chronoA + millis();
unsigned long memo_temps_restantA;
//les etapes
unsigned long tpsPasseA;
boolean cycleLance = false ;
boolean jeu_commence = false ;
unsigned long chronoB = 1200000;//70000; //c70 secondes pour essais
unsigned long tpsRestantB;
unsigned long tpsLimiteB = chronoB + millis();
unsigned long memo_temps_restantB;
//les etapes
unsigned long tpsPasseB;
//les etapes
boolean etat_stand_by = true;
boolean etat_comptageA = false;
boolean memo_etatnondispo = false;
boolean etat_comptageB =false;
#define ON true
#define OFF false
//antirepetition BP_plus
const unsigned long nonRepetitionTempo = 200;//antirepetition de BP_plus
unsigned long nonRepetitionMillis = 0;
boolean nonRepetition = false;
void setup() {
// Serial.begin(115200);
//mySerial.begin(9600);
pinMode(BP_A, INPUT_PULLUP);
pinMode(BP_B, INPUT_PULLUP);
pinMode(BP_plus, INPUT_PULLUP);
displayA.setBrightness(7);
displayA.showNumberDecEx((nbMinutes(chronoA) * 100) + nbSecondes(chronoA), 0b11100000, true);
displayB.setBrightness(7);
displayB.showNumberDecEx((nbMinutes(chronoB) * 100) + nbSecondes(chronoB), 0b11100000, true);
}
void compteareboursA() {
tpsRestantA = tpsLimiteA - millis(); tpsPasseA = chronoA - tpsRestantA;
if (tpsRestantA > 60000) displayA.showNumberDecEx((nbMinutes(tpsRestantA) * 100) + nbSecondes(tpsRestantA), 0b11100000, true);
else {
if (tpsRestantA <= 0) {
displayA.showNumberDecEx(0000, 0b11100000, true);
}
else {
displayA.showNumberDecEx((nbSecondes(tpsRestantA) * 100) + nbMilliSecondes(tpsRestantA), 0b11100000, true);
}
}
}
void compteareboursB() {
tpsRestantB = tpsLimiteB - millis(); tpsPasseB = chronoB - tpsRestantB;
if (tpsRestantB > 60000) displayB.showNumberDecEx((nbMinutes(tpsRestantB) * 100) + nbSecondes(tpsRestantB), 0b11100000, true);
else {
if (tpsRestantB <= 0) {
displayB.showNumberDecEx(0000, 0b11100000, true);
}
else {
displayB.showNumberDecEx((nbSecondes(tpsRestantB) * 100) + nbMilliSecondes(tpsRestantB), 0b11100000, true);
}
}
}
void loop() {
if ((!digitalRead(BP_plus)) && (BP_plusRelache==true) && (nonRepetition == false)&&(!jeu_commence)){
chronoA = chronoA + 60000 ;
chronoB = chronoA ;
nonRepetitionMillis = millis();
nonRepetition = true;
chronoplus = true ;
BP_plusRelache = false ;
tpsLimiteA = chronoA + millis(); tpsRestantA = tpsLimiteA - millis();
memo_temps_restantA = tpsRestantA ;
tpsLimiteB = chronoB + millis(); tpsRestantB = tpsLimiteB - millis();
memo_temps_restantB = tpsRestantB ;
compteareboursA();
compteareboursB();
}
if (chronoplus == true){
chronoplus = false;
}
if( (millis() - nonRepetitionMillis) >= nonRepetitionTempo){
nonRepetition = false;
}
// memo_temps_restant = tpsRestant ;
if (digitalRead (BP_plus)){
BP_plusRelache = true;
}
if (etat_stand_by) {
memo_etatnondispo = false;
tpsLimiteA = chronoA + millis();
memo_temps_restantA = tpsRestantA ;
tpsLimiteA = chronoA + millis(); tpsRestantA = tpsLimiteA - millis();
tpsLimiteB = chronoB + millis();
memo_temps_restantB = tpsRestantB ;
tpsLimiteB = chronoB + millis(); tpsRestantB = tpsLimiteB - millis();
}
if ((!digitalRead(BP_A)) && (!etat_comptageA)&&(cycleLance == false)) {
tpsLimiteA = memo_temps_restantA + millis();
etat_stand_by = false;
etat_comptageA = true;
jeu_commence = true;
}
if ((!digitalRead(BP_B)) && (!etat_comptageB)&&(cycleLance == false)) {
tpsLimiteB = memo_temps_restantB + millis();
etat_stand_by = false;
etat_comptageB = true;
jeu_commence = true;
}
if (!digitalRead(BP_B) && (etat_comptageA)) {
memo_temps_restantA = tpsRestantA;
etat_comptageA = false;
}
if (!digitalRead(BP_A) && (etat_comptageB)) {
memo_temps_restantB = tpsRestantB;
etat_comptageB = false;
}
//afficheur 4 digits
if (etat_comptageA) {
compteareboursA();
}
/* if ((tpsRestant / 1000) == 299) {
//mp3_play(3);
} else {
if (((tpsRestant / 1000) > 239) && ((tpsRestant / 1000) < 241)) {
//mp3_play(4);
} else {
if ((tpsRestant / 1000) == 180) {
//mp3_play(5);
} else {
if ((tpsRestant / 1000) == 120) {
//mp3_play(6);
} else {
if (((tpsRestant / 1000) > 59) && ((tpsRestant / 1000) < 61)) {
// mp3_play(7);
} else {
if ((tpsRestant / 1000) == 30) {
// mp3_play(8);
} else {
if ((tpsRestant / 1000) == 5) {
} else { */
if ((tpsPasseA) >= chronoA) {
compteareboursA();
displayA.showNumberDecEx(0000, 0b11100000, true);
memo_etatnondispo = ON;
cycleLance = true ;
etat_comptageA = false;
etat_stand_by = true;
}
/* }
}
}
}
}
}
}*/
if (etat_comptageB) {
compteareboursB();
}
if ((tpsPasseB) >= chronoB) {
compteareboursB();
displayB.showNumberDecEx(0000, 0b11100000, true);
memo_etatnondispo = ON;
cycleLance = true ;
etat_comptageB = false;
etat_stand_by = true;
}
if (memo_etatnondispo == ON) {
//etat_comptage = false;
// etat_stand_by = true;
//memo_etatnondispo = false;
}
}
J-M-L
December 8, 2024, 5:49pm
3
Je ne sais pas si c’est ça mais Vos macros risquent de faire du calcul en int au lieu de unsigned long
Mettez
#define nbMilliSecondes(_temps_) ((_temps_ % 1000ul) / 10ul)
#define nbSecondes(_temps_) ((_temps_ / 1000ul) % 60ul)
#define nbMinutes(_temps_) (((_temps_ / 1000ul) / 60ul) % 60ul)
tmpsLimiteA et tmpsLimiteB sont calculés à des temps différents puisque millis() peut avoir évolué.
Au début du if, tu fais, chronoB = chronoA ;
, donc tu veux que les temps de jeux des 2 joueurs soient identiques. Pour éviter ton problème, il serait plus simple de faire tous les calculs sur tpsLimiteA puis à la fin faire tpsLimiteB = tpsLimiteA;
A noter que la remarque est valable aussi sur le calcul de tpsLimite et tpsRestant.
Merci bien à vous!
Je teste tout ça très bientôt
Voilà
Donc pour la proposition de @J-M-L ,le code ne compile pas il dit que "temps" n'est pas déclaré et sur la 2eme ligne de votre paragraphe visiblement...alors que le mien compile???
C'est pourtant le même terme...
Pour la proposition de @fdufnews ça ne marche pas mais je ne suis pas sûr d'avoir fait tout comme il faut
Faut il que je re écrive tout?j'ai bien tenté quelques reformulations mais j'arrive à résoudre le problème
J-M-L
December 9, 2024, 6:02pm
7
vous avez dû oublier quelque chose
est-ce que cela compile ?
#define nbMilliSecondes(_temps_) ((_temps_ % 1000ul) / 10ul)
#define nbSecondes(_temps_) ((_temps_ / 1000ul) % 60ul)
#define nbMinutes(_temps_) (((_temps_ / 1000ul) / 60ul) % 60ul)
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(nbMilliSecondes(millis()));
Serial.println(nbSecondes(millis()));
Serial.println(nbMinutes(millis()));
delay(1000);
}
Ça ne compile toujours pas....vraiment bizarre
J-M-L
December 9, 2024, 10:02pm
9
Postez ce que dit le compilo
Il dit
"temps " was not declared in this scope
Je peux envoyer une photo de l'écran ce soir si besoin
terwal
December 10, 2024, 11:17am
11
un copier/coller serait mieux et beaucoup plus lisible.
Il est étonnant que le compilateur te mentionne uniquement temps alors que le terme utilisé par @J-M-L est _temps_
j'ai fait un wokwi avec le code de @J-M-L
J-M-L
December 10, 2024, 1:34pm
12
dans le forum les underscore sont mangés donc si vous écrivez _temps_
sans balise de code simple autour du mot vous lirez temps (en italique)
@kristof19
postez exactement le code que vous avez essayé de compiler et tout le message d'erreur de la console en utilisant les balises de code.
//#include "SoftwareSerial.h"
#include <TM1637Display.h>
#define CLK1 2
#define DIO1 3
TM1637Display displayA(CLK1, DIO1);
#define CLK2 4
#define DIO2 5
TM1637Display displayB(CLK2, DIO2);
//#define nbMilliSecondes(_temps_) ((_temps_ % 1000) / 10)
//#define nbSecondes(_temps_) ((_temps_ / 1000) % 60)
//#define nbMinutes(_temps_) (((_temps_ / 1000) / 60) % 60)
#define nbMilliSecondes(_temps_) ((_temps_ %1000ul) / 10ul)
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
#define nbMinutes(_temps_) (((_temps_ / 1000ul) / 60ul) % 60ul)
// Broches du bouton de depart et de stop
byte BP_A = 11;
byte BP_B = 12;
byte BP_plus = 10;// bouton ajoute une minute aux chronos
boolean chronoplus = false; // variable ajoute une minute aux chronos
boolean BP_plusRelache = true ;//verif bouton plus relaché
// Temps de jeu en millisecondes
unsigned long chronoA = 1200000;//70000; //c70 secondes pour essais
unsigned long tpsRestantA;
unsigned long tpsLimiteA = chronoA + millis();
unsigned long memo_temps_restantA;
//les etapes
unsigned long tpsPasseA;
boolean cycleLance = false ;
boolean jeu_commence = false ;
unsigned long chronoB = 1200000;//70000; //c70 secondes pour essais
unsigned long tpsRestantB;
unsigned long tpsLimiteB = chronoB + millis();
unsigned long memo_temps_restantB;
//les etapes
unsigned long tpsPasseB;
//les etapes
boolean etat_stand_by = true;
boolean etat_comptageA = false;
boolean memo_etatnondispo = false;
boolean etat_comptageB =false;
#define ON true
#define OFF false
//antirepetition BP_plus
const unsigned long nonRepetitionTempo = 200;//antirepetition de BP_plus
unsigned long nonRepetitionMillis = 0;
boolean nonRepetition = false;
void setup() {
Serial.begin(115200);
//mySerial.begin(9600);
pinMode(BP_A, INPUT_PULLUP);
pinMode(BP_B, INPUT_PULLUP);
pinMode(BP_plus, INPUT_PULLUP);
displayA.setBrightness(7);
displayA.showNumberDecEx((nbMinutes(chronoA) * 100) + nbSecondes(chronoA), 0b11100000, true);
displayB.setBrightness(7);
displayB.showNumberDecEx((nbMinutes(chronoB) * 100) + nbSecondes(chronoB), 0b11100000, true);
}
void compteareboursA() {
tpsRestantA = tpsLimiteA - millis(); tpsPasseA = chronoA - tpsRestantA;
if (tpsRestantA > 60000) displayA.showNumberDecEx((nbMinutes(tpsRestantA) * 100) + nbSecondes(tpsRestantA), 0b11100000, true);
else {
if (tpsRestantA <= 0) {
displayA.showNumberDecEx(0000, 0b11100000, true);
}
else {
displayA.showNumberDecEx((nbSecondes(tpsRestantA) * 100) + nbMilliSecondes(tpsRestantA), 0b11100000, true);
}
}
}
void compteareboursB() {
tpsRestantB = tpsLimiteB - millis(); tpsPasseB = chronoB - tpsRestantB;
if (tpsRestantB > 60000) displayB.showNumberDecEx((nbMinutes(tpsRestantB) * 100) + nbSecondes(tpsRestantB), 0b11100000, true);
else {
if (tpsRestantB <= 0) {
displayB.showNumberDecEx(0000, 0b11100000, true);
}
else {
displayB.showNumberDecEx((nbSecondes(tpsRestantB) * 100) + nbMilliSecondes(tpsRestantB), 0b11100000, true);
}
}
}
void loop() {
Serial.println(nbMilliSecondes(millis()));
Serial.println(nbSecondes(millis()));
Serial.println(nbMinutes(millis()));
delay(1000);
if ((!digitalRead(BP_plus)) && (BP_plusRelache==true) && (nonRepetition == false)&&(!jeu_commence)){
chronoA = chronoA + 60000 ;
chronoB = chronoA ;
nonRepetitionMillis = millis();
nonRepetition = true;
chronoplus = true ;
BP_plusRelache = false ;
tpsLimiteA = chronoA + millis(); tpsRestantA = tpsLimiteA - millis();
memo_temps_restantA = tpsRestantA ;
tpsLimiteB = chronoB + millis(); tpsRestantB = tpsLimiteB - millis();
memo_temps_restantB = tpsRestantB ;
compteareboursA();
compteareboursB();
}
if (chronoplus == true){
chronoplus = false;
}
if( (millis() - nonRepetitionMillis) >= nonRepetitionTempo){
nonRepetition = false;
}
// memo_temps_restant = tpsRestant ;
if (digitalRead (BP_plus)){
BP_plusRelache = true;
}
if (etat_stand_by) {
memo_etatnondispo = false;
tpsLimiteA = chronoA + millis();
memo_temps_restantA = tpsRestantA ;
tpsLimiteA = chronoA + millis(); tpsRestantA = tpsLimiteA - millis();
tpsLimiteB = chronoB + millis();
memo_temps_restantB = tpsRestantB ;
tpsLimiteB = chronoB + millis(); tpsRestantB = tpsLimiteB - millis();
}
if ((!digitalRead(BP_A)) && (!etat_comptageA)&&(cycleLance == false)) {
tpsLimiteA = memo_temps_restantA + millis();
etat_stand_by = false;
etat_comptageA = true;
jeu_commence = true;
}
if ((!digitalRead(BP_B)) && (!etat_comptageB)&&(cycleLance == false)) {
tpsLimiteB = memo_temps_restantB + millis();
etat_stand_by = false;
etat_comptageB = true;
jeu_commence = true;
}
if (!digitalRead(BP_B) && (etat_comptageA)) {
memo_temps_restantA = tpsRestantA;
etat_comptageA = false;
}
if (!digitalRead(BP_A) && (etat_comptageB)) {
memo_temps_restantB = tpsRestantB;
etat_comptageB = false;
}
//afficheur 4 digits
if (etat_comptageA) {
compteareboursA();
}
/* if ((tpsRestant / 1000) == 299) {
//mp3_play(3);
} else {
if (((tpsRestant / 1000) > 239) && ((tpsRestant / 1000) < 241)) {
//mp3_play(4);
} else {
if ((tpsRestant / 1000) == 180) {
//mp3_play(5);
} else {
if ((tpsRestant / 1000) == 120) {
//mp3_play(6);
} else {
if (((tpsRestant / 1000) > 59) && ((tpsRestant / 1000) < 61)) {
// mp3_play(7);
} else {
if ((tpsRestant / 1000) == 30) {
// mp3_play(8);
} else {
if ((tpsRestant / 1000) == 5) {
} else { */
if ((tpsPasseA) >= chronoA) {
compteareboursA();
displayA.showNumberDecEx(0000, 0b11100000, true);
memo_etatnondispo = ON;
cycleLance = true ;
etat_comptageA = false;
etat_stand_by = true;
}
/* }
}
}
}
}
}
}*/
if (etat_comptageB) {
compteareboursB();
}
if ((tpsPasseB) >= chronoB) {
compteareboursB();
displayB.showNumberDecEx(0000, 0b11100000, true);
memo_etatnondispo = ON;
cycleLance = true ;
etat_comptageB = false;
etat_stand_by = true;
}
if (memo_etatnondispo == ON) {
//etat_comptage = false;
// etat_stand_by = true;
//memo_etatnondispo = false;
}
}
:\Users\delph\AppData\Local\Temp.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:118:17: note: in expansion of macro 'nbSecondes'
Serial.println(nbSecondes(millis()));
^~~~~~~~~~
exit status 1
Compilation error: 'temps ' was not declared in this scope
Merci @terwal
Je decouvre wokwi
Si je comprends bien je peux y mettre mon code mes accessoires et simuler si ça marche!?
J-M-L
December 10, 2024, 5:47pm
16
Oui
C’est une émulation logicielle de la plateforme, pas pour la partie électronique / électrique
J-M-L
December 10, 2024, 5:48pm
17
Mettez tout ce que dit le compilateur
terwal
December 10, 2024, 5:52pm
18
pourquoi as tu un espace entre nbSecondes et (temps )?
Désolé,je savais pas que yavais d'autres lignes dans le message d'erreur😅
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino: In function 'void setup()':
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:80:57: note: in expansion of macro 'nbSecondes'
displayA.showNumberDecEx((nbMinutes(chronoA) * 100) + nbSecondes(chronoA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:80:57: note: in expansion of macro 'nbSecondes'
displayA.showNumberDecEx((nbMinutes(chronoA) * 100) + nbSecondes(chronoA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino: In function 'void compteareboursA()':
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:88:86: note: in expansion of macro 'nbSecondes'
if (tpsRestantA > 60000) displayA.showNumberDecEx((nbMinutes(tpsRestantA) * 100) + nbSecondes(tpsRestantA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:88:86: note: in expansion of macro 'nbSecondes'
if (tpsRestantA > 60000) displayA.showNumberDecEx((nbMinutes(tpsRestantA) * 100) + nbSecondes(tpsRestantA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:94:33: note: in expansion of macro 'nbSecondes'
displayA.showNumberDecEx((nbSecondes(tpsRestantA) * 100) + nbMilliSecondes(tpsRestantA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:94:33: note: in expansion of macro 'nbSecondes'
displayA.showNumberDecEx((nbSecondes(tpsRestantA) * 100) + nbMilliSecondes(tpsRestantA), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino: In function 'void compteareboursB()':
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:102:86: note: in expansion of macro 'nbSecondes'
if (tpsRestantB > 60000) displayB.showNumberDecEx((nbMinutes(tpsRestantB) * 100) + nbSecondes(tpsRestantB), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:102:86: note: in expansion of macro 'nbSecondes'
if (tpsRestantB > 60000) displayB.showNumberDecEx((nbMinutes(tpsRestantB) * 100) + nbSecondes(tpsRestantB), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:108:33: note: in expansion of macro 'nbSecondes'
displayB.showNumberDecEx((nbSecondes(tpsRestantB) * 100) + nbMilliSecondes(tpsRestantB), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:108:33: note: in expansion of macro 'nbSecondes'
displayB.showNumberDecEx((nbSecondes(tpsRestantB) * 100) + nbMilliSecondes(tpsRestantB), 0b11100000, true);
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino: In function 'void loop()':
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: error: '_temps_' was not declared in this scope
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:118:17: note: in expansion of macro 'nbSecondes'
Serial.println(nbSecondes(millis()));
^~~~~~~~~~
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:21:21: note: suggested alternative: '_tempnam_r'
#define nbSecondes (_temps_) ((_temps_ /1000ul) %60ul)
^
C:\Users\delph\AppData\Local\Temp\.arduinoIDE-unsaved20241110-9244-cbp141.op2ge\sketch_dec10a\sketch_dec10a.ino:118:17: note: in expansion of macro 'nbSecondes'
Serial.println(nbSecondes(millis()));
^~~~~~~~~~
exit status 1
Compilation error: '_temps_' was not declared in this scope
Ben euh comme ça pour que ça soit aéré...faut pas??