Go Down

Topic: chronomètre Arduino (Read 773 times) previous topic - next topic

samuelkoh_lanta

Nov 24, 2018, 11:46 am Last Edit: Nov 24, 2018, 01:57 pm by samuelkoh_lanta
Je voudrai fabriquer un chronomètre bluetooth Arduino, mon application Android a 3 boutons principales, +, pour ajouter 1 au compteur, -  pour enlever 1 au compteur et FIRE!!! pour lancer le décompte.
Les deux premiers boutons marchent, j'arrive a ajouter ou a enlever 1, mais je n'arrive pas a lancer le compte a rebours. J'utilise une carte Arduino un, un afficheur 7 segments TM1637 et un module bluetooth HC-06. 
Voici mon code:

Code: [Select]

#include <SoftwareSerial.h>

#include <Arduino.h>

#include <TM1637Display.h>

#define CLK 2

#define DIO 3

SoftwareSerial HC06(11,10);

String messageRecu;

int i=0;

TM1637Display display(CLK, DIO);


void setup() {
 Serial.begin(9600);
 HC06.begin(9600);
}

void loop()
{display.setBrightness(0x0f);
display.showNumberDec(i);
   while(HC06.available())
   {
     delay(3);
     char c = HC06.read();
     messageRecu += c;
   }
   if (messageRecu.length() >0)
   {
     Serial.println(messageRecu);

     
     if (messageRecu == "-")     
       {display.showNumberDec(i--); }

       
     if (messageRecu == "+")
       {display.showNumberDec(i++); }

 
     if(messageRecu == "FIRE!!!"){
             
}
messageRecu="";
   
}
}


Pouvais vous m'aider???

J-M-L

#1
Nov 24, 2018, 12:11 pm Last Edit: Nov 24, 2018, 01:53 pm by J-M-L
Savez vous écrire un code qui effectue le compte à rebours (pour le moment sans le BT) ?

sinon votre code de réception sur le port série n'est pas top, il peut conduire à des réceptions erratiques. Si vous voulez comprendre comment bien écouter le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

Pense aussi à lire les messages épinglés en haut du forum français, tu apprendras à poster un code. Ensuite, édite ton message et corrige la manière de poster ton code (les balises ad-hoc). Merci
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

al1fch

Quote
Pense aussi à lire les messages épinglés en haut du forum français, tu apprendras à poster un code. Ensuite, édite ton message et corrige la manière de poster ton code (les balises ad-hoc). Merci
+1 .... et tu pourras auss en profiter  éditer le titre du message ('titre à la con' selon les termes du modérateur)

samuelkoh_lanta

Merci pour ces réponses.
Je sais déjà faire un compte a rebours, en  utilisant :


for (int i=10 ; i>=0 ; i--){
display.showNumberDec(i);
delay(1000);
}


Au départ, mon afficheur 7 segments affiche 0, j'arrive a le mettre le nombre de seconde voulu, mais je n'arrive pas a faire un compte a rebours a partir de ce nombre.

J-M-L

#5
Nov 24, 2018, 02:09 pm Last Edit: Nov 24, 2018, 02:11 pm by J-M-L
maintenant montrez nous que vous savez mettre du code entre les balises de code et on pourra avancer :)

Quote
mais je n'arrive pas a faire un compte a rebours a partir de ce nombre.
Dans votre code
Code: [Select]
for (int i=10 ; i>=0 ; i--){.. quel est le chiffre de départ ?

Dans votre code tout en haut, quel est le compteur ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

samuelkoh_lanta

 Dans ce code

Code: [Select]
for (int i=10 ; i>=0 ; i--)

mon chiffre de départ est 10.


Et que voulez vous dire par "quel est le compteur"?

J-M-L

Et que voulez vous dire par "quel est le compteur"?
ce que vous incrémentez ou décrémentez...
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

samuelkoh_lanta

ça doit être i, et je veux décrémenter de 1 toute les secondes la valeur que aura i lorsque j'appuirer sur FIRE

J-M-L

oui c'est i, donc au lieu de 10.... et bien sûr il faudra une variable dans votre boucle qui sera différente
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

samuelkoh_lanta

#10
Nov 24, 2018, 02:47 pm Last Edit: Nov 24, 2018, 02:49 pm by samuelkoh_lanta
Si je fait ça:

 
Code: [Select]
if(messageRecu == "FIRE!!!"){
         for (int i=i ; i>=0 ; i--){
         display.showNumberDec(i);
         delay(1000);
}     
}


quand je clic sur FIRE l'afficheur affiche directement 0.
Et a quoi penser vous quand vous parlez d'une variable différente?

jpbbricole

#11
Nov 24, 2018, 06:37 pm Last Edit: Nov 24, 2018, 06:47 pm by jpbbricole
Bonsoir samuelkoh_lanta
Code: [Select]
if(messageRecu == "FIRE!!!"){
         for (int i=i ; i>=0 ; i--){


A ce niveau int i=i, i ne vaut rien, essaie de mettre ça int i=10 et tu comprendra.

La confusion provient du fait que tu as 2 variables qui ont le même nom, comme, dans ta boucle de décompte tu reprends, avec int i, ce nom et de ce fait ta boucle ne "voit" plus l'autre, en dehors de ton décompte change ce i en autre chose.

int i=0;

Cordialement
jpbbricole

samuelkoh_lanta

Le problème c'est que je ne veux pas que i=10, je vois bien qu'en faisant ceci, mon afficheur affiche directement 10, or je veux qu'il commence le compte a rebours avec la valeur "actuelle" de i.

lesept

Alors change le nom de la variable de ta boucle
 for int j=i; etc...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

samuelkoh_lanta

Merci beaucoup de cette réponse... Ca marche enfin, je me sent un peu bête de ne pas y avoir penser...Ce n'étais pourtant pas bien compliquer...

Go Up