Jules Rochette / Mbed 2 deprecated TP3exo1

Dependencies:   mbed lib_LCD_oem lib_LCD_i2c_SPTLYI

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "lib_LCD_i2c_SPTLYI.h"
00003 #include "lib_LCD_oem_ELCD.h"
00004 
00005 /* GUIDE D'UTILISATION
00006 Appuyer sur le bouton de droite pour lancer le timer
00007 Appuyer sur le bouton du milieu pour mettre le chronomètre en pause
00008 Appuyer sur le bouton de gauche pour réinitialiser le time
00009 */
00010 
00011 
00012 Timer t;                         // On va utiliser timer
00013 InterruptIn boutondroit(p15);    // Nous attribuons un nom pour les boutons en indiquant leurs ports
00014 InterruptIn boutonmilieu(p16);
00015 InterruptIn boutongauche(p17);
00016 LCD_OEM LCD;           // On ouvre la bibliotheque lcd
00017  
00018 int sec=0;        // On initialise les 
00019 int minu=0;      // Le timer, le temps en min et en ms sont initialisés à 0
00020 int timer_ms = 0;
00021  
00022 void fonction_demarrer()        // On créer 3 fonctions d'interruptions :
00023 {
00024     t.start();                  // La f fonction démarrer dans laquelle on fait démarrer le timer
00025 }
00026 void fonction_arreter()
00027 {
00028     t.stop();                   // La fonction arrêter pour laquelle le timer s'arrête
00029  
00030 }
00031 void fonction_reset()
00032 {
00033     t.reset();                  // Fonction reset ou le timer se reinitialise
00034 }
00035 int main()
00036 {
00037     boutongauche.fall(fonction_demarrer);    // Le bouton de gauche active la fonction démarrer
00038     boutonmilieu.fall(fonction_arreter);    // le bouton du milieu active la fonction d'arret
00039     boutondroit.fall(fonction_reset);      // Le bouton de droite active la fonction de reset
00040     while(1) {
00041         LCD.clear();                        //on efface tout sur l'écran pour ne pas avoir de superposition des caractères
00042         LCD.set_position_cursor(0,0);       //On choisit l'endroit où on va écrire
00043         LCD.print("Minutes [");
00044         LCD.set_position_cursor(9,0);
00045         LCD.print(minu);                   // On demande à afficher les minutes
00046         if(minu>=60) {                      // Les minutes se réinitialise si elles atteignent 60 (1 heure)
00047             t.reset();                      // fonction reset pour réinitialiser en cas de depassement
00048         }
00049         
00050         //on va utiliser la même méthodes pour les secondes
00051         
00052         LCD.set_position_cursor(11,0);      
00053         LCD.print("]");                     
00054         LCD.set_position_cursor(0,1);      // on veut afficher les secondes sur la deuxième ligne
00055         LCD.print("Secondes [");
00056         LCD.set_position_cursor(10,1);
00057         LCD.print(sec);
00058         sec =  t.read();                  // on entre la valeur des secondes dans timer et on demande d'écrire timer sur l'écran LCD
00059         if (sec>=60) {
00060             t.reset();                      // Les secondes reviennent à zéro quand elles atteignent la minute
00061             LCD.set_position_cursor(4,1);
00062             LCD.print(" "); 
00063             minu=minu+1;
00064         }
00065         LCD.set_position_cursor(12,1);
00066         LCD.print("]");
00067         LCD.set_position_cursor(0,2);
00068         LCD.print("millisecondes [");
00069         LCD.set_position_cursor(15,2);
00070         timer_ms =  t.read_ms();        
00071         LCD.print(timer_ms%1000);       // %1000 permet de garder une valeur dans l'intervalle [0;999]
00072         wait_ms(250);               //  L'affichage se fait toutes les 250ms. Meme si on nous demande toutes les 10ms
00073                                     // cela fait se rafraichir l'écran trop vite et les millisecondes ne sont pas visibles
00074                                     // on met donc un wait de 250
00075                                 
00076         LCD.set_position_cursor(18,2);
00077         LCD.print("]");
00078     }
00079 }