UAER ver1

Dependencies:   mbed

main.cpp

Committer:
JJting
Date:
2018-07-22
Revision:
0:d89da59efc0d

File content as of revision 0:d89da59efc0d:

#include "mbed.h"
#include <math.h>

// timer 1
#define LOOPTIME  1000                         // 1 ms
//unsigned long lastMilli = 1000;
unsigned long lastMilli;
// sampling time
//float T = 0.001;
Timer t;
// BT
Serial uart_1(SERIAL_TX, SERIAL_RX);
//Serial uart_1(D10,D2);            // TX : D10     RX : D2           // serial 1
void init_uart(void);
void separate(void);
void uart_send(void);

// uart send data
int display[6] = {0,0,0,0,0,0};
char num[14] = {255,255,0,0,0,0,0,0,0,0,0,0,0,0};      // char num[0] , num[1] : 2 start byte
unsigned long time_flag;
unsigned long uart_flag;
unsigned long Tstart;
unsigned long Tperiod;

// FSR
AnalogIn FSR(A0);
Ticker timer1;
float Voltage_FSR;
void init_TIMER(void);
void timer1_interrupt(void);

// EMG
AnalogIn EMG(A1);
float Voltage_EMG;


int main()
{
    t.start();
    lastMilli = t.read_ms();
    uart_flag = 0;
    Tperiod = 0;
    init_uart();

    // FSR
    init_TIMER();

    while(1) {
        // timer 1
        //flag_time = 0;
//        if((t.read_ms() - lastMilli) >= LOOPTIME)          // 1 ms
//        {
////            flag_time = 1;
//            lastMilli = t.read_us();
//            uart_send();
//            uart_flag = t.read_us() - lastMilli;
//        }
    Tstart = t.read_us();
    uart_send();
    Tperiod = t.read_us()-Tstart;
    Tperiod = Tperiod/10;
    }   // while(1) end
}

int i = 0;
void uart_send(void)
{
    // uart send data
//    display[0] = Gyro_axis_data[0];
    display[0] = Voltage_FSR;
    display[1] = Voltage_EMG;
    display[2] = Tperiod;
    display[3] = 3;
    display[4] = 4;
    display[5] = 5;

//    wait(0.2);
    separate();

    int j = 0;
    int k = 1;
    while(k) {
        if(uart_1.writeable()) {
            uart_1.putc(num[i]);
            i++;
            j++;
        }

        if(j>1) {                   // send 2 bytes
            k = 0;
            j = 0;
        }
    }

    if(i>13)
        i = 0;
}

void init_uart()
{
    uart_1.baud(115200);      // 設定baudrate
}

void separate(void)
{
    num[2] = display[0] & 0x00ff;           // LSB(8bit)資料存入陣列
    num[3] = display[0] >> 8;               // HSB(8bit)資料存入陣列
    num[4] = display[1] & 0x00ff;;
    num[5] = display[1] >> 8;
    num[6] = display[2] & 0x00ff;;
    num[7] = display[2] >> 8;
    num[8] = display[3] & 0x00ff;;
    num[9] = display[3] >> 8;
    num[10] = display[4] & 0x00ff;;
    num[11] = display[4] >> 8;
    num[12] = display[5] & 0x00ff;;
    num[13] = display[5] >> 8;


}
/********************************************************************/
// init_TIMER
/********************************************************************/
void init_TIMER(void)
{
    timer1.attach_us(&timer1_interrupt, 10000);//10ms interrupt period (100 Hz)
//    timer2.attach(&timer2_interrupt, 1);//1s interrupt period (1 Hz)
}

void timer1_interrupt(void)
{
    Voltage_FSR = FSR.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
    Voltage_EMG = EMG.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
    Voltage_FSR = Voltage_FSR * 33; // Change the value to be in the 0 to 3300 range
    Voltage_EMG = Voltage_EMG * 33; // Change the value to be in the 0 to 3300 range
    time_flag = t.read_ms();
}