Go Down

Topic: Horloge Géante (Read 16307 times) previous topic - next topic

jfs

#15
May 23, 2018, 08:32 am Last Edit: May 23, 2018, 08:33 am by jfs
En haut à gauche de la fenêtre d'édition il y a ce bouton </>

Tu cliques dessus et tu mets ton code dedans lors de l'écriture du message.
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

ASSM

j'ai le bouton </> que lorsque je modifie le message....

jfs

Encore un des mystères de ce forum....
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

lesept

Bon, je pars de ton code qui apparaît dans la réponse 12.

La fonction importante est TimeToArray, que j'analyse. Je vais la simplifier puisque certaines lignes apparaissent plusieurs fois.

D'abord, ta variable Now est un int (issu de la fonction GetTime, c'est OK) qui a le même nom qu'une autre variable de type tmelement_t. C'est correct, il n'y a pas de conflit, mais je n'aime pas trop car ça peut prêter à confusion. Je la renomme en CurrentTime.

On ne met pas de ; après une accolade fermante.

Ces lignes :
Code: [Select]
        if (digits[digit][k] == 1) {
          leds[cursor] = ledColor;
        }
        else if (digits[digit][k] == 0) {
          leds[cursor] = 0x000000;
        }
peuvent être remplacées par
Code: [Select]
leds[cursor] = ledColor*digits[digit][k];
Enfin, l'affichage (en fait l'allumage des LEDs correspondant au chiffre à afficher) se fait ici :
Code: [Select]
      for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor] = ledColor * digits[digit][k];
        cursor ++;
      }
Je comprends que cursor représente la première LED du chiffre à afficher : c'est un multiple de 28 pour les heures (HH) et tu ajoutes 2 pour les minutes (MM) pour tenir compte du ":" qui clignote sur deux secondes.
Je pense qu'il faudrait changer la ligne
Code: [Select]
        leds[cursor] = ledColor * digits[digit][k];en
Code: [Select]
        leds[cursor+k] = ledColor * digits[digit][k];tout simplement.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ASSM

#19
May 23, 2018, 04:58 pm Last Edit: May 23, 2018, 05:00 pm by ASSM
Je viens de suivre tes conseils et viens de modifier le code.

