Sending MMA7660 & LM75B sensor value to the USB, another device by CAN. And we can view temperature of LM75B by C12832 LCD.

Dependencies:   C12832 LM75B MMA7660 USBHost mbed USBHost_CAN_communication

Dependents:   USBHost_CAN_communication USBHost_CAN_communication_v1

Fork of USBHostMSD_HelloWorld by Samuel Mokrani

Files at this revision

API Documentation at this revision

Comitter:
akinansori
Date:
Tue Jan 20 03:04:50 2015 +0000
Parent:
8:758190c6c455
Child:
10:e9fa6f47194f
Commit message:
Sending MMA7660 & LM75B sensor value to USB, another device by CAN.
; And We can view temperature of LM75B by C12832 LCD.

Changed in this revision

C12832.lib Show annotated file Show diff for this revision Revisions of this file
LM75B.lib Show annotated file Show diff for this revision Revisions of this file
MMA7660.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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Tue Jan 20 03:04:50 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/chris/code/C12832/#7de323fa46fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LM75B.lib	Tue Jan 20 03:04:50 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/chris/code/LM75B/#6a70c9303bbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MMA7660.lib	Tue Jan 20 03:04:50 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/Sissors/code/MMA7660/#36a163511e34
--- 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
+
+}