PARA EL BETTUGIS

Dependencies:   mbed tsi_sensor MMA8451Q

main.cpp

Committer:
nicoalmaraz
Date:
2020-05-09
Revision:
0:c16bb842eb18

File content as of revision 0:c16bb842eb18:

#include "mbed.h"                                   //Incluye todas las bibliotecas de C++ q se te ocurran mas algunas funciones de mbed
#include "tsi_sensor.h"                             //Headers tsi
#include "MMA8451Q.h"                               //Headers acelerometro

#define ELEC0 9                                     //Electrodos TSI
#define ELEC1 10

PinName const SDA = PTE25;                          //Config I2C Acelerometro (NO USAR ESTAS PATAS PARA OTRAS COSAS)
PinName const SCL = PTE24;

//Timer
Ticker ticker;

//UART
RawSerial pc(USBTX, USBRX);                         //La placa usa las patas q en el pinout figuran como UART0. NO USAR ESTAS PATAS PARA OTRAS COSAS.

//ADC
AnalogIn nombre_entrada_analogica (/*Pata uC*/);    //Entrada Analogica entre 0v y 3.3v. Te tira un valor proporcional entre 0 y 1

//PWM
PwmOut nombre_salida_pwm(/*Pata uC*/);


//DAC
AnalogOut nombre_salida_analogica(/*Pata uC*/);

//GPIO
DigitalIn nombre_entrada_digital(/*Pata uC*/);
DigitalOut nombre_salida_digital(/*Pata uC*/);
DigitalOut lr(LED_RED);                             //Para usar LEDs de la placa (los podes usar con la salida PWM o la analogica tambien)
DigitalOut lg(LED_GREEN);                           //0: PRENDIDO
DigitalOut lb(LED_BLUE);                            //1: APAGADO

//Funciones q usas como interrupts    
void interrupcion_UART();
void interrupcion_timer();

int milisegundos;                                   //Cuenta milisegundos
char caracter;                                      //Memoria caracter recibido por Uart

int main(void) {
    //Timer
    ticker.attach(&interrupcion_timer,0.001)        //Se llama la funcion "timer" cada 0.001 seg (interrupt)    
    
    //UART
    pc.attach(&interrupcion_UART);                  //Se llama la funcion interrupcion_UART cada vez q recibis algo (interrupt)
    
    //TSI (Slider)
    TSIAnalogSlider tsi(ELEC0, ELEC1, 40);          //Config TSI (Slider)
    
    //Acelerómetro
    MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);    //Config acelerómetro           
    
    double valor_tsi;
    double valor_acelerometro_eje_x;
    double valor_acelerometro_eje_Y;
    double valor_acelerometro_eje_Z;
    
    while (true) {
        valor_tsi = tsi.readPercentage();           //Lees valor entre 0 y 1 (proporcional a posicion)
        
        //Valores ejes acelerometro. Creo q puede ir entre -1 y 1 (probar)
        valor_acelerometro_eje_x = acc.getAccX();   //Eje X
        valor_acelerometro_eje_Y = acc.getAccY();   //Eje Y
        valor_acelerometro_eje_Z = acc.getAccZ();   //Eje Z
        nombre_saida_analogica = 0.5;
        if(nombre_entrada_analogica<0.6)
            nombre_salida_digital = true;
        else
            nombre_salida_digital = false;    
        if(valor_acelerometro_eje_x<0.8) {
            nombre_salida_pwm =  0.1;               //Cambias PWM a 0.1% de duty
            nombre_salida_pwm.period(1);            //Cambias periodo a 10 seg
        }
        nombre_salida_analogica = 0.6;
        printf("PARA MANDARLE ALGO A LA PC USAR PRINTF\r\n);
        printf("No olvidarse de poner al final \r\n xq es una poronga q se traba todo\r\n");
    }
}

void interrupcion_timer() {
    milisegundos++;
}

void interrupcion_UART() {
    caracter = pc.getc();                           //Guardas el byte recibido (caracter ASCII)
}