CRAC Team / Mbed 2 deprecated lib_capteur_f303

Dependencies:   mbed

Fork of lib_capteur by CRAC Team

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?

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