TP3_exo1
Dependencies: lib_LCD_i2c_SPTLYI mbed
chronometre.cpp@0:c837f6eaca77, 2014-10-23 (annotated)
- Committer:
- mbedo
- Date:
- Thu Oct 23 12:15:16 2014 +0000
- Revision:
- 0:c837f6eaca77
TP3_exo1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |