Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Index du Forum



double compteurs horaire


 
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Projets
Sujet précédent :: Sujet suivant  
Auteur Message
myosotys60
Débutant

Hors ligne

Inscrit le: 09 Oct 2013
Messages: 3
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Mer 9 Oct - 12:03 (2013)    Sujet du message: double compteurs horaire Répondre en citant

PublicitéSupprimer les publicités ?
Bonjour à tous,

Mon projet est un double compteur horaire dont un peut être remis a zéro. je travaille sur un arduino uno + lcd 2x16.
J'ai crée deux compteurs horaires (jour (00000) + heure + minute + seconde). Lorsqu'il y a présence du +5v (pin A0), mes compteurs s'incrémentent, ils s’arrêtent dés l'absence du +5v.
Si j appuis sur un BP (pin8) le compteur 2 se remet à zéro.
Jusque là, j'y suis arrivé. Okay Very Happy

Là ou je bloque Sad , c'est que à chaque arrêt, je voudrai enregistrer les deux compteurs dans un eeprom externe, de sorte que s'il y a coupure de courant, ils reprennent là ou ils se sont arrêtés.
J ai récupéré un EEPROM PCF8582C-2 mais je n arrive pas a écrire dessus et je ne sais pas comment récupéré les infos afin que les compteurs repartent depuis le dernier enregistrement voila mon problème.
Voici mon code sans les lignes pour l'EEPROM (d'ailleurs existe t il une bibliothèque pour le PCF8582C-2 ?).
Je pense qu'on peut optimiser le code pour gagner quelques octets.

 
Code:
 /*The circuit:
 * LCD RS pin to digital pin 7
 * LCD Enable pin to digital pin 6
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 * BP to digital pin 8
* presence 5v to pin A0
 */

#include <LiquidCrystal.h>

// initialisation broches LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

// Déclaration des variables
byte jour1, heure1, minute1, seconde1, jour2, heure2, minute2, seconde2;   
int RAZH2=8;

void setup() {
 
  // Initialise la liaison série
  Serial.begin(9600);
 
  // initialisation lignes-colonnes LCD
  lcd.begin(20, 4);
 
  //Initialisation RAZ
  pinMode(RAZH2, INPUT);

  seconde1=millis();
  seconde2=millis();  
}

void horloge1()   {
     
  // calcule temps  
    
    seconde1++;             // on additionne 1 seconde
    if(seconde1>=60){         // lorsque les secondes arrivent a 60
      minute1++;              // on additionne 1 minute
      seconde1=0;            // et on remet les seconde a zero
      if(minute1>=60){        // lorsque les minutes arrivent a 60
        heure1++;             // on additionne 1 heure
        minute1=0;          // et on remet .... etc, etc
        if(heure1>=24){
          jour1++;
          heure1=0;
        }
      }
    }
  }
   
void horloge2()   {
 
  seconde2++;             // on additionne 1 seconde
    if(seconde2>=60){         // lorsque les secondes arrivent a 60
      minute2++;              // on additionne 1 minute
      seconde2=0;            // et on remet les seconde a zero
       if(minute2>=60){        // lorsque les minutes arrivent a 60
        heure2++;             // on additionne 1 heure
        minute2=0;          // et on remet .... etc, etc
        if(heure2>=24){
          jour2++;
          heure2=0;
        }
      }
    }
  }   

void loop() {
  int sensorValue = analogRead(A0); // lit la valeur analogique sur la broche A0
  if(sensorValue>1000)
   {
     horloge1();
     horloge2();
     }


// affichage horaire1 sur sur LCD
lcd.setCursor (0,0);
if(jour1<10000){lcd.print("00000");}
  lcd.print(jour1);
  Serial.print(jour1);
  lcd.print("  ");
  Serial.print("   ");
  if(heure1<10){lcd.print("0");}
  lcd.print(heure1);
  Serial.print(heure1);
  lcd.print(":");  
  Serial.print(":");
  if(minute1<10){lcd.print("0");}
  lcd.print(minute1);
  Serial.print(minute1);
  lcd.print(":");
  Serial.print(":");
  if(seconde1<10){lcd.print("0");}  
  lcd.print(seconde1);
Serial.print(seconde1);
Serial.print("     ");
 
  // affichage horaire2 sur LCD
  lcd.setCursor(0,3);
  if(jour2<10000){lcd.print("00000");}
  lcd.print(jour2);
  Serial.print(jour2);
  lcd.print("  ");
  Serial.print("  ");
  if(heure2<10){lcd.print("0");}
  lcd.print(heure2);
  Serial.print(heure2);
  lcd.print(":");  
  Serial.print(":");
  if(minute2<10){lcd.print("0");}
  lcd.print(minute2);
  Serial.print(minute2);
  lcd.print(":");
  Serial.print(":");
  if(seconde2<10){lcd.print("0");}  
  lcd.print(seconde2);   
    Serial.println(seconde2);
    
  // remise à zéro horaire2  
  int val=digitalRead(RAZH2);
  if(val==HIGH)
    {
  seconde2=0;
  minute2=0;
  heure2=0;
  jour2=0;
     }

  delay(1000);
}
Je suis ouvert a toutes remarques pour l amélioration de ce programme
Bonne journée
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 10:34 (2017)    Sujet du message: double compteurs horaire

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Projets Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino