Einer Fabian Aponte Cubides / Mbed 2 deprecated Primeraentrega

Dependencies:   mbed

Committer:
Darstack
Date:
Sat Mar 09 17:33:26 2019 +0000
Revision:
3:3454cb7584e1
Parent:
2:d168f964c331
Envio HEXA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 0:fa6bdbdd4239 1 #include "mbed.h"
fabeltranm 0:fa6bdbdd4239 2 #include "scolor_TCS3200.h"
fabeltranm 0:fa6bdbdd4239 3
fabeltranm 0:fa6bdbdd4239 4 /* *****************************************************************************
fabeltranm 0:fa6bdbdd4239 5 Programa que solicita telemetria al sistema embebido, por medio del comando 0xFe
fabeltranm 0:fa6bdbdd4239 6 para preguntar por el color que detecta el sensor TCS3200
fabeltranm 0:fa6bdbdd4239 7
fabeltranm 0:fa6bdbdd4239 8 el sistema embebido recibe el inicio de trama FE y el número de comado: 01
fabeltranm 0:fa6bdbdd4239 9
fabeltranm 0:fa6bdbdd4239 10 | INITELE | CMD |
fabeltranm 0:fa6bdbdd4239 11 | 0xfe | 0x01 |
fabeltranm 0:fa6bdbdd4239 12
fabeltranm 0:fa6bdbdd4239 13
fabeltranm 0:fa6bdbdd4239 14 para enviar los comandos usar el programa Coolterm http://freeware.the-meiers.org/
fabeltranm 0:fa6bdbdd4239 15
fabeltranm 0:fa6bdbdd4239 16
fabeltranm 0:fa6bdbdd4239 17 @fabeltranm 2019
fabeltranm 0:fa6bdbdd4239 18 fbeltranm@ecci.edu.co
fabeltranm 0:fa6bdbdd4239 19
fabeltranm 0:fa6bdbdd4239 20 ********************************************************************************
fabeltranm 0:fa6bdbdd4239 21 datasheet https://www.mouser.com/catalog/specsheets/TCS3200-E11.pdf
fabeltranm 0:fa6bdbdd4239 22
fabeltranm 0:fa6bdbdd4239 23
fabeltranm 0:fa6bdbdd4239 24 S0 Frequency scaling
fabeltranm 0:fa6bdbdd4239 25 S1 Frequency scaling
fabeltranm 0:fa6bdbdd4239 26 S2 Photo diode selection
fabeltranm 0:fa6bdbdd4239 27 S3 Photo diode selection
fabeltranm 0:fa6bdbdd4239 28 OutFreq Frequency
fabeltranm 0:fa6bdbdd4239 29
fabeltranm 0:fa6bdbdd4239 30 -----------------------------------
fabeltranm 0:fa6bdbdd4239 31 | ____________ ____________ |
fabeltranm 0:fa6bdbdd4239 32 ----> | | | | | | ___ ___
fabeltranm 0:fa6bdbdd4239 33 Light | | Photodiode | | Current |--|---OUTPUT_FREQ | |___| |___
fabeltranm 0:fa6bdbdd4239 34 ----> | | Array |---| to | |
fabeltranm 0:fa6bdbdd4239 35 | | | | Frequency | |
fabeltranm 0:fa6bdbdd4239 36 | |____________| |____________| |
fabeltranm 0:fa6bdbdd4239 37 | ^ ^ ^ ^ |
fabeltranm 0:fa6bdbdd4239 38 -------|--|-------------|--|-------
fabeltranm 0:fa6bdbdd4239 39 | | | |
fabeltranm 0:fa6bdbdd4239 40 S2 S3 S0 S1
fabeltranm 0:fa6bdbdd4239 41
fabeltranm 0:fa6bdbdd4239 42 SO | S1 | OUTPUT FREQUENCY SCALING | | S2 | S3 | PHOTODIODE TYPE |
fabeltranm 0:fa6bdbdd4239 43 0 | 0 | power down | | 0 | 0 | Red |
fabeltranm 0:fa6bdbdd4239 44 0 | 1 | 2% | | 0 | 1 | Blue |
fabeltranm 0:fa6bdbdd4239 45 1 | 0 | 20% | | 1 | 0 | Clear (no filter) |
fabeltranm 0:fa6bdbdd4239 46 1 | 1 | 100% | | 1 | 1 | Green |
fabeltranm 0:fa6bdbdd4239 47
fabeltranm 0:fa6bdbdd4239 48 ******************************************************************************/
fabeltranm 0:fa6bdbdd4239 49
fabeltranm 0:fa6bdbdd4239 50 #define INITELE 0xFE
Darstack 3:3454cb7584e1 51 #define RESPUESTA1 0xFF01
Darstack 3:3454cb7584e1 52 #define RESPUESTA2 0xFF02
Darstack 3:3454cb7584e1 53 #define RESPUESTA3 0xFF03
Darstack 3:3454cb7584e1 54 #define RESPUESTA4 0xFF04
Darstack 3:3454cb7584e1 55 #define RESPUESTA5 0xFF05
fabeltranm 1:334b40b47233 56 #define CMD 0x01
Darstack 2:d168f964c331 57 #define DO 1300
Darstack 2:d168f964c331 58 #define RE 1500
Darstack 2:d168f964c331 59 #define MI 1600
Darstack 2:d168f964c331 60 #define FA 1800
Darstack 2:d168f964c331 61 #define SO 2000
fabeltranm 0:fa6bdbdd4239 62
fabeltranm 0:fa6bdbdd4239 63
fabeltranm 0:fa6bdbdd4239 64 Serial command(USBTX, USBRX);
fabeltranm 1:334b40b47233 65 // S0, S1, S2, S3, OUT
fabeltranm 1:334b40b47233 66 scolor_TCS3200 scolor(PA_8, PB_10, PB_4, PB_5, PB_3);
fabeltranm 0:fa6bdbdd4239 67
fabeltranm 0:fa6bdbdd4239 68 // definición de las funciones
fabeltranm 0:fa6bdbdd4239 69 void setup_uart();
fabeltranm 0:fa6bdbdd4239 70 void leer_datos();
fabeltranm 0:fa6bdbdd4239 71 void leer_color();
fabeltranm 0:fa6bdbdd4239 72 uint8_t cmd;
Darstack 3:3454cb7584e1 73 PwmOut mybuzzer(PA_5);
fabeltranm 0:fa6bdbdd4239 74
fabeltranm 0:fa6bdbdd4239 75 int main() {
fabeltranm 0:fa6bdbdd4239 76
fabeltranm 0:fa6bdbdd4239 77 setup_uart();
fabeltranm 0:fa6bdbdd4239 78 while(1){
fabeltranm 0:fa6bdbdd4239 79 leer_datos();
fabeltranm 0:fa6bdbdd4239 80 if (cmd==CMD){}
fabeltranm 1:334b40b47233 81 leer_color();
fabeltranm 0:fa6bdbdd4239 82 }
fabeltranm 0:fa6bdbdd4239 83 }
fabeltranm 0:fa6bdbdd4239 84
fabeltranm 0:fa6bdbdd4239 85
fabeltranm 0:fa6bdbdd4239 86
fabeltranm 0:fa6bdbdd4239 87 void setup_uart(){
fabeltranm 0:fa6bdbdd4239 88 command.baud(115200);
fabeltranm 0:fa6bdbdd4239 89 }
fabeltranm 0:fa6bdbdd4239 90
fabeltranm 0:fa6bdbdd4239 91
fabeltranm 0:fa6bdbdd4239 92 void leer_datos(){
fabeltranm 0:fa6bdbdd4239 93 while(command.getc()!= INITELE);
Darstack 2:d168f964c331 94 cmd=command.getc();
fabeltranm 0:fa6bdbdd4239 95 }
fabeltranm 0:fa6bdbdd4239 96
fabeltranm 0:fa6bdbdd4239 97
fabeltranm 0:fa6bdbdd4239 98 void leer_color(){
fabeltranm 0:fa6bdbdd4239 99
Darstack 2:d168f964c331 100 mybuzzer.write(0);
fabeltranm 0:fa6bdbdd4239 101 long red = scolor.ReadRed();
fabeltranm 0:fa6bdbdd4239 102 long green = scolor.ReadGreen();
fabeltranm 0:fa6bdbdd4239 103 long blue = scolor.ReadBlue();
fabeltranm 0:fa6bdbdd4239 104 long clear = scolor.ReadClear();
Darstack 2:d168f964c331 105
Darstack 2:d168f964c331 106 long frqred;
Darstack 2:d168f964c331 107 long frqgreen;
Darstack 2:d168f964c331 108 long frqblue;
Darstack 2:d168f964c331 109 long frqclear;
Darstack 3:3454cb7584e1 110 int8_t sel_color;
fabeltranm 1:334b40b47233 111 printf("RED: %5d GREEN: %5d BLUE: %5d CLEAR: %5d \n ", red, green, blue, clear);
fabeltranm 0:fa6bdbdd4239 112
Darstack 2:d168f964c331 113 frqred = ( ( 1.0/red )* 1000.0 );
Darstack 2:d168f964c331 114 frqgreen = ( ( 1.0/green ) * 1000.0);
Darstack 2:d168f964c331 115 frqblue = ( (1.0/blue) *1000.0 );
Darstack 2:d168f964c331 116 frqclear = ( (1.0/clear) *1000.0 );
Darstack 3:3454cb7584e1 117 printf("RED: %5d GREEN: %5d BLUE: %5d CLEAR: %5d \n ", frqred, frqgreen, frqblue,frqclear);
Darstack 2:d168f964c331 118 ///////////////////////////////////////////////////////////////////////////////
Darstack 2:d168f964c331 119 /*||||||||||||||||Seleccionando los diferentes colores.||||||||||||||||||||||*/
Darstack 2:d168f964c331 120 /*||||||||||||||||||||||||||||||Color rojo|||||||||||||||||||||||||||||||||||*/
Darstack 2:d168f964c331 121 ///////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 122 if ( frqred >= 30.0 and frqred <= 500.0) {
Darstack 3:3454cb7584e1 123
Darstack 3:3454cb7584e1 124 if( frqgreen >= 0.0 and frqgreen <= 20.0 ) {
Darstack 3:3454cb7584e1 125
Darstack 3:3454cb7584e1 126 if ( frqblue >= 5.0 and frqblue <= 29.0 ) {
Darstack 2:d168f964c331 127
Darstack 3:3454cb7584e1 128 //printf ( "tiende a rojo \n" );
Darstack 2:d168f964c331 129 mybuzzer.period_us(DO);
Darstack 2:d168f964c331 130 mybuzzer.write(0.5);
Darstack 2:d168f964c331 131 wait(5);
Darstack 2:d168f964c331 132 mybuzzer.write(0);
Darstack 3:3454cb7584e1 133 sel_color=1;
Darstack 3:3454cb7584e1 134
Darstack 2:d168f964c331 135 }
Darstack 2:d168f964c331 136 }
Darstack 2:d168f964c331 137 }
Darstack 2:d168f964c331 138 ////////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 139 /*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Color verde°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*/
Darstack 3:3454cb7584e1 140 ////////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 141 if ( frqgreen >= 11.0 and frqgreen <= 21.0) {
Darstack 3:3454cb7584e1 142
Darstack 3:3454cb7584e1 143 if( frqred >= 8.0 and frqred <= 20.0 ) {
Darstack 3:3454cb7584e1 144
Darstack 3:3454cb7584e1 145 if ( frqblue >= 10.0 and frqblue <= 22.0 ) {
Darstack 2:d168f964c331 146
Darstack 3:3454cb7584e1 147 printf ( "tiende a verde \n" );
Darstack 2:d168f964c331 148 mybuzzer.period_us(RE);
Darstack 2:d168f964c331 149 mybuzzer.write(0.5);
Darstack 2:d168f964c331 150 wait(5);
Darstack 2:d168f964c331 151 mybuzzer.write(0);
Darstack 3:3454cb7584e1 152 sel_color=2;
Darstack 3:3454cb7584e1 153
Darstack 2:d168f964c331 154 }
Darstack 2:d168f964c331 155 }
Darstack 2:d168f964c331 156 }
Darstack 2:d168f964c331 157 ////////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 158 /*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Color azul°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*/
Darstack 2:d168f964c331 159 ///////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 160 if ( frqblue >= 10.0 and frqblue <= 70.0) {
Darstack 3:3454cb7584e1 161
Darstack 3:3454cb7584e1 162 if( frqgreen >= 5.0 and frqgreen <= 26.0 ) {
Darstack 2:d168f964c331 163
Darstack 3:3454cb7584e1 164 if ( frqred >= 5.0 and frqred <= 25.0 ) {
Darstack 3:3454cb7584e1 165
Darstack 3:3454cb7584e1 166 //printf ( "tiende a azul \n" );
Darstack 2:d168f964c331 167 mybuzzer.period_us(MI);
Darstack 2:d168f964c331 168 mybuzzer.write(0.5);
Darstack 2:d168f964c331 169 wait(5);
Darstack 2:d168f964c331 170 mybuzzer.write(0);
Darstack 3:3454cb7584e1 171 sel_color=3;
Darstack 3:3454cb7584e1 172
Darstack 2:d168f964c331 173 }
Darstack 2:d168f964c331 174 }
Darstack 2:d168f964c331 175 }
Darstack 2:d168f964c331 176 /////////////////////////////////////////////////////////////////////////////////
Darstack 2:d168f964c331 177 /*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Color amarillo°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*/
Darstack 2:d168f964c331 178 ////////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 179 if ( frqblue >= 0.0 and frqblue <= 25.0 ) {
Darstack 3:3454cb7584e1 180
Darstack 3:3454cb7584e1 181 if( frqgreen >= 20.0 and frqgreen <= 40.0) {
Darstack 3:3454cb7584e1 182
Darstack 3:3454cb7584e1 183 if ( 20.0 >= frqred <= 46.0 ) {
Darstack 2:d168f964c331 184
Darstack 3:3454cb7584e1 185 printf ( "tiende a amarillo \n" );
Darstack 2:d168f964c331 186 mybuzzer.period_us(FA);
Darstack 2:d168f964c331 187 mybuzzer.write(0.5);
Darstack 2:d168f964c331 188 wait(5);
Darstack 2:d168f964c331 189 mybuzzer.write(0);
Darstack 3:3454cb7584e1 190 sel_color=4;
Darstack 3:3454cb7584e1 191
Darstack 2:d168f964c331 192 }
Darstack 2:d168f964c331 193 }
Darstack 2:d168f964c331 194 }
Darstack 2:d168f964c331 195 /////////////////////////////////////////////////////////////////////////////////
Darstack 2:d168f964c331 196 /*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Color no found°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*/
Darstack 2:d168f964c331 197 ////////////////////////////////////////////////////////////////////////////////
Darstack 3:3454cb7584e1 198
Darstack 3:3454cb7584e1 199 switch ( sel_color ) {
Darstack 3:3454cb7584e1 200
Darstack 3:3454cb7584e1 201 case 1:
Darstack 3:3454cb7584e1 202
Darstack 3:3454cb7584e1 203 int32_t enviar = RESPUESTA1 ;
Darstack 3:3454cb7584e1 204 char txt [6] ;
Darstack 3:3454cb7584e1 205 printf ( txt, "%04X" , RESPUESTA1 );
Darstack 3:3454cb7584e1 206
Darstack 3:3454cb7584e1 207 break;
Darstack 3:3454cb7584e1 208
Darstack 3:3454cb7584e1 209 case 2:
Darstack 3:3454cb7584e1 210
Darstack 3:3454cb7584e1 211 int32_t enviar = RESPUESTA2 ;
Darstack 3:3454cb7584e1 212 char txt [6] ;
Darstack 3:3454cb7584e1 213 printf ( txt, "%04X" , RESPUESTA2 ) ;
Darstack 3:3454cb7584e1 214
Darstack 3:3454cb7584e1 215 break;
Darstack 3:3454cb7584e1 216
Darstack 3:3454cb7584e1 217 case 3:
Darstack 2:d168f964c331 218
Darstack 3:3454cb7584e1 219 int32_t enviar = RESPUESTA3;
Darstack 3:3454cb7584e1 220 char txt [6] ;
Darstack 3:3454cb7584e1 221 printf ( txt, "%04X" , RESPUESTA3 );
Darstack 3:3454cb7584e1 222
Darstack 3:3454cb7584e1 223 break;
Darstack 3:3454cb7584e1 224
Darstack 3:3454cb7584e1 225 case 4:
Darstack 3:3454cb7584e1 226
Darstack 3:3454cb7584e1 227 int32_t enviar = RESPUESTA4;
Darstack 3:3454cb7584e1 228 char txt [6] ;
Darstack 3:3454cb7584e1 229 printf ( txt, "%04X" , RESPUESTA4 );
Darstack 3:3454cb7584e1 230 break;
Darstack 3:3454cb7584e1 231
Darstack 3:3454cb7584e1 232 default:{
Darstack 3:3454cb7584e1 233
Darstack 3:3454cb7584e1 234 int32_t enviar = RESPUESTA4;
Darstack 3:3454cb7584e1 235 char txt [6] ;
Darstack 3:3454cb7584e1 236 printf ( txt, "%04X" , RESPUESTA4 );
Darstack 3:3454cb7584e1 237
fabeltranm 0:fa6bdbdd4239 238 }
Darstack 3:3454cb7584e1 239
Darstack 3:3454cb7584e1 240
Darstack 2:d168f964c331 241 }
fabeltranm 0:fa6bdbdd4239 242
Darstack 3:3454cb7584e1 243 }
Darstack 3:3454cb7584e1 244