sensor de color prueba 1

Dependencies:   mbed

Entrega Control Auto Con Josytik y Sonidos Musicales Por Sensor de luz

Integrantes Sneider Mocada, Daniel Pardo , Harrison Duran , Steven Castro Materia : Sistemas Embebidos

Profesor : Ferney Beltran

**

Ejecución

el ejercicio consiste en desarrollar un código de programa que mediante un sensor de color TCM302 permita leer una determinada serie de colores, adicional a eso también permitirá el movimiento de dos motores nema que seran movidos no solo por los diferentes telecomandos que se enviaran si no también mediante un joystik , el código hará que un buzzer emita diferentes sonidos dependiendo de su frecuencia ,todo esto se logra debido a una tarjeta embebida llamada STM32L476 Núcleo-64 y el compilador gratuito de la pagina de MBED,por medio de la aplicación COOLTERM se enviaran los diferentes telecomandos anteriormente mencionados y nombrados en dicho código, donde se logre habilitar y des habilitar cada uno de los componentes utilizados en nuestro carro robotico

/media/uploads/stevencastro/gmhg.png

Manual del usuario

/media/uploads/stevencastro/1.png /media/uploads/stevencastro/2.png /media/uploads/stevencastro/3.png /media/uploads/stevencastro/4.png /media/uploads/stevencastro/11.png /media/uploads/stevencastro/12.png

Manual Técnico

componentes del sistema

  • Tarjeta embebida a utilizar /media/uploads/stevencastro/stm.png
  • Características
  • La placa Núcleo STM32 ofrece las siguientes características:
  • • Microcontrolador STM32 en paquete LQFP64
  • • Tres LEDs:
  • Comunicación USB (LD1), LED de usuario (LD2), LED de alimentación (LD3)
  • • Dos pulsadores: USUARIO y RESET.
  • • Dos tipos de recursos de extensión.
  • - Conectividad Arduino ™ Uno V3
  • - Cabezales de pines de extensión ST morpho para acceso completo a todas las E / S STM32
  • • Alimentación de la placa flexible:
  • - USB VBUS o fuente externa (3.3 V, 5 V, 7 - 12 V)
  • - Punto de acceso de administración de energía.
  • • Depurador y programador ST-LINK / V2-1 integrados con conector SWD
  • - Selector de modo de selección para usar el kit como un ST-LINK / V2-1 independiente
  • • Capacidad de re-enumeración USB. Tres interfaces diferentes compatibles con USB:
  • - Puerto COM virtual
  • - Almacenamiento masivo
  • - Puerto de depuración
  • • Amplia biblioteca de software libre HAL que incluye una variedad de ejemplos de software
  • BUZZER
    • Funcionaiento un buzzer funciona como un emisor de sonido que se puede graduar mediante la frecuencia que queramos generar en la programacion, se puede conectar de 2 voltios hasta 5 voltios /media/uploads/stevencastro/buzzer_osa8ET1.png
  • Sensor de color características de funcionamiento
  • El sensor es un convertidor de luz a frecuencia que lee una matriz de 8×8 fotodiodos, de tal manera que 16 fotodiodos tienen filtro azul, 16 fotodiodos tienen filtro verde, 16 fotodiodos tienen filtro rojo y 16 fotodiodos son sin filtro.
  • Funciona de 2.7V a 5.5V
  • Alta Resolución de conversión de luz a frecuencia
  • Comunicación directa con el microcontrolador
  • Características en poder bajo (funciona estando apagado) ( Power Down Feature)
  • Error de No linealidad alrededor del 0.2% a 50 KHz
  • Coeficiente de temperatura estable de 200ppm/°C
    • /media/uploads/stevencastro/sensor.png

tablas de configuración de los fotodiodos /media/uploads/stevencastro/tablas.png

Diagrama de funcionamiento /media/uploads/stevencastro/diagrama_de_funcionamiento.png **

  • SO,S1 = Salida de frecuencia
  • S2,S3= Entradas de selección tipo fotodiodo.
  • OUT: Salida de frecuencia (f0)

