lib_capteurs
Dependencies: mbed
lib_cap.cpp@0:5e7710677334, 2017-03-07 (annotated)
- Committer:
- jiahaozhang
- Date:
- Tue Mar 07 14:44:53 2017 +0000
- Revision:
- 0:5e7710677334
lib_capteurs
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 | 0:5e7710677334 | 24 | |
jiahaozhang | 0:5e7710677334 | 25 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 26 | // donnée retournée de cap_couleur |
jiahaozhang | 0:5e7710677334 | 27 | // '1' Non détecter |
jiahaozhang | 0:5e7710677334 | 28 | // '0' détecter le bon coleur |
jiahaozhang | 0:5e7710677334 | 29 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 30 | int CAP::color(){ |
jiahaozhang | 0:5e7710677334 | 31 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 32 | int cap_color; |
jiahaozhang | 0:5e7710677334 | 33 | if (cap_color != 1){ |
jiahaozhang | 0:5e7710677334 | 34 | if ( in_valeur > 0xe8b9 ) cap_color = 1; |
jiahaozhang | 0:5e7710677334 | 35 | } |
jiahaozhang | 0:5e7710677334 | 36 | else{ |
jiahaozhang | 0:5e7710677334 | 37 | if ( in_valeur < 0x41f0 ) cap_color = 0; |
jiahaozhang | 0:5e7710677334 | 38 | } |
jiahaozhang | 0:5e7710677334 | 39 | return cap_color; |
jiahaozhang | 0:5e7710677334 | 40 | } |
jiahaozhang | 0:5e7710677334 | 41 | |
jiahaozhang | 0:5e7710677334 | 42 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 43 | // donnée retournée de cap_objet |
jiahaozhang | 0:5e7710677334 | 44 | // '1' Non détecter |
jiahaozhang | 0:5e7710677334 | 45 | // '0' détecter l'bojet |
jiahaozhang | 0:5e7710677334 | 46 | //********************************************** |
jiahaozhang | 0:5e7710677334 | 47 | int CAP::objet(){ |
jiahaozhang | 0:5e7710677334 | 48 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 49 | int cap_objet; |
jiahaozhang | 0:5e7710677334 | 50 | if (cap_objet != 1){ |
jiahaozhang | 0:5e7710677334 | 51 | if ( in_valeur > 0xe8b9 ) cap_objet = 1; |
jiahaozhang | 0:5e7710677334 | 52 | } |
jiahaozhang | 0:5e7710677334 | 53 | else{ |
jiahaozhang | 0:5e7710677334 | 54 | if ( in_valeur < 0x41f0 ) cap_objet = 0; |
jiahaozhang | 0:5e7710677334 | 55 | } |
jiahaozhang | 0:5e7710677334 | 56 | return cap_objet; |
jiahaozhang | 0:5e7710677334 | 57 | } |
jiahaozhang | 0:5e7710677334 | 58 | |
jiahaozhang | 0:5e7710677334 | 59 | |
jiahaozhang | 0:5e7710677334 | 60 | //*********************************************** |
jiahaozhang | 0:5e7710677334 | 61 | // donnée retournée de cap_distance |
jiahaozhang | 0:5e7710677334 | 62 | // definie par 'mm' |
jiahaozhang | 0:5e7710677334 | 63 | // range de détection 0 - 3m |
jiahaozhang | 0:5e7710677334 | 64 | //*********************************************** |
jiahaozhang | 0:5e7710677334 | 65 | int CAP::distance(){ |
jiahaozhang | 0:5e7710677334 | 66 | unsigned short in_valeur = _cap.read_u16(); |
jiahaozhang | 0:5e7710677334 | 67 | double cap_distance; |
jiahaozhang | 0:5e7710677334 | 68 | unsigned int l_min = 0x2ded; |
jiahaozhang | 0:5e7710677334 | 69 | // quand la distance est 0, le valeur de la sortie 0x2ded (11757) |
jiahaozhang | 0:5e7710677334 | 70 | // quand la distance est 3000mm, le valeur de la sortie 0xffff (65535) |
jiahaozhang | 0:5e7710677334 | 71 | double d = 0.0558; |
jiahaozhang | 0:5e7710677334 | 72 | // d répresente la distance de 0x0001 |
jiahaozhang | 0:5e7710677334 | 73 | |
jiahaozhang | 0:5e7710677334 | 74 | cap_distance = ((double)in_valeur - (double)l_min) * d; |
jiahaozhang | 0:5e7710677334 | 75 | |
jiahaozhang | 0:5e7710677334 | 76 | return (int)cap_distance; |
jiahaozhang | 0:5e7710677334 | 77 | } |
jiahaozhang | 0:5e7710677334 | 78 | |
jiahaozhang | 0:5e7710677334 | 79 | |
jiahaozhang | 0:5e7710677334 | 80 | |
jiahaozhang | 0:5e7710677334 | 81 | |
jiahaozhang | 0:5e7710677334 | 82 |