Sensing Data Error Correction
Dependencies: C12832 LM75B MMA7660 USBHost USBHost_CAN_communication mbed
Fork of USBHost_CAN_communication by
main.cpp
- Committer:
- akinansori
- Date:
- 2015-01-20
- Revision:
- 9:4b959b2974fd
- Parent:
- 4:f8a5c8aa895a
- Child:
- 10:e9fa6f47194f
File content as of revision 9:4b959b2974fd:
#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); char counter, counter1, enter; float temp; float sensor_1[3],temper[4]; void msd_task(void const *) { USBHostMSD msd("usb"); while(1) { // try to connect a MSD device while(!msd.connect()) { Thread::wait(500); } // in a loop, append a file // if the device is disconnected, we try to connect it again while(1) { temper[0]=sensor.read(); temper[1]=(float)MMA.x(); temper[2]=(float)MMA.y(); temper[3]=(float)MMA.z(); // append a file FILE * fp = fopen("/usb/temp.txt", "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); } else { printf("FILE == NULL\r\n"); } Thread::wait(1500); // 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); 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); } }