MOTORES A PASOS

/media/uploads/stevencastro/motor_a_paso.jpg

  • Tamaño: 42 mm x 38 mm cuadrados, sin incluir el eje (NEMA 17)
  • Peso: 285g (10 onzas)
  • Diámetro: 5 mm.
  • Pasos por revolución: 200.
  • Corriente: 1.68A por bobina.
  • Voltaje: 2.7 V.
  • Resistencia: 1.65 Ohm por bobina.
  • Torque: 3.7Kg-cm (51 onzas-in)

MODULO JOYSTIK /media/uploads/stevencastro/josystik.jpg Un joystick suele estar formado por dos potenciómetros a 90º que transforman el movimiento en X e Y del mando en una señal eléctrica proporcional a su posición y que además suele incluir un botón. Así pues, suelen tener 5 pines: X, Y, botón y 3.3V y GND.

Control Auto Con Josytick y Sonidos Musicales Por Sensor de Color

#include "mbed.h"
#include "scolor_TCS3200.h"

Librería para la descarga de la target .h, Librería usada para llamar la configuración general del sensor de color

Control Auto Con Joystick y Sonidos Musicales Por Sensor de Color

#define INITCMD 0xFF
#define DO  3500
#define RE  2500
#define MI  2000
#define FA  3000

Define la inicialización del comando como FF, y definimos la frecuencia de los tonos

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

scolor_TCS3200  scolor(D8,D7,D6,D5,D4);

Configuración de pines digitales del sensor de color

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

DigitalOut stepper_step(D12);
DigitalOut steppeer_dir(D13);
DigitalOut stepper_step2(D11);
DigitalOut steppeer_dir2(D10);

Configuración de las salidas digitales que controlan al motor

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 PwmOut mybuzzer (D15);

Configuración pin PWM de salida para hacer los sonidos con el Buzzer

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 Serial command(USBTX, USBRX);

Configuración de los pines de comunicación TX Y RX con el pc en serial USB

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 AnalogIn value_analg0 ( A0 ) ;//x
   AnalogIn value_analg1 ( A1 ) ;//y

Configuración Pines análogos para la lectura del joystick

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 Ticker tk1;

Declaración de nuestro Primer Tiemer para que la lectura del sensor sea constante

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

InterruptIn button1(D2);
Timeout button1_timeout; 

Declaración de una interrupcion de entrada dada por el botón del joystick

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

volatile bool button1_pressed = false; // Used in the main loop
volatile bool button1_enabled = true; // Used for debouncing

void button1_enabled_cb(void)
{
    button1_enabled = true;
}

le damos valor a dos variables booleanas (false o true) las cuales se encargarán de leer el estado del boton joystick la funcion botto1_enabled-cb se encargara de poner la variable botton1_enabled en verdadero eso significa que el boton esta habilitado para oprimir

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

void button1_onpressed_cb(void)

{ 
    if (button1_enabled) { // Disabled while the button is bouncing
        button1_enabled = false;
        button1_pressed = true; // To be read by the main loop
        button1_timeout.attach(callback(button1_enabled_cb), 0.3); // Debounce time 300 ms
    }
    int idx = 0;
    if (button1_pressed) { // Etablece cuando se preciona el botn
            button1_pressed = false;
            //NVIC_SystemReset();
             printf("Button pressed %d\n", idx++);
            led1 = !led1;
        }
}

Funcion que controla el ruido al momento de usar el joystick nos dice si el boton esta siendo oprimido y en que momento se podrán volver a guardar los datos que envié en el momento de volverse a oprimir

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

  volatile int Exit = 0 ;           
           double In [ 1 ] = {} ; 
           int8_t salida = 0 ;
           uint32_t VELOCITY = 400 ;
           int16_t recepsion [ 2 ] = {} ; 

Declaracion variables

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 void setup_uart ();
    void Rx_interrupt();
    void leer_datos ();
    void sensor_color ();
    void comandosrobot ( uint8_t Parametro, uint8_t Comandos );

