Sensing Data Error Correction
Dependencies: C12832 LM75B MMA7660 USBHost USBHost_CAN_communication mbed
Fork of USBHost_CAN_communication by
Revision 10:e9fa6f47194f, committed 2015-02-17
- Comitter:
- akinansori
- Date:
- Tue Feb 17 05:34:01 2015 +0000
- Parent:
- 9:4b959b2974fd
- Commit message:
- sensing data error co
Changed in this revision
USBHost_CAN_communication.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 4b959b2974fd -r e9fa6f47194f USBHost_CAN_communication.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/USBHost_CAN_communication.lib Tue Feb 17 05:34:01 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/akinansori/code/USBHost_CAN_communication/#4b959b2974fd
diff -r 4b959b2974fd -r e9fa6f47194f main.cpp --- a/main.cpp Tue Jan 20 03:04:50 2015 +0000 +++ b/main.cpp Tue Feb 17 05:34:01 2015 +0000 @@ -1,157 +1,102 @@ #include "mbed.h" -#include "LM75B.h" #include "C12832.h" #include "rtos.h" #include "MMA7660.h" #include "USBHostMSD.h" + //3-Axis Sensor port setting MMA7660 MMA(p28, p27); -//Temperature Sensor port setting -LM75B sensor(p28,p27); -//LED setting connecting 3-Axis Sensor -DigitalOut MMA_X(LED2); -DigitalOut MMA_Y(LED3); -DigitalOut MMA_Z(LED4); + //Serial port setting with PC Serial pc(USBTX,USBRX); //LCD port setting C12832 lcd(p5, p7, p6, p8, p11); //LED setting connecting Temperature Sensor DigitalOut led1(LED1); -//CAN port setting -CAN can1(p9, p10); - +DigitalOut led2(LED2); +float temper[3],abs1[1000]; +long int counter, counter1=0; +int i; -char counter, counter1, enter; -float temp; -float sensor_1[3],temper[4]; void msd_task(void const *) { USBHostMSD msd("usb"); - - while(1) { + float comp1[10] = {1.453, 0.141, -0.281, 0.047, -0.375, 1.453, 1.453, 0.797, 0.750, 0.797}; + float comp2[10] = {1.453, 0.844, 0.234, 0.188, -0.281, 0.656, 1.453, 1.031, 0.750, 0.703}; + float comp3[10] = {1.453, 1.453, -0.375, 0.188, 0.141, -0.469, 1.453, 1.453, 0.750, 0.844}; + float comp4[10] = {1.453, 1.406, -0.141, 0.141, 0.469, -0.047, -0.234, 1.453, 1.219, 0.891}; + while(1){ // try to connect a MSD device while(!msd.connect()) { - Thread::wait(500); + Thread::wait(1000); } + FILE * fp = fopen("/usb/temp.csv", "w"); + // in a loop, append a file // if the device is disconnected, we try to connect it again - while(1) { + for(i=0; i<1000; i++) { - temper[0]=sensor.read(); - temper[1]=(float)MMA.x(); - temper[2]=(float)MMA.y(); - temper[3]=(float)MMA.z(); + counter++; + //temper[2]=(float)MMA.z(); // append a file - FILE * fp = fopen("/usb/temp.txt", "a"); + FILE * fp = fopen("/usb/temp.csv", "a"); if (fp != NULL) { - fprintf(fp, "Temper : %.3f x : %.3f y : %.3f z:%.3f \r\n", temper[0], temper[1], temper[2], temper[3]); - printf("Goodbye World!\r\n"); - fclose(fp); + if((i<52&&i>=42)||(i<113&&i>=103)||(i<151&&i>=141)||(i<214&&i>=204)||(i<287&&i>=277)||(i<314&&i>=304)||(i<388&&i>=378)||(i<417&&i>=407)||(i<485&&i>=475)||(i<553&&i>=543)){ + abs1[i]=(float)MMA.z()-comp1[i]; + } + else{ + abs1[i]=(float)MMA.z()-0.985; + } + if((abs1[i]<0.215)&&((abs1[i-1]+abs1[i-2])/2)>-0.285){ + fprintf(fp, "%ld,%.3f\n", counter, abs1[i]); + fclose(fp); + } + else { + if((((abs1[i-1]+abs1[i-2]+abs1[i-3])/3)>-0.235)||(abs1[i-1]>-0.085)){ + fprintf(fp, "%ld,%.3f\n", counter, abs1[i]); + fclose(fp); + } + else{ + led2=!led2; + counter1++; + fprintf(fp, "%ld,%.3f,%ld\n", counter, abs1[i],counter1); + fclose(fp); + } + } } else { printf("FILE == NULL\r\n"); } + if(i==999){ + i=0; + } - Thread::wait(1500); + Thread::wait(100); // if device disconnected, try to connect again if (!msd.connected()) break; } - } } -//X-Axis thread -void led1_thread(void const *args){ - - MMA_X = 0; - while(1){ - sensor_1[0]=(float)MMA.x(); - if(sensor_1[0]>0.3) { - MMA_X = 1; - wait(1); - MMA_X = 0; - } - Thread::wait(100); - } -} -//Y-Axis thread -void led2_thread(void const *args){ - - MMA_Y = 0; - while(1){ - sensor_1[1]=(float)MMA.y(); - if(sensor_1[1]>0.5) { - MMA_Y = 1; - wait(1); - MMA_Y = 0; - } - Thread::wait(100); - } -} -//Z-Axis thread -void led3_thread(void const *args){ - - MMA_Z = 0; - while(1){ - sensor_1[2]=(float)MMA.z(); - if(sensor_1[2]<0.5) { - MMA_Z = 1; - wait(1); - MMA_Z = 0; - } - Thread::wait(100); - } -} -//Float to Integer -int getInteger(float n) -{ - return (int)n; -} -//Getting Fracting of Float -int getFraction(float n) -{ - float a; - a = n-getInteger(n); - a = a*100; - return (int)a; -} int main() { Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4); - //Declare thread of 3-Axis - Thread thread1(led1_thread); - Thread thread2(led2_thread); - Thread thread3(led3_thread); //Check connecting of 3-Axis if (MMA.testConnection()) printf("Sensor connect \n"); while(1){ - temp=sensor.read(); - counter=getInteger(temp); - counter1=getFraction(temp); - enter='1'; lcd.cls(); lcd.locate(0,3); - lcd.printf("Temp = %.3f\n", temp); - - can1.write(CANMessage(1337, &counter, 1)); - wait(0.2); + lcd.printf("counter = %ld \n", counter); - can1.write(CANMessage(1337, &counter1, 1)); - wait(0.2); - - can1.write(CANMessage(1337, &enter, 1)); - - printf("Message sent : %d.%d \n", counter, counter1); led1 = !led1; - wait(0.2); + wait(0.1); } }