Code: [Select]
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
#include "FastLED.h"
#define NUM_LEDS 114 // Number of LED controles (remember I have 3 leds / controler
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip
byte digits[10][28] = {
  {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //0
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //1
  {1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, //2
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //3
  {1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1}, //4
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //5
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //6
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //7
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //9 | 2D Array for numbers on 7 segment
  };
bool Dot = true;  //Dot state
bool DST = false; //DST state
int ledColor = 0x0000FF; // Color used (in hex)
void setup(){
//  Serial.begin(9600);
//  Wire.begin();
  LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
  LEDS.setBrightness(255); // Set initial brightness
  pinMode(2, INPUT_PULLUP); // Define DST adjust button pin
  pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin
  pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin
}
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime(){
  tmElements_t Now;
  RTC.read(Now);
  //time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object
  int hour=Now.Hour;
  int minutes=Now.Minute;
  int second =Now.Second;
  if (second % 2==0) {Dot = false;}
    else {Dot = true;};
  return (hour*100+minutes);
  };

// Check Light sensor and set brightness accordingly
void BrightnessCheck(){
  const byte sensorPin = 3; // light sensor pin
  const byte brightnessLow = 5; // Low brightness value
  const byte brightnessHigh = 255; // High brightness value
  int sensorValue = digitalRead(sensorPin); // Read sensor
  if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
  else {LEDS.setBrightness(brightnessLow);} 
  };
 
// Convert time to array needet for display
void TimeToArray(){
  int Now = GetTime();  // Get time
  int cursor = 0;
 
//  Serial.print("Time is: ");Serial.println(Now);
  if (DST){   // if DST is true then add one hour
   Now+=100;
//   Serial.print("DST is ON, time set to : ");Serial.println(Now);
  };
  if (Dot){leds[56]=ledColor;
           leds[57]=ledColor;}
      else {leds[56]=0x000000;
            leds[57]=0x000000;
    };
  for(int i=1;i<=4;i++){
    int digit = Now % 10; // get last digit in time
    if (i==1){
//      Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
      cursor =86;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==2){
//      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
      cursor -=58;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==3){
//      Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
      cursor =28;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==4){
//      Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
      cursor =0;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    Now /= 10;
  };
};
void DSTcheck(){
   int buttonDST = digitalRead(2);
//   Serial.print("DST is: ");Serial.println(DST);
   if (buttonDST == LOW){
    if (DST){
      DST=false;
//      Serial.print("Switching DST to: ");Serial.println(DST);
      }
      else if (!DST){
        DST=true;
//        Serial.print("Switching DST to: ");Serial.println(DST);
      };
   delay(500);   
   };
  }

void TimeAdjust(){
  int buttonH = digitalRead(5);
  int buttonM = digitalRead(4);
  if (buttonH == LOW || buttonM == LOW){
    delay(500);
    tmElements_t Now;
    RTC.read(Now);
    int hour=Now.Hour;
    int minutes=Now.Minute;
    int second =Now.Second;
      if (buttonH == LOW){
        if (Now.Hour== 23){Now.Hour=0;}
          else {Now.Hour += 1;};
        }else {
          if (Now.Minute== 59){Now.Minute=0;}
          else {Now.Minute += 1;};
          };
    RTC.write(Now);
    }
  }
void loop()  // Main loop
{
  BrightnessCheck(); // Check brightness
  DSTcheck(); // Check DST
  TimeAdjust(); // Check to se if time is geting modified
  TimeToArray(); // Get leds array with required configuration
  FastLED.show(); // Display leds array
}


Si je comprend bien je doit supprimer tout les ; après les accolades fermante ?

ASSM

#20
May 23, 2018, 06:09 pm Last Edit: May 23, 2018, 06:13 pm by ASSM
Bonsoir


Je viens de faire les essais et le programme qui fonctionne est celui suivant.


Un grand Merci a lesept pour ton aide.

Code: [Select]
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
#include "FastLED.h"
#define NUM_LEDS 114 // Number of LED controles (remember I have 3 leds / controler
#define COLOR_ORDER BRG  // Define color order for your strip
#define DATA_PIN 6  // Data pin for led comunication

CRGB leds[NUM_LEDS]; // Define LEDs strip
byte digits[10][28] = {
  {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //0
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, //1
  {1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, //2
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //3
  {1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1}, //4
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //5
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1}, //6
  {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, //7
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
  {1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //9 | 2D Array for numbers on 7 segment
  };
bool Dot = true;  //Dot state
bool DST = false; //DST state
int ledColor = 0x0000FF; // Color used (in hex)
void setup(){
//  Serial.begin(9600);
//  Wire.begin();
  LEDS.addLeds<WS2811, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // Set LED strip type
  LEDS.setBrightness(255); // Set initial brightness
  pinMode(2, INPUT_PULLUP); // Define DST adjust button pin
  pinMode(4, INPUT_PULLUP); // Define Minutes adjust button pin
  pinMode(5, INPUT_PULLUP); // Define Hours adjust button pin
}
// Get time in a single number, if hours will be a single digit then time will be displayed 155 instead of 0155
int GetTime(){
  tmElements_t Now;
  RTC.read(Now);
  //time_t Now = RTC.Now();// Getting the current Time and storing it into a DateTime object
  int hour=Now.Hour;
  int minutes=Now.Minute;
  int second =Now.Second;
  if (second % 2==0) {Dot = false;}
    else {Dot = true;};
  return (hour*100+minutes);
  };

// Check Light sensor and set brightness accordingly
void BrightnessCheck(){
  const byte sensorPin = 3; // light sensor pin
  const byte brightnessLow = 5; // Low brightness value
  const byte brightnessHigh = 255; // High brightness value
  int sensorValue = digitalRead(sensorPin); // Read sensor
  if (sensorValue == 0) {LEDS.setBrightness(brightnessHigh);}
  else {LEDS.setBrightness(brightnessLow);} 
  };
 
// Convert time to array needet for display
void TimeToArray(){
  int Now = GetTime();  // Get time
  int cursor = 0;
 
//  Serial.print("Time is: ");Serial.println(Now);
  if (DST){   // if DST is true then add one hour
   Now+=100;
//   Serial.print("DST is ON, time set to : ");Serial.println(Now);
  };
  if (Dot){leds[56]=ledColor;
           leds[57]=ledColor;}
      else {leds[56]=0x000000;
            leds[57]=0x000000;
    };
  for(int i=1;i<=4;i++){
    int digit = Now % 10; // get last digit in time
    if (i==1){
//      Serial.print("Digit 4 is : ");Serial.print(digit);Serial.print(" ");
      cursor =0;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==2){
//      Serial.print("Digit 3 is : ");Serial.print(digit);Serial.print(" ");
      cursor =28;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==3){
//      Serial.print("Digit 2 is : ");Serial.print(digit);Serial.print(" ");
      cursor =58;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    else if (i==4){
//      Serial.print("Digit 1 is : ");Serial.print(digit);Serial.print(" ");
      cursor =86;
   for (int k = 0; k <= 27; k++) {
        //        Serial.print(digits[digit][k]);
        leds[cursor+k] = ledColor * digits[digit][k];
        cursor ++;
      }
//      Serial.println();
      }
    Now /= 10;
  };
};
void DSTcheck(){
   int buttonDST = digitalRead(2);
//   Serial.print("DST is: ");Serial.println(DST);
   if (buttonDST == LOW){
    if (DST){
      DST=false;
//      Serial.print("Switching DST to: ");Serial.println(DST);
      }
      else if (!DST){
        DST=true;
//        Serial.print("Switching DST to: ");Serial.println(DST);
      };
   delay(500);   
   };
  }

void TimeAdjust(){
  int buttonH = digitalRead(5);
  int buttonM = digitalRead(4);
  if (buttonH == LOW || buttonM == LOW){
    delay(500);
    tmElements_t Now;
    RTC.read(Now);
    int hour=Now.Hour;
    int minutes=Now.Minute;
    int second =Now.Second;
      if (buttonH == LOW){
        if (Now.Hour== 23){Now.Hour=0;}
          else {Now.Hour += 1;};
        }else {
          if (Now.Minute== 59){Now.Minute=0;}
          else {Now.Minute += 1;};
          };
    RTC.write(Now);
    }
  }
void loop()  // Main loop
{
  BrightnessCheck(); // Check brightness
  DSTcheck(); // Check DST
  TimeAdjust(); // Check to se if time is geting modified
  TimeToArray(); // Get leds array with required configuration
  FastLED.show(); // Display leds array
}


Maintenant est il possible de faire un chronomètre en affichant les 'MM:SS' qui va jusqu'à 45 minutes,
en intégrant un Bouton Poussoir pour le Start un Pour le Stop et un Pour la remise à Zéro ?
Bien sur en gardant la meme base.

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ASSM

Oui mais je sèche un peu pour savoir comment faire.

lesept

Tu veux ajouter 3 boutons poussoir ?
Déjà, tu commences par les définir et les initialiser. Voir ici pour un très bon tuto... mais tu l'as déjà fait...

Ensuite tu continues comme tu as fait pour l'instant : tu crées une fonction qui s'appelle par exemple CheckBtn qui lit l'état de tes nouveaux boutons.
Si le bouton reset est appuyé : tu mets l'heure à 0.
Pour les autres boutons c'est un peu plus compliqué, car on doit savoir si on est dans l'état "affichage de l'heure" ou dans l'état "chronomètre" : comment vois-tu ça ? Qu'est ce qui dira à l'Arduino qu'il doit faire l'un ou l'autre ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ASSM

Je souhaite faire un deuxieme module pour le chronometre donc avec un deuxieme Arduino.

ASSM

Comme cela j'aurais 4 digits pour l'horloge qui est terminée et 4 autres digits pour le chronomètre 'MM:SS'
qui s'arrêtera a 45:00.

Avec un Bouton Poussoir pour le Start.
Un Bouton Poussoir pour Stop(Pause).
Un Bouton Poussoir pour la remise a zero.

Je vais donc utiliser un deuxieme Nano arduino Une deuxieme RTC Un autre ruban leds de 112 leds et 3 Boutons Poussoirs.

Toute votre aide sera la bienvenue pour etablir ce programme.

lesept

Il faut réutiliser au maximum les fonctions que tu as déjà dans ton premier code.

Dans le nouveau, la loop doit faire une vérification du temps : chaque seconde, le code doit mettre l'heure à jour. Ça se fait avec millis()

Code: [Select]
if (millis()-dernierTempsChrono > 1000)
{
...
... code pour avancer le chronomètre d'une seconde et afficher le temps passé ...
...
dernierTempsChrono = millis();
}
avec une déclaration en entête du programme
Code: [Select]
unsigned long dernierTempsChrono ;et une initialisation dans le setup
Code: [Select]
dernierTempsChrono  = millis();

Ensuite, après l'accolade du test, il faut vérifier les boutons :
  • bouton start : appel fonction StartChrono
  • bouton stop : appel fonction StopChrono
  • bouton reset : appel fonction ResetChrono

et on va écrire ces fonctions, même si elle sont très simples.

  • StartChrono va mettre à jour une variable booléenne (appelée par exemple EtatChrono) à true, pour dire que le chrono est lancé. Cette variable doit être globale pour être accessible dans les fonctions. Il faut la déclarer dans l'entête et l'initialiser à false.
  • StopChrono va faire la même chose mais à false
  • ResetChrono va remettre l'heure affichée par le chrono à 0.
Exemple :
Code: [Select]
void StartChrono () {
   EtatChrono = true;
}
---> Pas dur ! :)

Ensuite, comme on a ajouté cette variable booléenne, il faut la prendre en compte dans le if de tout à l'heure. La mise à jour du temps affiché par le chrono (c'est à dire ajouter une seconde) ne se fait que si EtatChrono est True.
Code: [Select]
if (millis()-dernierTempsChrono > 1000)
{
  if (EtatChrono)
     {
      MiseAJour();
      AfficheHeure();
     }
  dernierTempsChrono = millis();
}
... ensuite test des boutons ... (tu sais faire) et appel des fonctions selon l'état des boutons


La fonction MiseAJour() sera appelée toutes les secondes, puisqu'elle est appelée lorsque la seconde est passée (le if du début). Elle ne fera qu'ajouter une seconde, en vérifiant qu'au passage à 60, les secondes reviennent à 0 et les minutes s'incrémentent.
AfficheHeure c'est la même chose que ta fonction TimeToArray sans la première ligne (GetTime).

Enfin, que se passe t-il à 45:00 ? Le chrono s'arrête ? Se remet à 0 ? Il faut gérer ça. Après l'affichage tu testes si l'heure est supérieure à 4500 et tu agis en conséquence.

J'espère que c'est clair. C'est comme ça que je ferais...
Bon courage !
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Waryard

#27
May 24, 2018, 12:27 am Last Edit: May 24, 2018, 12:34 am by Waryard
Bonjour

J'aimerais construire une horloge géante a base de ruban leds WS2812.

Chaque segment comporte 4 leds et il y aura deux leds entre les heures et les minutes pour le clignotement des secondes.(cela fera un total de 114 leds)

Suivant le code ci-dessous il fonctionne parfaitement avec des segments de 1 led.

Comment puis je le modifier pour pouvoir l'adapter a ma situation.

Pour pouvoir faire clignoter les deux leds des secondes j'arrive a modifier le code mais pas pour le restant.

Merci d'avance et dans l'attente de vos réponses.
Salut !

J'ai le même projet que toi, mêmes LEDs



J'ai commandé 2m avec 60LEDs/m soit 120 LEDs

Au départ, j'avais prévu du 3 LEDs/segment et 30 LEDs en ligne au dessus pour les secondes (1 LED allumée = x Min 02 Sec etc..), au final je songe maintenant à faire du 2 LEDs/segment tellement c'est imposant...

Avec 3 LEDs/seg j'ai comme mesures :
- 52cm de largeur avec 30 LEDs dans une colonne (nombre total de LEDs qui rentrent dans 52cm, un espace vaut autant qu'une LED)
- 16,5cm de hauteur avec 10 LEDs dans une ligne
Mon schema excel sera peut-être plus parlant, cases de couleur = LED, cases blanches =  espace, flèches bleues = soudures

Avec du 2LEDs/seg tout est réduit d'un tiers
- 35cm de largeur avec 20LEDs dans une colonne
- 11cm de hauteur avec 8LEDs dans une ligne

J'ai passé un temps fou sur un code de 500 lignes avec au choix sync de l'heure par serveur NTP sur ESP8266, SoftRTC ou HardRTC (ou SoftRTC + NTP à la fréquence choisie pour éviter la perte), lorsqu'il sera fonctionnel je le posterai

Par contre, je ne comprends pas pourquoi tu t'embête avec une alim de PC, j'ai mesuré mes 120 LEDs allumées toutes en blanc (RGB en même temps), 0,95 A à 1,1 A au total grand max !
Du coup pour les tests je les alimente directement avec l'USB de mon PC, puis en définitif avec un chargeur de portable 2 A
(A savoir que j'ai réalisé la mesure sur un chargeur 5v 4A (OnePlus 5T), les LEDs éclairaient au max et ne consommaient pas plus d'1,1 A) donc vu qu'en affichant l'heure je ne dépasse jamais 700mA un chargeur 2A sera amplement suffisant...

[EDIT] Impossible d'attacher mon xlsx, je le poste en capture d'écran :


ASSM

Bonjour

Merci à lesept pour ton explication je vais travailler dessus.

Pour répondre a Waryard j'utilise une alimentation de PC tout simplement car j'en ai d'avance et au final c'est un projet pour un panneau d'affichage de football qui comprend :

-un module horloge 'HH:MM' (114 leds)

-un module chronomètre 'MM:SS'(avec un start ,un Stop ,un Reset) et qui s'arrête et se fige sur 45:00 en fin de période. (112 leds)

Sur le module chronomètre il sera possible de choisir entre une période de 45:00 ou 15:00 (en cas de prolongation)

-un module compteur de point (de 0 à 99) pour l'équipe locale (98 leds pour ce module)
-un module compteur de point (de 0 à 99) pour l'équipe visiteuse  (98 leds pour ce module)
Sur les modules compteur il y aura (un BP pour incrémenter ,un BP pour décrémenter ,un BP pour le reset)

le panneau d'affichage comprendra au total 422 leds

Cela me permettra aussi de récupérer le 3.3V de l'alim PC pour pouvoir alimenter en permanence la sauvegarde du RTC a la place de la pile cr3022 qui risquerai de se décharger trop rapidement.

Le panneau d'affichage sera utilisé surtout le weekend.

Bien Sur il y aura une photo de la réalisation finie(il ne reste plus que le code du chrono et pour le score)

ASSM

#29
May 25, 2018, 11:46 am Last Edit: May 25, 2018, 11:51 am by ASSM
Bonjour

Je viens de trouver ce code sur internet pour mon chronomètre.

il faudrait pouvoir l'adapter pour qu'il puisse s'arrêter a '45:00'.

Avoir le choix par un interrupteur du choix de la période ('45:00' ou '15:00')

Enlever la fonction du buzzer.

Simplement avoir la fonction (Start ,Stop ,Reset)

Voici le code en pièce jointe.


Si je pouvais avoir un peu d'aide.(voir beaucoup)

Go Up