lib_capteurs

Dependencies:   mbed

Committer:
jiahaozhang
Date:
Tue Mar 07 14:44:53 2017 +0000
Revision:
0:5e7710677334
lib_capteurs

Who changed what in which revision?

UserRevisionLine numberNew 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