Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:3454cb7584e1, 2019-03-09 (annotated)
- 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?
User | Revision | Line number | New 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 |