jack zen
/
ADXL345Test_for_motor
ADXL345Test_for_motor
Fork of ADXL345Test by
Diff: main.cpp
- Revision:
- 5:ff61547eaee6
- Parent:
- 4:f5a78245f2d0
--- a/main.cpp Tue Aug 29 09:18:15 2017 +0000 +++ b/main.cpp Tue Sep 05 01:48:26 2017 +0000 @@ -1,8 +1,110 @@ #include "ADXL345_I2C.h" +#include "TM1638.h" +#include "mbed.h" +#if(1) +#include "Font_7Seg.h" +// DisplayData_t size is 16 bytes (8 Grids @ 10 Segments) + +TM1638::DisplayData_t all_str = {0xFF,0x00, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03, 0xFF,0x03}; +TM1638::DisplayData_t cls_str = {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +TM1638::DisplayData_t hello_str = {C7_H,0x00, C7_E,0x00, C7_L,0x00, C7_L,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}; +TM1638::DisplayData_t ledx[] = { + {C7_R,0x00, C7_A,0x00, C7_W,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_M,0x02, C7_E,0x00, C7_A,0x00, C7_N,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_S,0x00, C7_U,0x02, C7_M,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_S,0x00, C7_T,0x00, C7_D,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_1,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_2,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, C7_X,0x00}, + {C7_3,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, C7_X,0x00}, + {C7_1,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, C7_X,0x00}, + {C7_2,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x02}, + }; +TM1638::DisplayData_t ledy[] = { + {C7_R,0x00, C7_A,0x00, C7_W,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_M,0x02, C7_E,0x00, C7_A,0x00, C7_N,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_S,0x00, C7_U,0x02, C7_M,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_S,0x00, C7_T,0x00, C7_D,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_1,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_2,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, + {C7_3,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, C7_Y,0x00}, + {C7_1,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, C7_Y,0x00}, + {C7_2,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x02}, + }; +TM1638::DisplayData_t ledz[] = { + {C7_R,0x00, C7_A,0x00, C7_W,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_M,0x02, C7_E,0x00, C7_A,0x00, C7_N,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_S,0x00, C7_U,0x02, C7_M,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_S,0x00, C7_T,0x00, C7_D,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_1,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_2,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, + {C7_3,0x00, C7_I,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, 0x00,0x00, C7_Z,0x00}, + {C7_1,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x02, C7_Z,0x00}, + {C7_2,0x00, C7_D,0x00, C7_O,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x02}, + }; + +TM1638::DisplayData_t animate[] = { + {S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_A,0x00}, + + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_B,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_C,0x00}, + + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, 0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {0x00,0x00, S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {S7_D,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + + {S7_E,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + {S7_F,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00}, + }; +//TM1638::DisplayData_t axis[] = { +// {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_X,0x00}, +// {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Y,0x00}, +// {0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, C7_Z,0x00}, +// }; + +//TM1638::DisplayData_t axis1[] = { +// {C7_1,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 }, +// }; +//TM1638::DisplayData_t axis2[] = { +// {C7_1,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 }, +// }; +//TM1638::DisplayData_t axis3[] = { +// {C7_1,0x00, C7_X,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Y,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 }, +// {C7_1,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 ,C7_2,0x00, C7_Z,0x00, 0x00,0x00, 0x00,0x00 }, +// }; + + +// KeyData_t size is 4 bytes +TM1638::KeyData_t keydata; + +//TM1638_LEDKEY8 declaration +TM1638_LEDKEY8 LEDKEY8(PA_7,PA_6,PB_3, PD_14); + + + +#endif ADXL345_I2C accelerometer(I2C_SDA, I2C_SCL); Serial pc(USBTX, USBRX); - + AnalogOut AO1(PA_4),AO2(PA_5); + DigitalOut DO1(PG_0),DO2(PE_0); + DigitalIn DI(PG_1); class RangeMapper { /* @@ -12,16 +114,23 @@ protected: double _ratio; double _offset; + double _outrange; public: RangeMapper(double x_min, double x_max, double y_min, double y_max) { _ratio = (y_max - y_min) / (x_max - x_min); _offset = y_min - x_min * _ratio; + _outrange = y_max - y_min; }; ~RangeMapper(){}; double getOutput(double x_input) {return x_input * _ratio + _offset;}; + void zoom(float ratio) + {_ratio *= ratio;}; + void shift(float ratio) + {_offset += _outrange * ratio ; } ; }; + class DataProcess @@ -41,10 +150,11 @@ int64_t _preData; int64_t _dif1; //1 order differentiation int64_t _dif2; //2 order differentiation + double _absolute; public: DataProcess(): _summary(0), _squardsum(0), _numbers(0), _max(0), _min(0), - _itg1(0), _itg2(0), _itg3(0), _preData(0), _dif1(0), _dif2(0) {}; + _itg1(0), _itg2(0), _itg3(0), _preData(0), _dif1(0), _dif2(0) ,_absolute(0){}; ~DataProcess() {}; void putData(int64_t x) { int64_t temp; @@ -53,13 +163,15 @@ _summary += x; _squardsum += x*x; _numbers ++; - _itg1 = _summary; + _itg1 += x - _summary / _numbers ; _itg2 += _itg1; _itg3 += _itg2; temp = _dif1; _dif1 = x - _preData; _preData = x; _dif2 = _dif1 - temp; + if (x - _summary / _numbers >= 0) _absolute = x - _summary / _numbers; + if (x - _summary / _numbers < 0) _absolute = _summary / _numbers - x ; }; int64_t getSum(void) {return _summary;}; double getMean(void) {return (double)_summary / (double)_numbers ;}; @@ -72,15 +184,19 @@ int64_t getO3integration(void) {return _itg3;}; int64_t GetO1differ(void) {return _dif1;}; int64_t GetO2differ(void) {return _dif2;}; + double getabsolute(void) {return _absolute;}; }; - int main() { + int cmd =0,cmd2=0,cmd3=0,cmd4=0,t=0,tmin=1250;//get12=0; + int test[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + + //int cmd1 =0,ch1=0,ch2=0; char getc =0; - int channel = 0, datamode =0; - bool output = true, mapout = false; + int channel = 0, datamode= 0;//, datamode2 =9; + bool output = false, mapout = true; pc.baud(115200); int readings[3] = {0, 0, 0}; - RangeMapper DAC_Mapper( 0 - 1<<13, 1<<13, 0, 1); + //RangeMapper DAC_Mapper( 0 - 1<<13, 1<<13, 0, 1); DataProcess dp1, dp2, dp3; DataProcess dp[3] = {dp1, dp2, dp3}; @@ -89,8 +205,20 @@ pc.printf("Starting ADXL345 test...\r\n"); wait(.001); pc.printf("Device ID is: 0x%02x\r\n", accelerometer.getDeviceID()); - wait(.001); - + wait(.001); +#if(1) + LEDKEY8.cls(); + LEDKEY8.writeData(all_str);//全亮 + wait(0.1); + LEDKEY8.setBrightness(TM1638_BRT3); + wait(1); +// LEDKEY8.setBrightness(TM1638_BRT0); +// wait(1); +// LEDKEY8.setBrightness(TM1638_BRT4); +// wait(1); + //LEDKEY8.cls(true); + LEDKEY8.writeData(cls_str); +#endif restart: // These are here to test whether any of the initialization fails. It will print the failure @@ -133,40 +261,290 @@ pc.printf(" e -> 1st order Integration \r\n"); pc.printf(" f -> 2nd order Integration \r\n"); pc.printf(" g -> 3rd order Integration \r\n"); - pc.printf(" h -> 1st order Differentiation \r\n"); - pc.printf(" k -> 2nd order Differentiation \r\n"); + pc.printf(" h -> print Data Commands \r\n"); + pc.printf(" k -> 1nd order Differentiation \r\n"); + pc.printf(" m -> 2nd order Differentiation \r\n"); + pc.printf(" + -> Output Zoom In 2X \r\n"); + pc.printf(" - -> Output Zoom Out 2Z \r\n"); + pc.printf(" ^ -> shift up 1% \r\n"); + pc.printf(" v -> shift down 1% \r\n"); pc.printf("Press any key to start. \r\n"); - getc = pc.getc(); - + //getc = pc.getc(); + int error_count=0; + RangeMapper DAC_Mapper1( 0 - 1<<13, 1<<13, 0, 1); + RangeMapper DAC_Mapper2( 0 - 1<<13, 1<<13, 0, 1); while (1) { - int error_count=0; - if (pc.readable()) + t++; + LEDKEY8.getKeys(&keydata);//130us +#if(1) + if(t>tmin){ + if (keydata[LEDKEY8_SW1_IDX] == LEDKEY8_SW1_BIT ) + { + t=0; + switch(cmd) + { + case 0 :pc.printf("Data procesing output switch to X channdel\r\n");cmd++;channel = 0;test[0]=C7_X;break; + case 1 :pc.printf("Data procesing output switch to Y channdel\r\n");cmd++;channel = 1;test[0]=C7_Y;break; + case 2 :pc.printf("Data procesing output switch to Z channdel\r\n");cmd=0;channel = 2;test[0]=C7_Z;break; + default: break; + } + TM1638::DisplayData_t animate1={test[0],0x00, test[1],0x00, test[2],0x00,test[3],0x00, test[4],0x00,test[5],0x00, test[6],0x00,test[7],0x00}; + LEDKEY8.writeData(animate1); + } + if (keydata[LEDKEY8_SW2_IDX] == LEDKEY8_SW2_BIT ) + { + t=0; +// switch(channel) +// { +// case 0 :LEDKEY8.writeData(ledx[cmd2]);break; +// case 1 :LEDKEY8.writeData(ledy[cmd2]);break; +// case 2 :LEDKEY8.writeData(ledz[cmd2]);break; +// default: break; +// } + switch(cmd2) + { + case 0 :pc.printf("CH2(PA_5): Set to raw data output.\r\n");cmd2++;test[1]=C7_R;test[2]=C7_A;test[3]=C7_W;datamode=0;break; + case 1 :pc.printf("CH2(PA_5): Set to mean output.\r\n");cmd2++;datamode=1;test[1]=C7_M;test[2]=C7_E;test[3]=C7_A;break; + case 2 :pc.printf("CH2(PA_5): Set to summary output.\r\n");cmd2++;datamode=2;test[1]=C7_S;test[2]=C7_U;test[3]=C7_M;break; + case 3 :pc.printf("CH2(PA_5): Set to variance output.\r\n");cmd2++;datamode=3;test[1]=C7_S;test[1]=C7_T;test[3]=C7_D;break; + case 4 :pc.printf("CH2(PA_5): Set to 1st order Integration output.\r\n");cmd2++;datamode=4;test[1]=C7_1;test[2]=C7_I;test[3]=C7_O;break; + case 5 :pc.printf("CH2(PA_5): Set to 2nd order Integration output.\r\n");cmd2++;datamode=5;test[1]=C7_2;test[2]=C7_I;test[3]=C7_O;break; + case 6 :pc.printf("CH2(PA_5): Set to 3rd order Integration output.\r\n");cmd2++;datamode=6;test[1]=C7_3;test[2]=C7_I;test[3]=C7_O;break; + case 7 :pc.printf("CH2(PA_5): Set to 1st order Differentiation output.\r\n");cmd2++;datamode=7;test[1]=C7_1;test[2]=C7_D;test[3]=C7_O;break; + case 8 :pc.printf("CH2(PA_5): Set to 2nd order Differentiation output.\r\n");cmd2++;datamode=8;test[1]=C7_2;test[2]=C7_D;test[3]=C7_O;break; + case 9 :pc.printf("CH2(PA_5): Set to getabsolute output.\r\n");cmd2=0;datamode=9;test[1]=C7_A;test[2]=C7_B;test[3]=C7_S;break; + default: break; + } + TM1638::DisplayData_t animate1={test[0],0x00, test[1],0x00, test[2],0x00,test[3],0x00, test[4],0x00,test[5],0x00, test[6],0x00,test[7],0x00}; + LEDKEY8.writeData(animate1);//340us + } + if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT | keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT) + { + if (keydata[LEDKEY8_SW3_IDX] == LEDKEY8_SW3_BIT ) + { + t=0; + cmd3++; + DAC_Mapper2.zoom(2); + pc.printf("Mapout zoom in.\r\n"); + } + if (keydata[LEDKEY8_SW4_IDX] == LEDKEY8_SW4_BIT ) + { + t=0; + cmd3--; + DAC_Mapper2.zoom(0.5); + pc.printf("Mapout zoom out.\r\n"); + } + test[4]=C7_Z; + if(cmd3<0) + { + test[5]=S7_G; + } + else + { + test[5]=0; + } + switch(cmd3%10) + { + case 0 :test[7]=C7_0;break; + case -1: + case 1 :test[7]=C7_1;break; + case -2: + case 2 :test[7]=C7_2;break; + case -3: + case 3 :test[7]=C7_3;break; + case -4: + case 4 :test[7]=C7_4;break; + case -5: + case 5 :test[7]=C7_5;break; + case -6: + case 6 :test[7]=C7_6;break; + case -7: + case 7 :test[7]=C7_7;break; + case -8: + case 8 :test[7]=C7_8;break; + case -9: + case 9 :test[7]=C7_9;break; + default: break; + } + switch(cmd3/10) + { + case 0 :test[6]=C7_0;break; + case -1: + case 1 :test[6]=C7_1;break; + case -2: + case 2 :test[6]=C7_2;break; + case -3: + case 3 :test[6]=C7_3;break; + case -4: + case 4 :test[6]=C7_4;break; + case -5: + case 5 :test[6]=C7_5;break; + case -6: + case 6 :test[6]=C7_6;break; + case -7: + case 7 :test[6]=C7_7;break; + case -8: + case 8 :test[6]=C7_8;break; + case -9: + case 9 :test[6]=C7_9;break; + default: break; + } + TM1638::DisplayData_t animate1={test[0],0x00, test[1],0x00, test[2],0x00,test[3],0x00, test[4],0x00,test[5],0x00, test[6],0x00,test[7],0x00}; + LEDKEY8.writeData(animate1); + } + if(keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT | keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT) { - getc = pc.getc(); - switch( getc) - { - case 'x' : channel = 0 ; pc.printf("Data procesing output switch to X channdel \r\n"); break; - case 'y' : channel = 1 ; pc.printf("Data procesing output switch to Y channdel \r\n"); break; - case 'z' : channel = 2 ; pc.printf("Data procesing output switch to Z channdel \r\n"); break; - case '0' : - case 'o' : output = !output ; pc.printf("Turn %s data output.\r\n", (output ? "On" : "Off") ); break; - case '1' : - case 'i' : mapout = !mapout ; pc.printf("Turn %s mapping output.\r\n", (mapout ? "On" : "Off") ); break; - case 'a' : datamode = 0 ; pc.printf("Set to raw data output.\r\n"); break; - case 'b' : datamode = 1 ; pc.printf("Set to mean output.\r\n"); break; - case 'c' : datamode = 2 ; pc.printf("Set to summary output.\r\n"); break; - case 'd' : datamode = 3 ; pc.printf("Set to variance output.\r\n"); break; - case 'e' : datamode = 4 ; pc.printf("Set to 1st order Integration output.\r\n"); break; - case 'f' : datamode = 5 ; pc.printf("Set to 2nd order Integration output.\r\n"); break; - case 'g' : datamode = 6 ; pc.printf("Set to 3rd order Integration output.\r\n"); break; - case 'h' : datamode = 7 ; pc.printf("Set to 1st order Differentiation output.\r\n"); break; - case 'k' : datamode = 8 ; pc.printf("Set to 2nd order Differentiation output.\r\n"); break; - default: break; - } + if (keydata[LEDKEY8_SW5_IDX] == LEDKEY8_SW5_BIT ) + { + t=0; + cmd4++; + DAC_Mapper2.shift(0.1) ; + pc.printf("Mapout shift up.\r\n"); + } + if (keydata[LEDKEY8_SW6_IDX] == LEDKEY8_SW6_BIT ) + { + t=0; + cmd4--; + DAC_Mapper2.shift(-0.1) ; + pc.printf("Mapout shift down.\r\n"); + } + test[4 + + ]=C7_S; + if(cmd4<0) + { + test[5]=S7_G; + } + else + { + test[5]=0; + } + switch(cmd4%10) + { + case 0 :test[7]=C7_0;break; + case -1: + case 1 :test[7]=C7_1;break; + case -2: + case 2 :test[7]=C7_2;break; + case -3: + case 3 :test[7]=C7_3;break; + case -4: + case 4 :test[7]=C7_4;break; + case -5: + case 5 :test[7]=C7_5;break; + case -6: + case 6 :test[7]=C7_6;break; + case -7: + case 7 :test[7]=C7_7;break; + case -8: + case 8 :test[7]=C7_8;break; + case -9: + case 9 :test[7]=C7_9;break; + default: break; + } + switch(cmd4/10) + { + case 0 :test[6]=C7_0;break; + case -1: + case 1 :test[6]=C7_1;break; + case -2: + case 2 :test[6]=C7_2;break; + case -3: + case 3 :test[6]=C7_3;break; + case -4: + case 4 :test[6]=C7_4;break; + case -5: + case 5 :test[6]=C7_5;break; + case -6: + case 6 :test[6]=C7_6;break; + case -7: + case 7 :test[6]=C7_7;break; + case -8: + case 8 :test[6]=C7_8;break; + case -9: + case 9 :test[6]=C7_9;break; + default: break; + } + TM1638::DisplayData_t animate1={test[0],0x00, test[1],0x00, test[2],0x00,test[3],0x00, test[4],0x00,test[5],0x00, test[6],0x00,test[7],0x00}; + LEDKEY8.writeData(animate1); + } + if (keydata[LEDKEY8_SW7_IDX] == LEDKEY8_SW7_BIT ) + { + t=0; + output=!output; + pc.printf("Turn %s data output.\r\n", (output ? "On" : "Off") ); + } + if (keydata[LEDKEY8_SW8_IDX] == LEDKEY8_SW8_BIT ) + { + t=0; + mapout=!mapout; + pc.printf("Turn %s mapping output.\r\n", (mapout ? "On" : "Off") ); } - accelerometer.getOutput(readings); + + +#endif + //pc.printf("%i\r\n", pc.readable()); + + if (pc.readable()) + { + + getc = pc.getc(); + pc.format(8); + t=0; + switch(getc) + { + case 'x' : channel = 0 ; pc.printf("Data procesing output switch to X channdel \r\n");test[0]=C_X; break; + case 'y' : channel = 1 ; pc.printf("Data procesing output switch to Y channdel \r\n");test[0]=C_Y; break; + case 'z' : channel = 2 ; pc.printf("Data procesing output switch to Z channdel \r\n");test[0]=C_Z; break; + case '0' : + case 'o' : output = !output ; pc.printf("Turn %s data output.\r\n", (output ? "On" : "Off") ); break; + case '1' : + case 'i' : mapout = !mapout ; pc.printf("Turn %s mapping output.\r\n", (mapout ? "On" : "Off") ); break; + case 'a' : datamode = 0 ; pc.printf("CH2(PA_5): Set to raw data output.\r\n"); break; + case 'b' : datamode = 1 ; pc.printf("CH2(PA_5): Set to mean output.\r\n"); break; + case 'c' : datamode = 2 ; pc.printf("CH2(PA_5): Set to summary output.\r\n"); break; + case 'd' : datamode = 3 ; pc.printf("CH2(PA_5): Set to variance output.\r\n"); break; + case 'e' : datamode = 4 ; pc.printf("CH2(PA_5): Set to 1st order Integration output.\r\n"); break; + case 'f' : datamode = 5 ; pc.printf("CH2(PA_5): Set to 2nd order Integration output.\r\n"); break; + case 'g' : datamode = 6 ; pc.printf("CH2(PA_5): Set to 3rd order Integration output.\r\n"); break; + case 'h' : datamode = 0 ; pc.printf("Data Commands: \r\n"); + pc.printf(" x -> x channdel \r\n"); + pc.printf(" y -> y channdel \r\n"); + pc.printf(" z -> z channdel \r\n"); + pc.printf(" o,0 -> data output on/off \r\n"); + pc.printf(" i,1 -> mapper on/off \r\n"); + pc.printf(" a -> raw data \r\n"); + pc.printf(" b -> mean \r\n"); + pc.printf(" c -> summary \r\n"); + pc.printf(" d -> variance \r\n"); + pc.printf(" e -> 1st order Integration \r\n"); + pc.printf(" f -> 2nd order Integration \r\n"); + pc.printf(" g -> 3rd order Integration \r\n"); + pc.printf(" h -> print Data Commands \r\n"); + pc.printf(" k -> 1nd order Differentiation \r\n"); + pc.printf(" m -> 2nd order Differentiation \r\n"); + pc.printf(" + -> Output Zoom In 2X \r\n"); + pc.printf(" - -> Output Zoom Out 2Z \r\n"); + pc.printf(" ^ -> shift up 1% \r\n"); + pc.printf(" v -> shift down 1% \r\n"); + break; + case 'k' : datamode = 7 ; pc.printf("CH2(PA_5): Set to 1st order Differentiation output.\r\n"); break; + case 'm' : datamode = 8 ; pc.printf("CH2(PA_5): Set to 2nd order Differentiation output.\r\n"); break; + case '=' : + case '+' : DAC_Mapper2.zoom(2) ; pc.printf("Mapout zoom in.\r\n"); cmd3++;break; + case '-' : DAC_Mapper2.zoom(0.5) ; pc.printf("Mapout zoom out.\r\n");cmd3--; break; + case '6' : + case '^' : DAC_Mapper2.shift(0.01) ; pc.printf("Mapout shift up.\r\n");cmd4++; break; + case 'v' : DAC_Mapper2.shift(-0.01) ; pc.printf("Mapout shift down.\r\n");cmd4--; break; + default: break; + } + }//if (pc.readable()) + }//t>=tmin + DO2=1; + accelerometer.getOutput(readings);//220us + DO2=0; if (( 17601 == readings[0] ) || ( 17601 == readings[1] ) || ( 17601 == readings[2] )) { error_count++; @@ -177,38 +555,66 @@ goto restart; } } - else + else { double mapdata; error_count = 0; - dp[0].putData((int16_t)readings[0]); - dp[1].putData((int16_t)readings[1]); - dp[2].putData((int16_t)readings[2]); - if (output) - { - switch (datamode) + int i; + for (i = 0; i < 3; i++) + { + readings[i] = (int16_t) readings[i]; + dp[i].putData(readings[i]); + } + if (output)//output { - case 0: mapdata = readings[channel]; pc.printf("RAW: %i, %i, %i\r\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]); break; + + switch (datamode) + { + case 0: pc.printf("RAW: %i, %i, %i\r\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);break; //case 0: mapdata = readings[channel]; pc.printf("RAW: %i, %i, %i\r\n", readings[0], readings[1], readings[2]); break; - case 1: mapdata = dp[channel].getMean(); pc.printf("MEAN: %f, %f, %f\r\n", dp[0].getMean(), dp[1].getMean(), dp[2].getMean() ); break; - case 2: mapdata = dp[channel].getSum(); pc.printf("SUM: %jd, %jd, %jd\r\n", dp[0].getSum(), dp[1].getSum(), dp[2].getSum() ); break; - case 3: mapdata = dp[channel].getStdDiv(); pc.printf("STD: %f, %f, %f\r\n", dp[0].getStdDiv(), dp[1].getStdDiv(), dp[2].getStdDiv() ); break; - case 4: mapdata = dp[channel].getO1integration(); pc.printf("1ITG: %jd, %jd, %jd\r\n", dp[0].getO1integration(), dp[1].getO1integration(), dp[2].getO1integration() ); break; - case 5: mapdata = dp[channel].getO2integration(); pc.printf("2ITG: %jd, %jd, %jd\r\n", dp[0].getO2integration(), dp[1].getO2integration(), dp[2].getO2integration() ); break; - case 6: mapdata = dp[channel].getO3integration(); pc.printf("3ITG: %jd, %jd, %jd\r\n", dp[0].getO3integration(), dp[1].getO3integration(), dp[2].getO3integration() ); break; - case 7: mapdata = dp[channel].GetO1differ(); pc.printf("1DIF: %jd, %jd, %jd\r\n", dp[0].GetO1differ(), dp[1].GetO1differ(), dp[2].GetO1differ() ); break; - case 8: mapdata = dp[channel].GetO2differ(); pc.printf("2DIF: %jd, %jd, %jd\r\n", dp[0].GetO2differ(), dp[1].GetO2differ(), dp[2].GetO2differ() ); break; - default: break; + case 1: pc.printf("MEAN: %f, %f, %f\r\n", dp[0].getMean(), dp[1].getMean(), dp[2].getMean() ); break; + case 2: pc.printf("SUM: %jd, %jd, %jd\r\n", dp[0].getSum(), dp[1].getSum(), dp[2].getSum() ); break; + case 3: pc.printf("STD: %f, %f, %f\r\n", dp[0].getStdDiv(), dp[1].getStdDiv(), dp[2].getStdDiv() ); break; + case 4: pc.printf("1ITG: %jd, %jd, %jd\r\n", dp[0].getO1integration(), dp[1].getO1integration(), dp[2].getO1integration() ); break; + case 5: pc.printf("2ITG: %jd, %jd, %jd\r\n", dp[0].getO2integration(), dp[1].getO2integration(), dp[2].getO2integration() ); break; + case 6: pc.printf("3ITG: %jd, %jd, %jd\r\n", dp[0].getO3integration(), dp[1].getO3integration(), dp[2].getO3integration() ); break; + case 7: pc.printf("1DIF: %jd, %jd, %jd\r\n", dp[0].GetO1differ(), dp[1].GetO1differ(), dp[2].GetO1differ() ); break; + case 8: pc.printf("2DIF: %jd, %jd, %jd\r\n", dp[0].GetO2differ(), dp[1].GetO2differ(), dp[2].GetO2differ() ); break; + case 9: pc.printf("2DIF: %jd, %jd, %jd\r\n", dp[0].getabsolute(), dp[1].GetO2differ(), dp[2].GetO2differ() ); break; + default: break; + } + } + + AO1=DAC_Mapper1.getOutput(readings[channel]); + + if (mapout) + { + //double mapdata; + switch (datamode) + { + case 0: mapdata = readings[channel]; break; + case 1: mapdata = dp[channel].getMean(); break; + case 2: mapdata = dp[channel].getSum(); break; + case 3: mapdata = dp[channel].getStdDiv(); break; + case 4: mapdata = dp[channel].getO1integration(); break; + case 5: mapdata = dp[channel].getO2integration(); break; + case 6: mapdata = dp[channel].getO3integration(); break; + case 7: mapdata = dp[channel].GetO1differ(); break; + case 8: mapdata = dp[channel].GetO2differ(); break; + case 9: mapdata = dp[channel].getabsolute(); break; + default: mapdata = 0; break; + } + // pc.printf("MAPPING OUTPUT: %jd\r\n", DAC_Mapper2.getOutput(mapdata) ); + + AO2=DAC_Mapper2.getOutput(mapdata); + } - } - if (mapout) - { - // Set data the DAC - DAC_Mapper.getOutput(mapdata); - } - wait(1); + else + { + AO2=DAC_Mapper2.getOutput(0); + } + } - + } - }