UAER ver1

Dependencies:   mbed

Revision:
0:d89da59efc0d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Jul 22 06:55:25 2018 +0000
@@ -0,0 +1,138 @@
+#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();
+}