Sensing Data Error Correction

Dependencies:   C12832 LM75B MMA7660 USBHost USBHost_CAN_communication mbed

Fork of USBHost_CAN_communication by nansol Park

Revision:
9:4b959b2974fd
Parent:
4:f8a5c8aa895a
Child:
10:e9fa6f47194f
--- a/main.cpp	Thu Mar 14 14:23:42 2013 +0000
+++ b/main.cpp	Tue Jan 20 03:04:50 2015 +0000
@@ -1,12 +1,36 @@
 #include "mbed.h"
+#include "LM75B.h"
+#include "C12832.h"
+#include "rtos.h"
+#include "MMA7660.h"
 #include "USBHostMSD.h"
 
-DigitalOut led(LED1);
+//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");
-    int i = 0;
     
     while(1) {
         
@@ -19,18 +43,23 @@
         // 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/test1.txt", "a");
+            FILE * fp = fopen("/usb/temp.txt", "a");
         
             if (fp != NULL) {
-                fprintf(fp, "Hello fun SD Card World: %d!\r\n", i++);
+                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(500);
+            Thread::wait(1500);
         
             // if device disconnected, try to connect again
             if (!msd.connected())
@@ -39,12 +68,90 @@
             
     }
 }
-
+//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);
-    while(1) {
-        led=!led;
-        Thread::wait(500);
+    //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);
     }
-}
\ No newline at end of file
+
+}