FabLab Nîmes / Mbed 2 deprecated FabLab_Anemometre

Dependencies:   mbed

Committer:
Giamarchi
Date:
Tue Jan 15 15:55:11 2019 +0000
Revision:
1:95172f59262a
Parent:
0:531f33a2550d
Child:
2:c1a4641eeacf
Test TP 15 janv 2019

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:531f33a2550d 1 /*************************************/
Giamarchi 1:95172f59262a 2 // YNCREA ISEN Nîmes
Giamarchi 1:95172f59262a 3 // CSI3 Electronique Numérique
Giamarchi 0:531f33a2550d 4 //
Giamarchi 0:531f33a2550d 5 // Cours : Systèmes à microcontrôleur
Giamarchi 0:531f33a2550d 6 // Prof : Frédéric Giamarchi
Giamarchi 0:531f33a2550d 7 //
Giamarchi 1:95172f59262a 8 // Date : 15 janv 2019
Giamarchi 1:95172f59262a 9 // Test TP 01 : Controle de 8 Dels par 2 Boutons poussoir
Giamarchi 0:531f33a2550d 10 /*************************************/
Giamarchi 0:531f33a2550d 11 #include "mbed.h"
Giamarchi 0:531f33a2550d 12
Giamarchi 0:531f33a2550d 13 DigitalOut L0(PB_1);
Giamarchi 0:531f33a2550d 14 DigitalOut L1(PB_2);
Giamarchi 0:531f33a2550d 15 DigitalOut L2(PB_10);
Giamarchi 0:531f33a2550d 16 DigitalOut L3(PB_11);
Giamarchi 0:531f33a2550d 17 DigitalOut L4(PB_12);
Giamarchi 0:531f33a2550d 18 DigitalOut L5(PB_13);
Giamarchi 0:531f33a2550d 19 DigitalOut L6(PB_14);
Giamarchi 0:531f33a2550d 20 DigitalOut L7(PB_15);
Giamarchi 0:531f33a2550d 21
Giamarchi 1:95172f59262a 22 DigitalIn BTN3(PC_6);
Giamarchi 1:95172f59262a 23 DigitalIn BTN4(PC_5);
Giamarchi 1:95172f59262a 24
Giamarchi 1:95172f59262a 25 //DigitalOut BZ(PC_7);
Giamarchi 1:95172f59262a 26
Giamarchi 1:95172f59262a 27 //uint8_t L[8] = {L0, L1, L2, L3, L4, L5, L6, L7};
Giamarchi 0:531f33a2550d 28
Giamarchi 0:531f33a2550d 29 void set_8Dels(uint8_t position)
Giamarchi 0:531f33a2550d 30 {
Giamarchi 0:531f33a2550d 31 L0 = position & 0x01;
Giamarchi 0:531f33a2550d 32 L1 = position & 0x02;
Giamarchi 0:531f33a2550d 33 L2 = position & 0x04;
Giamarchi 0:531f33a2550d 34 L3 = position & 0x08;
Giamarchi 0:531f33a2550d 35 L4 = position & 0x10;
Giamarchi 0:531f33a2550d 36 L5 = position & 0x20;
Giamarchi 0:531f33a2550d 37 L6 = position & 0x40;
Giamarchi 0:531f33a2550d 38 L7 = position & 0x80;
Giamarchi 0:531f33a2550d 39 }
Giamarchi 0:531f33a2550d 40
Giamarchi 1:95172f59262a 41 uint8_t ptr_3 = 0;
Giamarchi 1:95172f59262a 42 uint8_t ptr_4 = 0;
Giamarchi 1:95172f59262a 43 uint8_t pointeur = 1;
Giamarchi 1:95172f59262a 44 uint8_t compteur = 0;
Giamarchi 1:95172f59262a 45 uint8_t etat_del = 0;
Giamarchi 1:95172f59262a 46 /***********************************************/
Giamarchi 1:95172f59262a 47 // Fonction Appui_BTN3
Giamarchi 1:95172f59262a 48 // Renvoie l'état actif ou relaché du bouton poussoir BTN3
Giamarchi 1:95172f59262a 49 uint8_t Appui_BTN3(void)
Giamarchi 1:95172f59262a 50 {
Giamarchi 1:95172f59262a 51 uint8_t etat_BTN3 = 0; // variable état BTN3 à 0 par défaut
Giamarchi 1:95172f59262a 52
Giamarchi 1:95172f59262a 53 if(!BTN3) // Test appui sur BTN3
Giamarchi 1:95172f59262a 54 {
Giamarchi 1:95172f59262a 55 wait(0.2); // tempo d'anti rebond
Giamarchi 1:95172f59262a 56 etat_BTN3 = 1; // variable à 1
Giamarchi 1:95172f59262a 57 }
Giamarchi 1:95172f59262a 58 return etat_BTN3; // La fonction renvoie la valeur 0 ou 1
Giamarchi 1:95172f59262a 59 }
Giamarchi 1:95172f59262a 60 /***********************************************/
Giamarchi 1:95172f59262a 61 // Fonction Appui_BTN4
Giamarchi 1:95172f59262a 62 // Renvoie l'état actif ou relaché du bouton poussoir BTN4
Giamarchi 1:95172f59262a 63 uint8_t Appui_BTN4(void)
Giamarchi 1:95172f59262a 64 {
Giamarchi 1:95172f59262a 65 uint8_t etat_BTN4 = 0;
Giamarchi 1:95172f59262a 66
Giamarchi 1:95172f59262a 67 if(!BTN4)
Giamarchi 1:95172f59262a 68 {
Giamarchi 1:95172f59262a 69 wait(0.2);
Giamarchi 1:95172f59262a 70 etat_BTN4 = 1;
Giamarchi 1:95172f59262a 71 }
Giamarchi 1:95172f59262a 72 return etat_BTN4;
Giamarchi 1:95172f59262a 73 }
Giamarchi 1:95172f59262a 74 /***********************************************/
Giamarchi 0:531f33a2550d 75 int main()
Giamarchi 1:95172f59262a 76 {
Giamarchi 0:531f33a2550d 77 while(1)
Giamarchi 0:531f33a2550d 78 {
Giamarchi 1:95172f59262a 79 /******** Question 1 ****************/
Giamarchi 1:95172f59262a 80 /*
Giamarchi 1:95172f59262a 81 L0 = Appui_BTN3(); // Contrôle L0 par BTN3
Giamarchi 1:95172f59262a 82 */
Giamarchi 1:95172f59262a 83 /******** Question 2 ****************/
Giamarchi 1:95172f59262a 84 /*
Giamarchi 1:95172f59262a 85 if(Appui_BTN3())
Giamarchi 0:531f33a2550d 86 {
Giamarchi 1:95172f59262a 87 pointeur <<=1; // Décalage vers la gauche
Giamarchi 1:95172f59262a 88 if(pointeur == 0) // Test Limite gauche
Giamarchi 1:95172f59262a 89 pointeur = 0x80; // Blocage
Giamarchi 1:95172f59262a 90 set_8Dels(pointeur); // Affichage
Giamarchi 1:95172f59262a 91 }
Giamarchi 1:95172f59262a 92 */
Giamarchi 1:95172f59262a 93 /******** Question 3 ****************/
Giamarchi 1:95172f59262a 94 /*
Giamarchi 1:95172f59262a 95 if(Appui_BTN4())
Giamarchi 1:95172f59262a 96 {
Giamarchi 1:95172f59262a 97 pointeur >>=1; // Décalage vers la droite
Giamarchi 1:95172f59262a 98 if(pointeur == 0) // Test Limite droite
Giamarchi 1:95172f59262a 99 pointeur = 1; // Blocage
Giamarchi 1:95172f59262a 100 set_8Dels(pointeur);
Giamarchi 1:95172f59262a 101 }
Giamarchi 1:95172f59262a 102 */
Giamarchi 1:95172f59262a 103 /******** Question 4 ****************/
Giamarchi 1:95172f59262a 104
Giamarchi 1:95172f59262a 105 wait_ms(10); // Execution toutes les 10 ms
Giamarchi 1:95172f59262a 106 compteur++; // Incrémente un compteur temps
Giamarchi 1:95172f59262a 107
Giamarchi 1:95172f59262a 108 if(Appui_BTN3())
Giamarchi 1:95172f59262a 109 {
Giamarchi 1:95172f59262a 110 ptr_3++; // incrémente un pointeur
Giamarchi 1:95172f59262a 111 compteur = 0; // RAZ compteur temps
Giamarchi 0:531f33a2550d 112 }
Giamarchi 1:95172f59262a 113 /******** Question 5 ****************/
Giamarchi 1:95172f59262a 114
Giamarchi 1:95172f59262a 115 if(Appui_BTN4())
Giamarchi 1:95172f59262a 116 {
Giamarchi 1:95172f59262a 117 ptr_4++;
Giamarchi 1:95172f59262a 118 compteur = 0;
Giamarchi 1:95172f59262a 119 }
Giamarchi 1:95172f59262a 120 /******** Question 4 et 5 ****************/
Giamarchi 1:95172f59262a 121
Giamarchi 1:95172f59262a 122 if(compteur == 100) // Est-ce que cela fait 1 sec
Giamarchi 0:531f33a2550d 123 {
Giamarchi 1:95172f59262a 124 if(ptr_3 != 0) // Test pointeur 3 -> Question 4
Giamarchi 1:95172f59262a 125 {
Giamarchi 1:95172f59262a 126 // Masque OU logique avec etat_Del
Giamarchi 1:95172f59262a 127 // Le masque est un décalage vers la gauche d'un 1 logique
Giamarchi 1:95172f59262a 128 // Le nombre de décalage est défini par le pointeur
Giamarchi 1:95172f59262a 129 etat_del = etat_del | 1<<(ptr_3 - 1);
Giamarchi 1:95172f59262a 130 ptr_3 = 0; // Pointeur à 0
Giamarchi 1:95172f59262a 131 }
Giamarchi 1:95172f59262a 132 if(ptr_4 != 0) // Test pointeur 4 -> Question 5
Giamarchi 1:95172f59262a 133 // Masque ET logique avec etat_Del
Giamarchi 1:95172f59262a 134 // Le masque est un décalage vers la gauche d'un 1 logique
Giamarchi 1:95172f59262a 135 // Le nombre de décalage est défini par le pointeur
Giamarchi 1:95172f59262a 136 // Ensuite le résultat du masque est inversé
Giamarchi 1:95172f59262a 137 etat_del = etat_del & ~(1<<ptr_4 - 1);
Giamarchi 1:95172f59262a 138 ptr_4 = 0;
Giamarchi 1:95172f59262a 139
Giamarchi 1:95172f59262a 140 set_8Dels(etat_del);
Giamarchi 1:95172f59262a 141 }
Giamarchi 1:95172f59262a 142 /***********************************************/
Giamarchi 1:95172f59262a 143 } // Fin du while(1)
Giamarchi 1:95172f59262a 144 } // Fin du main()
Giamarchi 1:95172f59262a 145 /***********************************************/