lib_capteurs
Dependencies: mbed
Diff: lib_cap.cpp
- Revision:
- 0:5e7710677334
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib_cap.cpp Tue Mar 07 14:44:53 2017 +0000 @@ -0,0 +1,82 @@ +#include "lib_cap.h" +#include "mbed.h" + +// définie le capteur +CAP::CAP(PinName in_A, int mode): _cap(in_A){ + _mode = mode; +} + +//********************************************** +// choisir le mode et la donnée renvoie +//********************************************** +int CAP::valeur(){ + switch (_mode){ + case COULEUR: + return color(); // renvoi '1' ou '0' + + case OBJET: + return objet(); // renvoi '1' ou '0' + + case DISTANCE: + return distance(); // renvoi '0' - '3000' + } +} + +//********************************************** +// donnée retournée de cap_couleur +// '1' Non détecter +// '0' détecter le bon coleur +//********************************************** +int CAP::color(){ + unsigned short in_valeur = _cap.read_u16(); + int cap_color; + if (cap_color != 1){ + if ( in_valeur > 0xe8b9 ) cap_color = 1; + } + else{ + if ( in_valeur < 0x41f0 ) cap_color = 0; + } + return cap_color; +} + +//********************************************** +// donnée retournée de cap_objet +// '1' Non détecter +// '0' détecter l'bojet +//********************************************** +int CAP::objet(){ + unsigned short in_valeur = _cap.read_u16(); + int cap_objet; + if (cap_objet != 1){ + if ( in_valeur > 0xe8b9 ) cap_objet = 1; + } + else{ + if ( in_valeur < 0x41f0 ) cap_objet = 0; + } + return cap_objet; +} + + +//*********************************************** +// donnée retournée de cap_distance +// definie par 'mm' +// range de détection 0 - 3m +//*********************************************** +int CAP::distance(){ + unsigned short in_valeur = _cap.read_u16(); + double cap_distance; + unsigned int l_min = 0x2ded; + // quand la distance est 0, le valeur de la sortie 0x2ded (11757) + // quand la distance est 3000mm, le valeur de la sortie 0xffff (65535) + double d = 0.0558; + // d répresente la distance de 0x0001 + + cap_distance = ((double)in_valeur - (double)l_min) * d; + + return (int)cap_distance; +} + + + + + \ No newline at end of file