TP3_exo1

Dependencies:   lib_LCD_i2c_SPTLYI mbed

chronometre.cpp

Committer:
mbedo
Date:
2014-10-23
Revision:
0:c837f6eaca77

File content as of revision 0:c837f6eaca77:

#include "mbed.h"

#include "lib_LCD_i2c_SPTLYI.h"
Timer t;    // On initialise notre timer
InterruptIn button(p15);    // On initialise nos interruptions qui seront ici nos boutons poussoirs p15,p17 et p18
InterruptIn button2(p17);
InterruptIn button3(p18);
LCD_I2C LCD(p28,p27,p26,0x7C);  // On initialise la bibliothèque LCD

int timer=0;
int min=0;      // Le timer, le temps en min et en ms sont initialisés à 0
int timer_ms = 0;

void fonction_demarrer()        // On créer 3 fonctions d'interruptions :
{
    t.start();                  // La f fonction démarrer dans laquelle on fait démarrer le timer
}
void fonction_arreter()
{
    t.stop();                   // La fonction arrêter pour laquelle le timer s'arrête

}
void fonction_reset()
{
    t.reset();                  // Et la fonction reset pour alquelle le timer se réinitialise à 0
}
int main()
{
    button.fall(&fonction_demarrer);    // Dans le programme principale on crée nos interruptions lorsque le bouton 1 est enclenché
    button3.fall(&fonction_arreter);    // la fonction démarrer est appelé de même pour les fonctions arrêter et reset pour
    button2.fall(&fonction_reset);      // les boutons poussoirs 2 et 3 respectivement.
    while(1) {
        LCD.clear();
        LCD.set_position_cursor(0,0);
        LCD.print(min);                   // Lorsque le timer a démarré, on place les curseurs pour qu'il nous affiche les min
        if(min>=60) {
            t.reset();                      // Si le timer dépasse l'heure cad plus de 60 min, il se reset
        }
        LCD.set_position_cursor(2,0);
        LCD.print(":");                     // on sépare les minutes des secondes et les secondes des millisecondes grâce à des :
        LCD.set_position_cursor(5,0);
        LCD.print(":");
        LCD.set_position_cursor(3,0);
        timer =  t.read();                  // on entre la valeur des secondes dans timer et on demande d'écrire timer sur l'écran LCD
        LCD.print(timer);
        if (timer>=60) {
            t.reset();                      // Si la valeur en secondes dépasse les 60 on incrémente les minutes de 1
            LCD.set_position_cursor(4,0);
            LCD.print(" ");
            min=min+1;
        }
        LCD.set_position_cursor(6,0);
        timer_ms =  t.read_ms();        // On entre le valeur en millisecondes dans timer_ms puis on l'écrit sur l'écran LCD
        LCD.print(timer_ms%1000);       // On crée un modulo 1000 pour les millisecondes ce qui permettra de garder une valeur comprise entre 0 et 999
        wait_ms(10);        //  L'affichage se fait toutes les 10ms
    }
}