création d'une minuterie ( problème itération )
bonjour à tous,
je vous explique le projet en c++, je suis entrain de faire un code test pour faire une minuterie (un compteur) qui incrémente ou décrémente selon le choix voulu pour ensuite l'adapter sur un arduino qui aura donc
1 BT pour les minutes, 1 BT pour les secondes, 1 BT pour lancer ou stopper le compteur.
donc sur le code si dessous vous avez mon code actuel ou je ne comprend pas,
pourquoi la décrentation ne va pas jusqu'a 0 M : 0 S que je lance le compteur quand je saisie 0
alors qui commence bien avec les secondes que j'ai indiquer manuellement puis s'arrêt juste à la décrementation des itération des secondes standard quand il arrivent a zeros.
il ne continuer pas l'itération jusqu'a que le minute ne soit a zeros aussi 0 m : 0s
J'espère avoir été assez clair dans la description du problème, merci d'avance de votre aide je suis dans mes début avec le language c++.
ps les fonctions ne sont pas tous déclarer sur le Main car je ne trouver pas mon problème donc j'ai recommencer un un bloc de code sur le Main directement!!!!
Code:
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
|
//### fichier_baseC++.cpp
#include <iostream>
#include<unistd.h> // pour le sleep
using namespace std; // execution la fonction std par défault
// Etat pour le Bouton MIN
unsigned short BT_MIN {0};
unsigned short BT_SEC {0};
unsigned short Bt_Start {0};
unsigned short Bt_Stop {1};
unsigned short Etat_MIN {0}; // = true
bool Etat_Start {0};
//#################################################################################
// ##### réglage manuel des minutes et secondes #####
unsigned short Manuel_Minutes {2}; // décrentation, des Minutes régler manuellement
unsigned short Manuel_Secondes {20}; // décrentation, des Secondes régler manuellement
unsigned short STD_Secondes {59}; // fonction Standard du temps des secondes.
unsigned short TempsEcouleMin ; // sauvegarde la décrentation de " M "
unsigned short NewManuel_Minutes ; // nouvelle valeur minute après décrémentation.
unsigned short set_S {0}; // remise à zeros, des secondes
//################################################################################
// ### fonctions : ###
void Clear() // fonction pour effacer la console
{
cout << "\x1B[2J\x1B[H";
}
void compteur_STD_Secondes() // FONCTION SECONDES STANDARD
{
do
{
//if( STD_S < 60 ) // tant que "S" est inférieur à 60, on décrémente -1 puis fera l'itération jusqu'a 0, qui sera alors FALSE et qui sortira de la boucle.
//{
cout << "\n\n [[ " << Manuel_Minutes << " M : " << STD_Secondes << " S ]] minuterie lancer \n\n";
sleep(1);
STD_Secondes--;
}
while(STD_Secondes < 60);
}
void compteur_Manuel_SEC() // FONCTION SECONDES POUR REGLAGE MANUEL
{
while(Manuel_Secondes < 50)
{
if( Manuel_Minutes < 50 ) // tant que "S" est inférieur à 60, on décrémente -1 puis fera l'itération jusqu'a 0, qui sera alors FALSE et qui sortira de la boucle.
{
//S = s;
// affiche la décrémentation des minutes et secondes.
cout << "\n\n [[ 1/ lance les secondes regler manuellement\n\n";
cout << "[[ " << Manuel_Minutes << " M : " << Manuel_Secondes << " S ]] Secondes la minuterie\n\n";
sleep(1);
Manuel_Secondes--;
}
}
}
void compteur_General() // fonction du compteur Minutes et Secondes
{
if(Manuel_Secondes < 50) // si les secondes du compteur sont infèrieur à 50 est lancer
{
compteur_Manuel_SEC(); // execute l'iteration des secondes régler manuellement
}
else
{
do
{
Manuel_Minutes--;
cout << "\n\n [[ 2/ lance les secondes regler Standard \n\n";
cout << " ### exécution de boucle itération pour les Minute [XX] ### " << endl;
cout << "\n\n ### [[ " << Manuel_Minutes << " Minute décrementé ]] ### \n\n"; // décrémentation des minutes
compteur_STD_Secondes();
continue;
}
// tant que l'expression est vrai ont execute le bloc de code si dessus
while( Manuel_Minutes < 60 );
cout << "\n\n########################## " << endl;
cout << "### minuterie terminer ### " << endl;
cout << "##########################\n\n" << endl;
cout << "\n\n Bip Bip Bip Bip Bip Bip Bip Bip ";
}
}
//#################################################################################
//################################################################################
//################################################################################
// intput (D'ENTREE) du programme. // base du fichier c++
int main () {
cout << "\n ##*appui sur Bt_StartStop [ 0 ], pour lancer la minuterie ou sinon sur [ 1 ] ##";
cin >> Etat_Start;
//bool LAnceMinute = Bt_StartStop == 0; // variable logique pour si la condition est vrai on lance la minuterie.
cout << "\n\n\n\n########################\n" << endl;
cout << "lancement du programme \n" << endl;
cout << "########################\n\n" << endl;
do
{
cout << "\n\n### [[ --> 01 <-- ]]\n";
cout << "### [[ " << Manuel_Minutes << " : " << Manuel_Secondes << " S]] ### \n\n"; // décrémentation du compteur
Manuel_Secondes--;
sleep(1);
}
while ( Manuel_Secondes < 50 );
NewManuel_Minutes = Manuel_Minutes;
//NewManuel_Minutes--;
if (( NewManuel_Minutes < 60 ) || ( STD_Secondes < 60 ))
{
NewManuel_Minutes--;
while ( STD_Secondes < 60 )
{
cout << "\n\n### [[ Deux ]]\n";
cout << " ### [[ " << NewManuel_Minutes << " : " << STD_Secondes << " S]] ### \n\n"; // décrémentation du compteur
STD_Secondes--;
sleep(1);
}
}
return 0;
} // fin de la fonction (main) du programme OUTPUT (Sortie). |