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
- 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();
}