Projet chronomètre

Bonjour, je me suis lancé dans une nouvelle expérience.
j'ai réalisé un chronomètre qui fonctionne, celui affiche au lcd les minutes ainsi que les heures écoulés.

j'aimerai aller plus loin,

je souhaiterai commander mon chronomètre avec un potentiomètre, j'aimerai qu'a une certaine valeur du potentiomètre (compris en 0 et 1023 ils me semble) le chronomètre démarre puis à une autre valeur, le chronomètre se stop.
Par exemple à la valeur 200 du potentiomètre le chronomètre démarre et à la valeur 800 du potentiomètre le chronomètre s’arrête (sans s’éteindre, en laissant affiché le temp).

Cela va me servir pour un projet que je dois réaliser avec une sonde de température PT100.

comme matériel, je dispose d'un ecran lcd 16x2, d'une carte UNO, d'un potentiomètre branché sur le pin A0 de ma carte.

voici mon code :

/*Arduino Chronometer*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);

//déclarer les heures et minutes
int sec = 00;
int min = 00;
int hr = 00;

void setup() {
  lcd.begin(16,2);
  lcd.setCursor(2,0);
  lcd.print("CHRONOMETRE");
lcd.setCursor(0,2);
lcd.print ("commence dans 3");
delay(1000) ;
lcd.clear() ;
lcd.setCursor(2,0);
 lcd.print("CHRONOMETRE");
lcd.setCursor(0,2);
lcd.print ("commence dans 2");
delay(1000) ;
lcd.clear() ;
lcd.setCursor(2,0);
 lcd.print("CHRONOMETRE");
lcd.setCursor(0,2);
lcd.print ("commence dans 1");
delay(1000) ;
lcd.clear() ;
lcd.setCursor(0,2) ;
}

void loop() {
lcd.setCursor(2,0);
lcd.print("CHRONOMETRE");
lcd.setCursor(2,2);
lcd.print(hr);
lcd.setCursor(4,2);
lcd.print("h et ");
lcd.setCursor(9,2);
lcd.print(min);
lcd.setCursor(11,2);
lcd.print("min");
sec=sec+1;
delay(1000);

if(sec == 60){
  sec=00; 
  min=min+1;
}else;
if(min == 60){
  min=00;
  hr=hr+1;
}else;
lcd.clear();
}

Je ne parvient pas a réaliser le programme pour contrôler le start/stop du chronomètre à l'aide d'un potentiomètre, pourriez vous m'aider ?

Merci,
Cordialement

PS : je quitte le boulo, je répondrai aux messages des la reprise demain matin,

Merci de votre compréhension

hello
veux tu tester ce bout de code
ta fonction principale était le chrono, maintenant c'est la lecture du potar

/*Arduino Chronometer*/
#include <LiquidCrystal.h>
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//chez toi
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);//chez moi
//déclarer les heures et minutes
int sec = 00;
int min = 00;
int hr  = 00;
int pot =  0;
const byte potentiometre = A0;

void attente() {
  for (int f = 3; f >= 1; f--)
  {
    lcd.setCursor(14, 1);
    lcd.print (f);
    delay(1000) ;
  }
}
void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(2, 0); //colonne, ligne
  lcd.print("CHRONOMETRE");
  lcd.setCursor(0, 1); //colonne, ligne
  lcd.print ("commence dans ");
  attente();
  lcd.setCursor(0, 1); //colonne, ligne
  lcd.print("                 ");//on efface la 2eme ligne
}

void loop()
{
  pot = analogRead(potentiometre);
  if (pot < 200)
  {
    lcd.setCursor(2, 0); //colonne, ligne
    lcd.print("CHRONOMETRE");
    lcd.setCursor(0, 1); //colonne, ligne
    lcd.print("                 ");//on efface la 2eme ligne
  }
  else
  {
    if ((pot >= 200) && (pot <= 800))
    {
      comptage();
    }
    else
    {
      //ne rien faire car pot > 800
    }
  }
}
void comptage()
{
  sec++;
  delay(1000);
  if (sec == 60)
  {
    sec = 00;
    min = min + 1;
  }
  else
  {
    if (min == 60)
    {
      min = 00;
      hr = hr + 1;
    }
  }
  //colonne, ligne
  lcd.setCursor(0, 1);
  if (hr < 10) {
    lcd.print(" ");
  }
  lcd.print(hr);
  lcd.setCursor(2, 1);
  lcd.print("h  ");

  lcd.setCursor(4, 1);
  if (min < 10) {
    lcd.print(" ");
  }
  lcd.print(min);
  lcd.setCursor(6, 1);
  lcd.print("min ");

  lcd.setCursor(10, 1);
  if (sec < 10) {
    lcd.print(" ");
  }
  lcd.print(sec);
  lcd.setCursor(12, 1);
  lcd.print("sec ");
}

