Kart+xxxxx // Radar_RTOS
Dependencies: Radar_RTOS mbed
Fork of Radar_RTOS by
buzzer.h@3:422918db0559, 2016-01-15 (annotated)
- Committer:
- Alex_Hochart
- Date:
- Fri Jan 15 08:44:59 2016 +0000
- Revision:
- 3:422918db0559
- Parent:
- 2:97cbf2a5ec78
Kart+xxxx
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alex_Hochart | 2:97cbf2a5ec78 | 1 | #ifndef BUZZER_H |
Alex_Hochart | 2:97cbf2a5ec78 | 2 | #define BUZZER_H |
Alex_Hochart | 2:97cbf2a5ec78 | 3 | |
Alex_Hochart | 2:97cbf2a5ec78 | 4 | #include "mbed.h" |
Alex_Hochart | 2:97cbf2a5ec78 | 5 | |
Alex_Hochart | 3:422918db0559 | 6 | //Instanciation du GPIO. |
Alex_Hochart | 3:422918db0559 | 7 | DigitalOut buzz(PB_8); //Sortie digital pour le buzzer. |
Alex_Hochart | 2:97cbf2a5ec78 | 8 | |
Alex_Hochart | 3:422918db0559 | 9 | |
Alex_Hochart | 3:422918db0559 | 10 | //Class Buzzer regroupant les diférents paramétres utile à la génération du signal du buzzer. |
Alex_Hochart | 2:97cbf2a5ec78 | 11 | class Buzzer{ |
Alex_Hochart | 2:97cbf2a5ec78 | 12 | public : |
Alex_Hochart | 3:422918db0559 | 13 | |
Alex_Hochart | 3:422918db0559 | 14 | //Déclaration des atributs |
Alex_Hochart | 3:422918db0559 | 15 | int TsilenceMs; //Variable temps de silence entre les bips. |
Alex_Hochart | 3:422918db0559 | 16 | typedef enum {BipInit, BipUp, BipDown, Silent} defetat; //Définie les état possible du buzzer |
Alex_Hochart | 3:422918db0559 | 17 | defetat etat; //Variable d'état du buzzer |
Alex_Hochart | 3:422918db0559 | 18 | Timer t; //Timer |
Alex_Hochart | 3:422918db0559 | 19 | int i; //Nombre de pulsation par bip |
Alex_Hochart | 3:422918db0559 | 20 | |
Alex_Hochart | 2:97cbf2a5ec78 | 21 | Buzzer(){ |
Alex_Hochart | 2:97cbf2a5ec78 | 22 | TsilenceMs=100; |
Alex_Hochart | 2:97cbf2a5ec78 | 23 | etat = BipInit; |
Alex_Hochart | 2:97cbf2a5ec78 | 24 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 25 | i=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 26 | } |
Alex_Hochart | 3:422918db0559 | 27 | |
Alex_Hochart | 3:422918db0559 | 28 | //Déclaration des methodes |
Alex_Hochart | 3:422918db0559 | 29 | void changeMode(int value); //Changement du nombre de bips en fonction de la distance |
Alex_Hochart | 3:422918db0559 | 30 | void run(); //Lancement du buzzer |
Alex_Hochart | 3:422918db0559 | 31 | }; |
Alex_Hochart | 2:97cbf2a5ec78 | 32 | |
Alex_Hochart | 2:97cbf2a5ec78 | 33 | /* |
Alex_Hochart | 2:97cbf2a5ec78 | 34 | Buzzer::Buzzer(){ |
Alex_Hochart | 2:97cbf2a5ec78 | 35 | TsilenceMs=100; |
Alex_Hochart | 2:97cbf2a5ec78 | 36 | etat = BipInit; |
Alex_Hochart | 2:97cbf2a5ec78 | 37 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 38 | i=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 39 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 40 | */ |
Alex_Hochart | 2:97cbf2a5ec78 | 41 | |
Alex_Hochart | 2:97cbf2a5ec78 | 42 | /* |
Alex_Hochart | 2:97cbf2a5ec78 | 43 | * Initialisation des différents modes de fonctionnement : |
Alex_Hochart | 2:97cbf2a5ec78 | 44 | * |
Alex_Hochart | 2:97cbf2a5ec78 | 45 | * 0 < d < 25 --> 0 : 5 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 46 | * 25 < d < 50 --> 1 : 4 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 47 | * 50 < d < 100 --> 2 : 3 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 48 | * 100 < d < 150 --> 3 : 2 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 49 | * 150 < d < 200 --> 4 : 1 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 50 | * 200 < d --> 5 : 0 b/s |
Alex_Hochart | 2:97cbf2a5ec78 | 51 | |
Alex_Hochart | 2:97cbf2a5ec78 | 52 | fonction bip : (400µs+400µs)*50 = 40ms |
Alex_Hochart | 2:97cbf2a5ec78 | 53 | -> timer sur interruption en fonction du temps à attendre avant le prochain bip |
Alex_Hochart | 2:97cbf2a5ec78 | 54 | 0 --> 5 b/s --> TsilenceMs 0,16s |
Alex_Hochart | 2:97cbf2a5ec78 | 55 | 1 --> 4 b/s --> TsilenceMs 0,21s |
Alex_Hochart | 2:97cbf2a5ec78 | 56 | 2 --> 3 b/s --> TsilenceMs 0,29s |
Alex_Hochart | 2:97cbf2a5ec78 | 57 | 3 --> 2 b/s --> TsilenceMs 0,46s |
Alex_Hochart | 2:97cbf2a5ec78 | 58 | 4 --> 1 b/s --> TsilenceMs 0,96s |
Alex_Hochart | 2:97cbf2a5ec78 | 59 | 5 --> TsilenceMs 1s |
Alex_Hochart | 2:97cbf2a5ec78 | 60 | |
Alex_Hochart | 2:97cbf2a5ec78 | 61 | */ |
Alex_Hochart | 2:97cbf2a5ec78 | 62 | |
Alex_Hochart | 2:97cbf2a5ec78 | 63 | |
Alex_Hochart | 3:422918db0559 | 64 | //**********Modifie la valeur du temps de silence entre 2 bips en fonction de la distance.************// |
Alex_Hochart | 3:422918db0559 | 65 | // |
Alex_Hochart | 3:422918db0559 | 66 | //Variable value correspond à la distance mesurée en cm. |
Alex_Hochart | 3:422918db0559 | 67 | // |
Alex_Hochart | 2:97cbf2a5ec78 | 68 | void Buzzer::changeMode(int value){ |
Alex_Hochart | 2:97cbf2a5ec78 | 69 | if(value<=25){ //0 |
Alex_Hochart | 2:97cbf2a5ec78 | 70 | TsilenceMs=160; |
Alex_Hochart | 2:97cbf2a5ec78 | 71 | }else if(value>25 && value<=50){ //1 |
Alex_Hochart | 2:97cbf2a5ec78 | 72 | TsilenceMs=210; |
Alex_Hochart | 2:97cbf2a5ec78 | 73 | }else if(value>50 && value<=100){ //2 |
Alex_Hochart | 2:97cbf2a5ec78 | 74 | TsilenceMs=290; |
Alex_Hochart | 2:97cbf2a5ec78 | 75 | }else if(value>100 && value<=150){ //3 |
Alex_Hochart | 2:97cbf2a5ec78 | 76 | TsilenceMs=460; |
Alex_Hochart | 2:97cbf2a5ec78 | 77 | }else if(value>150 && value<=200){ //4 |
Alex_Hochart | 2:97cbf2a5ec78 | 78 | TsilenceMs=960; |
Alex_Hochart | 2:97cbf2a5ec78 | 79 | }else{ //5 |
Alex_Hochart | 2:97cbf2a5ec78 | 80 | TsilenceMs=1000000000; |
Alex_Hochart | 2:97cbf2a5ec78 | 81 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 82 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 83 | |
Alex_Hochart | 2:97cbf2a5ec78 | 84 | /* |
Alex_Hochart | 2:97cbf2a5ec78 | 85 | Si la valeur sort de son intervalle de fonctionnement, |
Alex_Hochart | 2:97cbf2a5ec78 | 86 | on modifie le mode de fonctionnement courant. |
Alex_Hochart | 2:97cbf2a5ec78 | 87 | |
Alex_Hochart | 2:97cbf2a5ec78 | 88 | fonction bip : (400µs+400µs)*50 = 40ms |
Alex_Hochart | 2:97cbf2a5ec78 | 89 | -> timer sur interruption en fonction du temps à attendre avant le prochain bip |
Alex_Hochart | 2:97cbf2a5ec78 | 90 | 0 --> 5 b/s --> silence 0,16s |
Alex_Hochart | 2:97cbf2a5ec78 | 91 | 1 --> 4 b/s --> silence 0,21s |
Alex_Hochart | 2:97cbf2a5ec78 | 92 | 2 --> 3 b/s --> silence 0,29s |
Alex_Hochart | 2:97cbf2a5ec78 | 93 | 3 --> 2 b/s --> silence 0,46s |
Alex_Hochart | 2:97cbf2a5ec78 | 94 | 4 --> 1 b/s --> silence 0,96s |
Alex_Hochart | 2:97cbf2a5ec78 | 95 | 5 --> silence 1s |
Alex_Hochart | 2:97cbf2a5ec78 | 96 | |
Alex_Hochart | 2:97cbf2a5ec78 | 97 | Etat : BipInit |
Alex_Hochart | 2:97cbf2a5ec78 | 98 | Timer t Start |
Alex_Hochart | 2:97cbf2a5ec78 | 99 | Bip=0 |
Alex_Hochart | 2:97cbf2a5ec78 | 100 | i=0 |
Alex_Hochart | 2:97cbf2a5ec78 | 101 | Etat = BipUp |
Alex_Hochart | 2:97cbf2a5ec78 | 102 | Etat : BipUp |
Alex_Hochart | 2:97cbf2a5ec78 | 103 | si (t>=400µs && i<50) |
Alex_Hochart | 2:97cbf2a5ec78 | 104 | bipCarreUp |
Alex_Hochart | 2:97cbf2a5ec78 | 105 | i++ |
Alex_Hochart | 2:97cbf2a5ec78 | 106 | Etat = BipDown |
Alex_Hochart | 2:97cbf2a5ec78 | 107 | t Restart |
Alex_Hochart | 2:97cbf2a5ec78 | 108 | si (i>=50) Etat = Silence; |
Alex_Hochart | 2:97cbf2a5ec78 | 109 | t Restart |
Alex_Hochart | 2:97cbf2a5ec78 | 110 | Etat : BipDown |
Alex_Hochart | 2:97cbf2a5ec78 | 111 | si (t>=400µs && i<50) |
Alex_Hochart | 2:97cbf2a5ec78 | 112 | bipCarreUp |
Alex_Hochart | 2:97cbf2a5ec78 | 113 | i++ |
Alex_Hochart | 2:97cbf2a5ec78 | 114 | Etat = BipUp |
Alex_Hochart | 2:97cbf2a5ec78 | 115 | t Restart |
Alex_Hochart | 2:97cbf2a5ec78 | 116 | si (i>=50) Etat = Silence; |
Alex_Hochart | 2:97cbf2a5ec78 | 117 | t Restart |
Alex_Hochart | 2:97cbf2a5ec78 | 118 | Etat : Silence |
Alex_Hochart | 2:97cbf2a5ec78 | 119 | si (t>=Tsilence) |
Alex_Hochart | 2:97cbf2a5ec78 | 120 | Etat=BipInit |
Alex_Hochart | 2:97cbf2a5ec78 | 121 | |
Alex_Hochart | 2:97cbf2a5ec78 | 122 | */ |
Alex_Hochart | 2:97cbf2a5ec78 | 123 | |
Alex_Hochart | 2:97cbf2a5ec78 | 124 | void Buzzer::run(){ // paramètre : t (Timer), i, etat |
Alex_Hochart | 2:97cbf2a5ec78 | 125 | switch(etat){ |
Alex_Hochart | 2:97cbf2a5ec78 | 126 | |
Alex_Hochart | 2:97cbf2a5ec78 | 127 | case BipInit : |
Alex_Hochart | 2:97cbf2a5ec78 | 128 | buzz=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 129 | i=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 130 | etat = BipUp; |
Alex_Hochart | 2:97cbf2a5ec78 | 131 | t.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 132 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 133 | |
Alex_Hochart | 2:97cbf2a5ec78 | 134 | case BipUp : |
Alex_Hochart | 2:97cbf2a5ec78 | 135 | if(t.read_us()>=400 && i<50){ |
Alex_Hochart | 2:97cbf2a5ec78 | 136 | buzz=1; |
Alex_Hochart | 2:97cbf2a5ec78 | 137 | i++; |
Alex_Hochart | 2:97cbf2a5ec78 | 138 | etat = BipDown; |
Alex_Hochart | 2:97cbf2a5ec78 | 139 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 140 | t.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 141 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 142 | if(i>=50){ |
Alex_Hochart | 2:97cbf2a5ec78 | 143 | etat = Silent; |
Alex_Hochart | 2:97cbf2a5ec78 | 144 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 145 | t.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 146 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 147 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 148 | |
Alex_Hochart | 2:97cbf2a5ec78 | 149 | case BipDown : |
Alex_Hochart | 2:97cbf2a5ec78 | 150 | if(t.read_us()>=400 && i<50){ |
Alex_Hochart | 2:97cbf2a5ec78 | 151 | buzz=0; |
Alex_Hochart | 2:97cbf2a5ec78 | 152 | i++; |
Alex_Hochart | 2:97cbf2a5ec78 | 153 | etat = BipUp; |
Alex_Hochart | 2:97cbf2a5ec78 | 154 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 155 | t.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 156 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 157 | if(i>=50){ |
Alex_Hochart | 2:97cbf2a5ec78 | 158 | etat = Silent; |
Alex_Hochart | 2:97cbf2a5ec78 | 159 | t.reset(); |
Alex_Hochart | 2:97cbf2a5ec78 | 160 | t.start(); |
Alex_Hochart | 2:97cbf2a5ec78 | 161 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 162 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 163 | |
Alex_Hochart | 2:97cbf2a5ec78 | 164 | case Silent : |
Alex_Hochart | 2:97cbf2a5ec78 | 165 | if(t.read_ms()>=TsilenceMs){ |
Alex_Hochart | 2:97cbf2a5ec78 | 166 | etat=BipInit; |
Alex_Hochart | 2:97cbf2a5ec78 | 167 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 168 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 169 | |
Alex_Hochart | 2:97cbf2a5ec78 | 170 | default : |
Alex_Hochart | 2:97cbf2a5ec78 | 171 | etat = BipInit; |
Alex_Hochart | 2:97cbf2a5ec78 | 172 | break; |
Alex_Hochart | 2:97cbf2a5ec78 | 173 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 174 | } |
Alex_Hochart | 2:97cbf2a5ec78 | 175 | |
Alex_Hochart | 2:97cbf2a5ec78 | 176 | |
Alex_Hochart | 2:97cbf2a5ec78 | 177 | #endif |