thibault lottin / Mbed 2 deprecated TP3_exo1

Dependencies:   lib_LCD_i2c_SPTLYI mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers chronometre.cpp Source File

chronometre.cpp

00001 #include "mbed.h"
00002 
00003 #include "lib_LCD_i2c_SPTLYI.h"
00004 Timer t;    // On initialise notre timer
00005 InterruptIn button(p15);    // On initialise nos interruptions qui seront ici nos boutons poussoirs p15,p17 et p18
00006 InterruptIn button2(p17);
00007 InterruptIn button3(p18);
00008 LCD_I2C LCD(p28,p27,p26,0x7C);  // On initialise la bibliothèque LCD
00009 
00010 int timer=0;
00011 int min=0;      // Le timer, le temps en min et en ms sont initialisés à 0
00012 int timer_ms = 0;
00013 
00014 void fonction_demarrer()        // On créer 3 fonctions d'interruptions :
00015 {
00016     t.start();                  // La f fonction démarrer dans laquelle on fait démarrer le timer
00017 }
00018 void fonction_arreter()
00019 {
00020     t.stop();                   // La fonction arrêter pour laquelle le timer s'arrête
00021 
00022 }
00023 void fonction_reset()
00024 {
00025     t.reset();                  // Et la fonction reset pour alquelle le timer se réinitialise à 0
00026 }
00027 int main()
00028 {
00029     button.fall(&fonction_demarrer);    // Dans le programme principale on crée nos interruptions lorsque le bouton 1 est enclenché
00030     button3.fall(&fonction_arreter);    // la fonction démarrer est appelé de même pour les fonctions arrêter et reset pour
00031     button2.fall(&fonction_reset);      // les boutons poussoirs 2 et 3 respectivement.
00032     while(1) {
00033         LCD.clear();
00034         LCD.set_position_cursor(0,0);
00035         LCD.print(min);                   // Lorsque le timer a démarré, on place les curseurs pour qu'il nous affiche les min
00036         if(min>=60) {
00037             t.reset();                      // Si le timer dépasse l'heure cad plus de 60 min, il se reset
00038         }
00039         LCD.set_position_cursor(2,0);
00040         LCD.print(":");                     // on sépare les minutes des secondes et les secondes des millisecondes grâce à des :
00041         LCD.set_position_cursor(5,0);
00042         LCD.print(":");
00043         LCD.set_position_cursor(3,0);
00044         timer =  t.read();                  // on entre la valeur des secondes dans timer et on demande d'écrire timer sur l'écran LCD
00045         LCD.print(timer);
00046         if (timer>=60) {
00047             t.reset();                      // Si la valeur en secondes dépasse les 60 on incrémente les minutes de 1
00048             LCD.set_position_cursor(4,0);
00049             LCD.print(" ");
00050             min=min+1;
00051         }
00052         LCD.set_position_cursor(6,0);
00053         timer_ms =  t.read_ms();        // On entre le valeur en millisecondes dans timer_ms puis on l'écrit sur l'écran LCD
00054         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
00055         wait_ms(10);        //  L'affichage se fait toutes les 10ms
00056     }
00057 }