ce bout de code ? je l'introduit dans un nouveau projet ou dois-je le combiner au mien ?

Je n'avait pas vu que j'utilisé ton LiquidCrystal lcd et pas le mien, le progamme fonctionne, en tournant le potentiomètre, le chronomètre démarre et une fois arrivé à une valeur plus haute, celui-ci s'arrête, je te remercie beaucoup, je vais étudier un petit peu le programme, afin de le comprendre, merci bien

Quelque chose me chagrine un petit peu :slight_smile: j'aimerai que le lcd reste allumé avec la valeur quand le chronomètre s’arrête, afin d'afficher le temps, car en effet voici la démarche :

téléversement > chronomètre commence dans 3/2/1 > chronomètre non affiché > potentiomètre à x=200 lcd affiche le chrono et le temps défile > une fois arrivé à potentiomètre x=800 > chronomètre n'est plus affiché.

j'aimerai que avant et apres, meme si le temp ne défile pas, qu le chronomètre soit affiché sur le lcd.

comprend tu ? je n'explique pas toujours bien :smiley:

Veuillez m'excuser pour les méssages qui se suit de moi-même, je découvre des choses petit à petit.

Le programme et l'installation fonctionne comme je le veut, j'ai caché la ligne de commande
//lcd.print("                ");//on efface la 2eme ligne du void loop.

Je voulais te remercier pour ton aide qui m'a beaucoup aidé, bonne continuation et bonne programmation :D. A bientot ^^

PS : je re-post mon de vérifié et fonctionnelle :

/*Arduino Chronometer*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//chez toi
//déclarer les heures et minutes
int sec = 00;
int min = 00;
int hr  = 00;
int pot =  0;
const byte potentiometre = A0;

void attente() {
  for (int f = 3; f >= 1; f--)
  {
    lcd.setCursor(14, 1);
    lcd.print (f);
    delay(1000) ;
  }
}
void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(2, 0); //colonne, ligne
  lcd.print("CHRONOMETRE");
  lcd.setCursor(0, 1); //colonne, ligne
  lcd.print ("commence dans ");
  attente();
  lcd.setCursor(0, 1); //colonne, ligne
  lcd.print("                 ");//on efface la 2eme ligne
}

void loop()
{
  pot = analogRead(potentiometre);
  if (pot < 100)
  {
    lcd.setCursor(2, 0); //colonne, ligne
    lcd.print("CHRONOMETRE");
    lcd.setCursor(0, 1); //colonne, ligne
    //lcd.print("                 ");//on efface la 2eme ligne
  }
  else
  {
    if ((pot >= 100) && (pot <= 950))
    {
      comptage();
    }
    else
    {
      //ne rien faire car pot > 950
    }
  }
}
void comptage()
{
  sec++;
  delay(1000);
  if (sec == 60)
  {
    sec = 00;
    min = min + 1;
  }
  else
  {
    if (min == 60)
    {
      min = 00;
      hr = hr + 1;
    }
  }
  //colonne, ligne
  lcd.setCursor(0, 1);
  if (hr < 10) {
    lcd.print(" ");
  }
  lcd.print(hr);
  lcd.setCursor(2, 1);
  lcd.print("h  ");

  lcd.setCursor(4, 1);
  if (min < 10) {
    lcd.print(" ");
  }
  lcd.print(min);
  lcd.setCursor(6, 1);
  lcd.print("min ");

  lcd.setCursor(10, 1);
  if (sec < 10) {
    lcd.print(" ");
  }
  lcd.print(sec);
  lcd.setCursor(12, 1);
  lcd.print("sec ");
}

CORDIALEMENT,
F.Chedal

cool, et merci pour le retour :slight_smile: