TP3_exo1

Dependencies:   lib_LCD_i2c_SPTLYI mbed

Committer:
mbedo
Date:
Thu Oct 23 12:15:16 2014 +0000
Revision:
0:c837f6eaca77
TP3_exo1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedo 0:c837f6eaca77 1 #include "mbed.h"
mbedo 0:c837f6eaca77 2
mbedo 0:c837f6eaca77 3 #include "lib_LCD_i2c_SPTLYI.h"
mbedo 0:c837f6eaca77 4 Timer t; // On initialise notre timer
mbedo 0:c837f6eaca77 5 InterruptIn button(p15); // On initialise nos interruptions qui seront ici nos boutons poussoirs p15,p17 et p18
mbedo 0:c837f6eaca77 6 InterruptIn button2(p17);
mbedo 0:c837f6eaca77 7 InterruptIn button3(p18);
mbedo 0:c837f6eaca77 8 LCD_I2C LCD(p28,p27,p26,0x7C); // On initialise la bibliothèque LCD
mbedo 0:c837f6eaca77 9
mbedo 0:c837f6eaca77 10 int timer=0;
mbedo 0:c837f6eaca77 11 int min=0; // Le timer, le temps en min et en ms sont initialisés à 0
mbedo 0:c837f6eaca77 12 int timer_ms = 0;
mbedo 0:c837f6eaca77 13
mbedo 0:c837f6eaca77 14 void fonction_demarrer() // On créer 3 fonctions d'interruptions :
mbedo 0:c837f6eaca77 15 {
mbedo 0:c837f6eaca77 16 t.start(); // La f fonction démarrer dans laquelle on fait démarrer le timer
mbedo 0:c837f6eaca77 17 }
mbedo 0:c837f6eaca77 18 void fonction_arreter()
mbedo 0:c837f6eaca77 19 {
mbedo 0:c837f6eaca77 20 t.stop(); // La fonction arrêter pour laquelle le timer s'arrête
mbedo 0:c837f6eaca77 21
mbedo 0:c837f6eaca77 22 }
mbedo 0:c837f6eaca77 23 void fonction_reset()
mbedo 0:c837f6eaca77 24 {
mbedo 0:c837f6eaca77 25 t.reset(); // Et la fonction reset pour alquelle le timer se réinitialise à 0
mbedo 0:c837f6eaca77 26 }
mbedo 0:c837f6eaca77 27 int main()
mbedo 0:c837f6eaca77 28 {
mbedo 0:c837f6eaca77 29 button.fall(&fonction_demarrer); // Dans le programme principale on crée nos interruptions lorsque le bouton 1 est enclenché
mbedo 0:c837f6eaca77 30 button3.fall(&fonction_arreter); // la fonction démarrer est appelé de même pour les fonctions arrêter et reset pour
mbedo 0:c837f6eaca77 31 button2.fall(&fonction_reset); // les boutons poussoirs 2 et 3 respectivement.
mbedo 0:c837f6eaca77 32 while(1) {
mbedo 0:c837f6eaca77 33 LCD.clear();
mbedo 0:c837f6eaca77 34 LCD.set_position_cursor(0,0);
mbedo 0:c837f6eaca77 35 LCD.print(min); // Lorsque le timer a démarré, on place les curseurs pour qu'il nous affiche les min
mbedo 0:c837f6eaca77 36 if(min>=60) {
mbedo 0:c837f6eaca77 37 t.reset(); // Si le timer dépasse l'heure cad plus de 60 min, il se reset
mbedo 0:c837f6eaca77 38 }
mbedo 0:c837f6eaca77 39 LCD.set_position_cursor(2,0);
mbedo 0:c837f6eaca77 40 LCD.print(":"); // on sépare les minutes des secondes et les secondes des millisecondes grâce à des :
mbedo 0:c837f6eaca77 41 LCD.set_position_cursor(5,0);
mbedo 0:c837f6eaca77 42 LCD.print(":");
mbedo 0:c837f6eaca77 43 LCD.set_position_cursor(3,0);
mbedo 0:c837f6eaca77 44 timer = t.read(); // on entre la valeur des secondes dans timer et on demande d'écrire timer sur l'écran LCD
mbedo 0:c837f6eaca77 45 LCD.print(timer);
mbedo 0:c837f6eaca77 46 if (timer>=60) {
mbedo 0:c837f6eaca77 47 t.reset(); // Si la valeur en secondes dépasse les 60 on incrémente les minutes de 1
mbedo 0:c837f6eaca77 48 LCD.set_position_cursor(4,0);
mbedo 0:c837f6eaca77 49 LCD.print(" ");
mbedo 0:c837f6eaca77 50 min=min+1;
mbedo 0:c837f6eaca77 51 }
mbedo 0:c837f6eaca77 52 LCD.set_position_cursor(6,0);
mbedo 0:c837f6eaca77 53 timer_ms = t.read_ms(); // On entre le valeur en millisecondes dans timer_ms puis on l'écrit sur l'écran LCD
mbedo 0:c837f6eaca77 54 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
mbedo 0:c837f6eaca77 55 wait_ms(10); // L'affichage se fait toutes les 10ms
mbedo 0:c837f6eaca77 56 }
mbedo 0:c837f6eaca77 57 }