Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Fonction Chrono
17-01-2016, 10:34 PM,
#1
Fonction Chrono
Bonjour à tous,
Je suis totalement débutant en programmation. J’ai une carte Pic 32 pinguino Otg couplé à un écran 2*16 lcd keypad shiel V1.0. Mon problème est que j’essaye de faire un chronomètre ou un compteur à interruption pas action sur un bouton mais pas moyen… Si quelqu’un à une idée je suis preneur ou si vous avez besoin de plus d’info n’hésitez pas. Voici aussi un début de programme. Merci


/*-----------------------------------------------------
Author:  --<>
Date: Tue Dec 01 16:08:58 2015
Description:

-----------------------------------------------------*/

#include <analog.c>
#include <lcdlib.c>

int lcd_key     = 0;
int adc_key_in  = 0;

#define Trepos 500
#define Tactif 500

int statut      = 0; // Valeur 0 en attente, 1 actif, 2 repos.
int s_sauv      = 0;
int m_sauv      = 0;
int h_sauv      = 0;

#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

int read_LCD_buttons(){               // read the buttons
   adc_key_in = analogRead(0);       // read the value from the sensor
   
    if (adc_key_in > 1000) return btnNONE;
    if (adc_key_in < 50)   return btnRIGHT;  
    if (adc_key_in < 290)  return btnUP;
    if (adc_key_in < 500)  return btnDOWN;
    if (adc_key_in < 750)  return btnLEFT;
    if (adc_key_in < 922) return btnSELECT;  
   
    return btnNONE;               // when all others fail, return this.
}

// This function is called every sec. by timer 0

void chrono()
{
   u32 t,r;
   u8 d,h,m,s;
   
   t = millis() / 1000;   // time in sec.
   d = t / 86400;         // days
   r = t % 86400;
   h = r / 3600;          // hours
   r = t % 3600;
   m = r / 60;            // minutes
   s = t % 60;            // seconds

   lcd.setCursor(0, 1);
   lcd.printf("Uptime %02d:%02d:%02d", h,m,s);
}

void setup()
{
   pinMode(10, OUTPUT);
   digitalWrite(10, HIGH);
   lcd.pins(8, 9, 4, 5, 6, 7, 0, 0, 0, 0);
   lcd.begin(16, 2);
   lcd.setCursor(4, 0);
   lcd.print("Bonjour!");
   delay(5000);
   
}

void loop()
{
   lcd.clear();
   lcd.setCursor(4, 0);
   lcd.print("Pret ? ");
   lcd.setCursor(1, 1);
   lcd.print("UP to start");
   lcd_key = read_LCD_buttons();
       switch (lcd_key){
       case btnUP:{
            lcd.print("UP    ");  //  push button "UP" and show the word on the screen
            break;//if (lcd_key = btnUP){
        cycle();  //lcd.begin  //renvoi ver void cycle
       //break;
       }
      }  
               
}




void cycle()
{
   lcd.clear();
   lcd.setCursor(4, 0);
   lcd.print("Actif");
   lcd.setCursor(1, 1);
   chrono(chrono, 1000); //OnTimer1(chrono, INT_MILLISEC, 1000);
   delay(Tactif); //%02d,
   int s = 0;
   int m = 0;
   int h = 0;
   lcd.clear();
   lcd.setCursor(4, 0);
   lcd.print("Repos");
   lcd.setCursor(1, 1);
   chrono(chrono, 1000);//OnTimer1(chrono, INT_MILLISEC, 1000);
   delay(Trepos);// %02d,
   lcd.clear();
   lcd.setCursor(4, 0);
   lcd.print("Entrainement Terminé");
   delay(5000);
   return;// ici renvoi ver void loop
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)