Declaración Funciones

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

int main() {
    setup_uart();
    button1.fall(callback(button1_onpressed_cb));
    tk1.attach (&sensor_color, 0.8 );

en nuestro cuerpo principal empezamos con la lectura de la velocidad de recepción de datos en baudios y se tendrá en cuenta el estado del boton del joystick para no interrumpir el código principal ademas de esto cada 0.38 micro segundo la función de sensar color sera llamada para que lea el color

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

     while(1){  
        leer_datos();
        comandosrobot ( recepsion [ 1 ], recepsion [ 0 ] );
}

nuestro primer while se basara en la lectura de los comandos que enviemos por el programa cool tearm desde la función leer datos que guardara los valores en un arreglo y se evaluaran en la función comandosrobot donde se guardan las acciones de los periféricos de nuestro robot

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

    void setup_uart()   {
    command.baud(115200);
}

función que establece la velocidad de comunicación

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

    void leer_datos()    {
 
    while ( command.getc()!= INITCMD ) ;
    uint8_t i ;
    
    for ( i = 0 ; i < 2 ; i++){
        
        recepsion [ i ] = command.getc (); 
        
        }
}

función que lee los datos enviados por el pc mientras la inicializacion del comando se evalúa se guardan los datos en un arreglo de 3 datos los cuales se guardaran en una variable llamada recepción

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

        void Rx_interrupt() {
    Exit = 1;
    command.attach( NULL, Serial::RxIrq );
     printf("int ");        
    return ;
 
}

Funcion Interrupccion

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 void sensor_color(){
        
    long     red = scolor.ReadRed();
    long     green = scolor.ReadGreen();
    long     blue = scolor.ReadBlue();
    long     clear = scolor.ReadClear();
    long freqrojo;
    long freqverde;
    long freqazul;
     long freqclear;

Funcion Inicializacion del sensor de color

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

     freqrojo=((1.0/(2*red))*1000);
          freqverde=((1.0/(2*green))*1000);
            freqazul=((1.0/(2*blue))*1000);
             freqclear=((1.0/(2*clear))*1000);

Obtencion de Frecuencias de lectura del sensor

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 if ( freqrojo>=20 and  freqrojo <=31) // lee  rojo
        {
            if (freqverde >=7 and freqverde <=11 )
            {
                if ( freqazul>=10 and freqazul<=15)
                {
                    if (freqclear>=40 and freqclear <=55) 
                    {
                        
            printf("|FE 01|\n");
            mybuzzer.period_ms(200);
            mybuzzer.write(0.5);
            wait_ms(4000);
            mybuzzer.write(0);
}

Lectura Color Rojo

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

if ( freqrojo>=10 and  freqrojo <=15)  // leer azul 
        {
            if (freqverde>=11 and freqverde <=15)
            {
                if ( freqazul>=25 and  freqazul <=31)
                {   if (freqclear >=45 and freqclear <=62){
            
            printf("|FE 02|\n"); 
            mybuzzer.period_ms(300);
            mybuzzer.write(0.5);
            wait_ms(4000);
            mybuzzer.write(0); 
            }     
        

Lectura color Azul

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 if ( freqrojo>=10 and freqrojo<=21) // lee verde
        {
            if (freqverde>=12 and freqverde<=33)
            {
                if ( freqazul>=12 and  freqazul<=20)
                {
                    if (freqclear>=40 and freqclear<=55 ){
            printf("|FE 03|\n");
            mybuzzer.period_ms(500);
            mybuzzer.write(0.5);
            wait_ms(4000);
            mybuzzer.write(0);
                        }

Lectura color Verde

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 if ( freqrojo>=55 and freqrojo<=70) // lee  amarillo
        {
            if (freqverde>=41 and freqverde<=55)
            {
                if ( freqazul>=25 and  freqazul<=31)
                {
             if (freqclear>=71 and freqclear<=170 )
             {
                        
            printf("|FE 04|\n");
            mybuzzer.period_ms(600);
            mybuzzer.write(0.5);
            wait_ms(4000);
            mybuzzer.write(0);
                     
                }

Lectura Color Amarillo

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 if (red <=200) 
        {
            if (green <=300)
            {
                if (blue <=200)
                {
                        
            printf("|FE 00|\n");

Error en la lectura

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 void comandosrobot ( uint8_t Parametro, uint8_t Comandos ){
        uint8_t i ;
        uint8_t j ;
            switch (Comandos){
            case 0 : 
                printf ("Robot sensador de color Reproductor de sonidos");
            break;

Caso 0, Inicializacion Robot

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 1 :
                printf ( "sonido:1              Tiempo: %d s  \n" , Parametro ) ;
                mybuzzer.period_us ( RE ) ;
                mybuzzer.write ( 0.8 ) ;
                wait( Parametro ) ;
                mybuzzer.write ( 0 ) ;
            break; 

Caso1, Activacion sonido 1

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 2 :
                printf ( "sonido:2              Tiempo: %d s  \n" , Parametro ) ;
                mybuzzer.period_us ( MI ) ;
                mybuzzer.write ( 0.8 ) ;
                wait( Parametro ) ;
                mybuzzer.write ( 0 ) ;
            break;

Caso2: Activacion sonido 2

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 3 :
                printf ( "sonido:3              Tiempo: %d s  \n" , Parametro ) ;
                mybuzzer.period_us ( DO ) ;
                mybuzzer.write ( 0.8 ) ;
                wait( Parametro ) ;
                mybuzzer.write ( 0 ) ;
            break;

Caso 3,Activacion sonido 3

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 case 4 :
                printf ( "sonido:4              Tiempo: %d s  \n" , Parametro ) ;
                mybuzzer.period_us ( FA ) ;
                mybuzzer.write ( 0.8 ) ;
                wait( Parametro ) ;
                mybuzzer.write ( 0 ) ;
            break;

Caso 4, Activacion sonido 4

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 5 : 
                
                steppeer_dir = 0;
                steppeer_dir2 = 0 ;
                wait_us ( 1 );
                for ( j = 1 ; j <= Parametro ; j++){
            
                    for ( i= 0 ; i <=  250 ; i++ ){
                 
                        stepper_step = 1 ; 
                        stepper_step2 = 1;
                        wait_us(VELOCITY);
                        stepper_step = 0;
                        stepper_step2 = 0;
                        wait_us ( VELOCITY );
            
                    } 
                }
            break ; 

Caso 5, Activacion Motores hacia adelante

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 6 : 
            printf ("atras");
               steppeer_dir = 1;
                steppeer_dir2 = 1;
                wait_us ( 1 );
                for ( j = 1 ; j <= Parametro ; j++){
                    for ( i= 0 ; i <=  200; i++ ){
                 
                        stepper_step = 1  ; 
                        stepper_step2 = 1 ;
                        wait_us( VELOCITY ) ;
                        stepper_step = 0 ;
                        stepper_step2 = 0 ;
                        wait_us ( VELOCITY ) ;
            
                    } 
                
                }
                
            break ;

Caso 6, Activacion Motores hacia atras

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 7 : 
            printf ("derecha");
            //steppeer_dir = 0;
            steppeer_dir2 = 0 ;
                wait_us ( 1 );
                for ( j = 1 ; j <= Parametro ; j++){
            
                    for ( i= 0 ; i <=  200 ; i++ ){
                 
                       // stepper_step = 1 ; 
                       stepper_step2 = 1;
                        wait_us(VELOCITY);
                        //stepper_step = 0;
                        stepper_step2 = 0;
                        wait_us ( VELOCITY );
            
                    } 
                }
            break ; 

Caso 7, Activacion Motores hacia la derecha

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 8 : 
            printf ("izquierda");
            steppeer_dir = 0;
                //steppeer_dir2 = 0 ;
                wait_us ( 1 );
                for ( j = 1 ; j <= Parametro ; j++){
                  for ( i= 0 ; i <=  200 ; i++ ){     
                        stepper_step = 1 ; 
                  //      stepper_step2 = 1;
                        wait_us(VELOCITY);
                        stepper_step = 0;
                    //    stepper_step2 = 0;
                        wait_us ( VELOCITY );
            
                    } 
                }
                //command.attach( callback(Rx_interrupt), Serial::RxIrq );
            break ;

Caso 8, Activacion Motores hacia la izquierda

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

    case 9 :
            switch ( Parametro ){
                case 1:
                    VELOCITY = 400 ;
                break ;
                case 2:
                    VELOCITY = 2500 ;
                break ;
                case 3:
                    VELOCITY = 5000 ;
                break ; 
                }
                break;  

Caso 9, Cambio de velocidad de los motores

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

case 10:
            if ( Parametro == 1){ 
                Exit=0;            
                while ( !Exit ){ 
                    In [ 0 ] = value_analg0.read(); // Converts and read the analog input value (value from 0.0 to 1.0)    
                    printf(" X = %.04f \n", In[0]); 

Caso 10, Cambio de control al Joystick

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

if ( In [ 0 ] > 0.6 ){ 
 
                        steppeer_dir = 1;
                        wait_us( 1 );
                
                        for ( i= 0 ; i <=  50 ; i++ ){
                 
                            stepper_step = 1 ; 
                            //stepper_step2 = 1 ;
                            wait_us( VELOCITY ) ;
                            stepper_step = 0 ;
                            //stepper_step2 = 0 ;
                            wait_us( VELOCITY ) ;
                        }

Control direccion Joystick hacia adelante

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

  if ( In [ 0 ] < 0.3 ){ 
                
                        steppeer_dir2 = 1;
                        wait_us( 1 );
                        
                        for ( i= 0 ; i <=  50 ; i++ ){
                 
                            //stepper_step = 1 ; 
                            stepper_step2 = 1 ;
                            wait_us( VELOCITY ) ;
                            //stepper_step = 0 ;
                            stepper_step2 = 0 ;
                            wait_us( VELOCITY ) ;
                        

Control direccion Joystick hacia atras

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 In [ 1 ] = value_analg1.read(); // Converts and read the analog input value (value from 0.0 to 1.0)    
                    //printf(" Y = %.04f \n", In[0]); 
                                
                    if (In [ 1 ] > 0.6 ){
                     
                        steppeer_dir = 1 ;
                        steppeer_dir2 = 0 ;
                        wait_us( 1 );
                        
                        for ( i= 0 ; i <= 50 ; i++ ){
                 
                            stepper_step = 1 ; 
                            stepper_step2 = 1 ;
                            wait_us( VELOCITY ) ;
                            stepper_step = 0 ;
                            stepper_step2 = 0 ;
                            wait_us( VELOCITY ) ;

Control direccion Joystick hacia la derecha

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

                                        
                    if ( In [ 1 ] < 0.3 ){
                     
                        steppeer_dir = 0 ;
                        steppeer_dir2 = 1 ;
                        wait_us( 1 );
                        
                        for ( i= 0 ; i <= 50 ; i++ ){
                         
                            stepper_step = 1 ; 
                            stepper_step2 = 1 ;
                            wait_us( VELOCITY ) ;
                            stepper_step = 0 ;
                            stepper_step2 = 0 ;
                            wait_us ( VELOCITY ) ;

Control direccion Joystick hacia la izquierda

Control Auto Con Josytik y Sonidos Musicales Por Sensor de Color

 command.attach( callback(Rx_interrupt), Serial::RxIrq );
                    wait_us ( 1 );
                    
                }
            }              
            break ;
            
Committer:
fabeltranm
Date:
Thu Feb 28 22:33:57 2019 +0000
Revision:
1:334b40b47233
Parent:
0:fa6bdbdd4239
Child:
2:1c61db0b3207
OK

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
fabeltranm 1:334b40b47233 51 #define CMD 0x01
fabeltranm 0:fa6bdbdd4239 52
fabeltranm 0:fa6bdbdd4239 53
fabeltranm 0:fa6bdbdd4239 54
fabeltranm 0:fa6bdbdd4239 55 Serial command(USBTX, USBRX);
fabeltranm 1:334b40b47233 56 // S0, S1, S2, S3, OUT
fabeltranm 1:334b40b47233 57 scolor_TCS3200 scolor(PA_8, PB_10, PB_4, PB_5, PB_3);
fabeltranm 0:fa6bdbdd4239 58
fabeltranm 0:fa6bdbdd4239 59 // definición de las funciones
fabeltranm 0:fa6bdbdd4239 60 void setup_uart();
fabeltranm 0:fa6bdbdd4239 61 void leer_datos();
fabeltranm 0:fa6bdbdd4239 62 void leer_color();
fabeltranm 0:fa6bdbdd4239 63
fabeltranm 0:fa6bdbdd4239 64 uint8_t cmd;
fabeltranm 0:fa6bdbdd4239 65
fabeltranm 0:fa6bdbdd4239 66 int main() {
fabeltranm 0:fa6bdbdd4239 67
fabeltranm 0:fa6bdbdd4239 68 setup_uart();
fabeltranm 0:fa6bdbdd4239 69 while(1){
fabeltranm 0:fa6bdbdd4239 70 leer_datos();
fabeltranm 0:fa6bdbdd4239 71 if (cmd==CMD){}
fabeltranm 1:334b40b47233 72 leer_color();
fabeltranm 0:fa6bdbdd4239 73 }
fabeltranm 0:fa6bdbdd4239 74 }
fabeltranm 0:fa6bdbdd4239 75
fabeltranm 0:fa6bdbdd4239 76
fabeltranm 0:fa6bdbdd4239 77
fabeltranm 0:fa6bdbdd4239 78 void setup_uart(){
fabeltranm 0:fa6bdbdd4239 79 command.baud(115200);
fabeltranm 0:fa6bdbdd4239 80 }
fabeltranm 0:fa6bdbdd4239 81
fabeltranm 0:fa6bdbdd4239 82
fabeltranm 0:fa6bdbdd4239 83 void leer_datos(){
fabeltranm 0:fa6bdbdd4239 84 while(command.getc()!= INITELE);
fabeltranm 0:fa6bdbdd4239 85 cmd=command.getc();
fabeltranm 1:334b40b47233 86
fabeltranm 0:fa6bdbdd4239 87
fabeltranm 0:fa6bdbdd4239 88 }
fabeltranm 0:fa6bdbdd4239 89
fabeltranm 0:fa6bdbdd4239 90
fabeltranm 0:fa6bdbdd4239 91 void leer_color(){
fabeltranm 0:fa6bdbdd4239 92
fabeltranm 1:334b40b47233 93
fabeltranm 1:334b40b47233 94
fabeltranm 0:fa6bdbdd4239 95 long red = scolor.ReadRed();
fabeltranm 0:fa6bdbdd4239 96 long green = scolor.ReadGreen();
fabeltranm 0:fa6bdbdd4239 97 long blue = scolor.ReadBlue();
fabeltranm 0:fa6bdbdd4239 98 long clear = scolor.ReadClear();
fabeltranm 0:fa6bdbdd4239 99
fabeltranm 1:334b40b47233 100 printf("RED: %5d GREEN: %5d BLUE: %5d CLEAR: %5d \n ", red, green, blue, clear);
fabeltranm 0:fa6bdbdd4239 101
fabeltranm 0:fa6bdbdd4239 102 }
fabeltranm 0:fa6bdbdd4239 103
fabeltranm 0:fa6bdbdd4239 104
fabeltranm 0:fa6bdbdd4239 105
fabeltranm 0:fa6bdbdd4239 106
fabeltranm 0:fa6bdbdd4239 107