Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of lib_capteur by
lib_cap.cpp@1:21a24cb4d75a, 2017-03-31 (annotated)
- Committer:
- jiahaozhang
- Date:
- Fri Mar 31 15:51:58 2017 +0000
- Revision:
- 1:21a24cb4d75a
- Parent:
- 0:5e7710677334
lib_capteur_f303;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jiahaozhang | 0:5e7710677334 | 1 | #include "lib_cap.h" |
jiahaozhang | 0:5e7710677334 | 2 | #include "mbed.h" |
jiahaozhang | 0:5e7710677334 | 3 | |
jiahaozhang | 0:5e7710677334 | 4 | // définie le capteur |
jiahaozhang | 0:5e7710677334 | 5 | CAP::CAP(PinName in_A, int mode): _cap(in_A){ |
jiahaozhang | 0:5e7710677334 | 6 | _mode = mode; |
jiahaozhang | 0:5e7710677334 | 7 | } |
jiahaozhang | 0:5e7710677334 | 8 | |
jiahaozhang | 0:5e7710677334 | 9 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 10 | // choisir le mode et la donnée renvoie |
jiahaozhang | 0:5e7710677334 | 11 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 12 | int CAP::valeur(){ |
jiahaozhang | 0:5e7710677334 | 13 | switch (_mode){ |
jiahaozhang | 0:5e7710677334 | 14 | case COULEUR: |
jiahaozhang | 0:5e7710677334 | 15 | return color(); // renvoi '1' ou '0' |
jiahaozhang | 0:5e7710677334 | 16 | |
jiahaozhang | 0:5e7710677334 | 17 | case OBJET: |
jiahaozhang | 0:5e7710677334 | 18 | return objet(); // renvoi '1' ou '0' |
jiahaozhang | 0:5e7710677334 | 19 | |
jiahaozhang | 0:5e7710677334 | 20 | case DISTANCE: |
jiahaozhang | 0:5e7710677334 | 21 | return distance(); // renvoi '0' - '3000' |
jiahaozhang | 0:5e7710677334 | 22 | } |
jiahaozhang | 0:5e7710677334 | 23 | } |
jiahaozhang | 1:21a24cb4d75a | 24 | /************************************************** |
jiahaozhang | 1:21a24cb4d75a | 25 | Exemple: |
jiahaozhang | 1:21a24cb4d75a | 26 | #include "mbed.h" |
jiahaozhang | 1:21a24cb4d75a | 27 | #include "lib_cap.h" |
jiahaozhang | 1:21a24cb4d75a | 28 | |
jiahaozhang | 1:21a24cb4d75a | 29 | CAP col(PA_1,COULEUR); |
jiahaozhang | 1:21a24cb4d75a | 30 | CAP obj(PA_7,OBJET); |
jiahaozhang | 1:21a24cb4d75a | 31 | CAP dis(PA_4,DISTANCE); |
jiahaozhang | 1:21a24cb4d75a | 32 | Serial pc(SERIAL_TX, SERIAL_RX); |
jiahaozhang | 1:21a24cb4d75a | 33 | DigitalOut myled(LED1); |
jiahaozhang | 1:21a24cb4d75a | 34 | |
jiahaozhang | 1:21a24cb4d75a | 35 | |
jiahaozhang | 1:21a24cb4d75a | 36 | int main(){ |
jiahaozhang | 1:21a24cb4d75a | 37 | while(1){ |
jiahaozhang | 1:21a24cb4d75a | 38 | if (col.valeur() != 1){ |
jiahaozhang | 1:21a24cb4d75a | 39 | myled = 1; |
jiahaozhang | 1:21a24cb4d75a | 40 | pc.printf("detecter\n"); |
jiahaozhang | 1:21a24cb4d75a | 41 | } |
jiahaozhang | 1:21a24cb4d75a | 42 | else{ |
jiahaozhang | 1:21a24cb4d75a | 43 | myled = 0; |
jiahaozhang | 1:21a24cb4d75a | 44 | pc.printf("non detecteur\n"); |
jiahaozhang | 1:21a24cb4d75a | 45 | } |
jiahaozhang | 1:21a24cb4d75a | 46 | if (obj.valeur() != 1){ |
jiahaozhang | 1:21a24cb4d75a | 47 | pc.printf("hi\n"); |
jiahaozhang | 1:21a24cb4d75a | 48 | } |
jiahaozhang | 1:21a24cb4d75a | 49 | else{ |
jiahaozhang | 1:21a24cb4d75a | 50 | pc.printf("au revoir\n"); |
jiahaozhang | 1:21a24cb4d75a | 51 | } |
jiahaozhang | 1:21a24cb4d75a | 52 | pc.printf("distance: %d \n", dis.valeur()); |
jiahaozhang | 1:21a24cb4d75a | 53 | } |
jiahaozhang | 1:21a24cb4d75a | 54 | } |
jiahaozhang | 1:21a24cb4d75a | 55 | **************************************************/ |
jiahaozhang | 1:21a24cb4d75a | 56 | |
jiahaozhang | 1:21a24cb4d75a | 57 | |
jiahaozhang | 1:21a24cb4d75a | 58 | |
jiahaozhang | 1:21a24cb4d75a | 59 | |
jiahaozhang | 1:21a24cb4d75a | 60 | |
jiahaozhang | 1:21a24cb4d75a | 61 | |
jiahaozhang | 1:21a24cb4d75a | 62 | |
jiahaozhang | 0:5e7710677334 | 63 | |
jiahaozhang | 0:5e7710677334 | 64 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 65 | // donnée retournée de cap_couleur |
jiahaozhang | 0:5e7710677334 | 66 | // '1' Non détecter |
jiahaozhang | 0:5e7710677334 | 67 | // '0' détecter le bon coleur |
jiahaozhang | 0:5e7710677334 | 68 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 69 | int CAP::color(){ |
jiahaozhang | 0:5e7710677334 | 70 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 71 | int cap_color; |
jiahaozhang | 0:5e7710677334 | 72 | if (cap_color != 1){ |
jiahaozhang | 1:21a24cb4d75a | 73 | if ( in_valeur > 0xc9b1 ) cap_color = 1; |
jiahaozhang | 0:5e7710677334 | 74 | } |
jiahaozhang | 0:5e7710677334 | 75 | else{ |
jiahaozhang | 0:5e7710677334 | 76 | if ( in_valeur < 0x41f0 ) cap_color = 0; |
jiahaozhang | 0:5e7710677334 | 77 | } |
jiahaozhang | 0:5e7710677334 | 78 | return cap_color; |
jiahaozhang | 0:5e7710677334 | 79 | } |
jiahaozhang | 0:5e7710677334 | 80 | |
jiahaozhang | 1:21a24cb4d75a | 81 | |
jiahaozhang | 1:21a24cb4d75a | 82 | |
jiahaozhang | 1:21a24cb4d75a | 83 | |
jiahaozhang | 1:21a24cb4d75a | 84 | |
jiahaozhang | 1:21a24cb4d75a | 85 | |
jiahaozhang | 1:21a24cb4d75a | 86 | |
jiahaozhang | 0:5e7710677334 | 87 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 88 | // donnée retournée de cap_objet |
jiahaozhang | 0:5e7710677334 | 89 | // '1' Non détecter |
jiahaozhang | 0:5e7710677334 | 90 | // '0' détecter l'bojet |
jiahaozhang | 0:5e7710677334 | 91 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 92 | int CAP::objet(){ |
jiahaozhang | 0:5e7710677334 | 93 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 94 | int cap_objet; |
jiahaozhang | 0:5e7710677334 | 95 | if (cap_objet != 1){ |
jiahaozhang | 1:21a24cb4d75a | 96 | if ( in_valeur > 0xc9b1 ) cap_objet = 1; |
jiahaozhang | 0:5e7710677334 | 97 | } |
jiahaozhang | 0:5e7710677334 | 98 | else{ |
jiahaozhang | 0:5e7710677334 | 99 | if ( in_valeur < 0x41f0 ) cap_objet = 0; |
jiahaozhang | 0:5e7710677334 | 100 | } |
jiahaozhang | 0:5e7710677334 | 101 | return cap_objet; |
jiahaozhang | 0:5e7710677334 | 102 | } |
jiahaozhang | 0:5e7710677334 | 103 | |
jiahaozhang | 0:5e7710677334 | 104 | |
jiahaozhang | 1:21a24cb4d75a | 105 | |
jiahaozhang | 1:21a24cb4d75a | 106 | |
jiahaozhang | 1:21a24cb4d75a | 107 | |
jiahaozhang | 1:21a24cb4d75a | 108 | |
jiahaozhang | 1:21a24cb4d75a | 109 | |
jiahaozhang | 0:5e7710677334 | 110 | //*********************************************** |
jiahaozhang | 0:5e7710677334 | 111 | // donnée retournée de cap_distance |
jiahaozhang | 0:5e7710677334 | 112 | // definie par 'mm' |
jiahaozhang | 0:5e7710677334 | 113 | // range de détection 0 - 3m |
jiahaozhang | 0:5e7710677334 | 114 | //*********************************************** |
jiahaozhang | 0:5e7710677334 | 115 | int CAP::distance(){ |
jiahaozhang | 0:5e7710677334 | 116 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 117 | double cap_distance; |
jiahaozhang | 1:21a24cb4d75a | 118 | unsigned int l_min = 0x26c9; |
jiahaozhang | 1:21a24cb4d75a | 119 | // quand la distance est 0, le valeur de la sortie 0x26c9 (9929) |
jiahaozhang | 0:5e7710677334 | 120 | // quand la distance est 3000mm, le valeur de la sortie 0xffff (65535) |
jiahaozhang | 0:5e7710677334 | 121 | double d = 0.0558; |
jiahaozhang | 0:5e7710677334 | 122 | // d répresente la distance de 0x0001 |
jiahaozhang | 0:5e7710677334 | 123 | |
jiahaozhang | 0:5e7710677334 | 124 | cap_distance = ((double)in_valeur - (double)l_min) * d; |
jiahaozhang | 0:5e7710677334 | 125 | |
jiahaozhang | 0:5e7710677334 | 126 | return (int)cap_distance; |
jiahaozhang | 0:5e7710677334 | 127 | } |
jiahaozhang | 0:5e7710677334 | 128 | |
jiahaozhang | 0:5e7710677334 | 129 | |
jiahaozhang | 0:5e7710677334 | 130 | |
jiahaozhang | 0:5e7710677334 | 131 | |
jiahaozhang | 0:5e7710677334 | 132 |