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

Committer:
akinansori
Date:
Tue Feb 17 05:34:01 2015 +0000
Revision:
10:e9fa6f47194f
Parent:
9:4b959b2974fd
sensing data error co

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 0:0d68fe822228 1 #include "mbed.h"
akinansori 9:4b959b2974fd 2 #include "C12832.h"
akinansori 9:4b959b2974fd 3 #include "rtos.h"
akinansori 9:4b959b2974fd 4 #include "MMA7660.h"
samux 0:0d68fe822228 5 #include "USBHostMSD.h"
samux 0:0d68fe822228 6
akinansori 10:e9fa6f47194f 7
akinansori 9:4b959b2974fd 8 //3-Axis Sensor port setting
akinansori 9:4b959b2974fd 9 MMA7660 MMA(p28, p27);
akinansori 10:e9fa6f47194f 10
akinansori 9:4b959b2974fd 11 //Serial port setting with PC
akinansori 9:4b959b2974fd 12 Serial pc(USBTX,USBRX);
akinansori 9:4b959b2974fd 13 //LCD port setting
akinansori 9:4b959b2974fd 14 C12832 lcd(p5, p7, p6, p8, p11);
akinansori 9:4b959b2974fd 15 //LED setting connecting Temperature Sensor
akinansori 9:4b959b2974fd 16 DigitalOut led1(LED1);
akinansori 10:e9fa6f47194f 17 DigitalOut led2(LED2);
akinansori 9:4b959b2974fd 18
akinansori 10:e9fa6f47194f 19 float temper[3],abs1[1000];
akinansori 10:e9fa6f47194f 20 long int counter, counter1=0;
akinansori 10:e9fa6f47194f 21 int i;
akinansori 9:4b959b2974fd 22
samux 0:0d68fe822228 23
samux 0:0d68fe822228 24 void msd_task(void const *) {
samux 0:0d68fe822228 25
samux 0:0d68fe822228 26 USBHostMSD msd("usb");
akinansori 10:e9fa6f47194f 27 float comp1[10] = {1.453, 0.141, -0.281, 0.047, -0.375, 1.453, 1.453, 0.797, 0.750, 0.797};
akinansori 10:e9fa6f47194f 28 float comp2[10] = {1.453, 0.844, 0.234, 0.188, -0.281, 0.656, 1.453, 1.031, 0.750, 0.703};
akinansori 10:e9fa6f47194f 29 float comp3[10] = {1.453, 1.453, -0.375, 0.188, 0.141, -0.469, 1.453, 1.453, 0.750, 0.844};
akinansori 10:e9fa6f47194f 30 float comp4[10] = {1.453, 1.406, -0.141, 0.141, 0.469, -0.047, -0.234, 1.453, 1.219, 0.891};
akinansori 10:e9fa6f47194f 31 while(1){
samux 0:0d68fe822228 32
samux 1:473f339c54c1 33 // try to connect a MSD device
samux 1:473f339c54c1 34 while(!msd.connect()) {
akinansori 10:e9fa6f47194f 35 Thread::wait(1000);
samux 1:473f339c54c1 36 }
samux 1:473f339c54c1 37
akinansori 10:e9fa6f47194f 38 FILE * fp = fopen("/usb/temp.csv", "w");
akinansori 10:e9fa6f47194f 39
samux 4:f8a5c8aa895a 40 // in a loop, append a file
samux 4:f8a5c8aa895a 41 // if the device is disconnected, we try to connect it again
akinansori 10:e9fa6f47194f 42 for(i=0; i<1000; i++) {
samux 1:473f339c54c1 43
akinansori 10:e9fa6f47194f 44 counter++;
akinansori 10:e9fa6f47194f 45 //temper[2]=(float)MMA.z();
akinansori 9:4b959b2974fd 46
samux 4:f8a5c8aa895a 47 // append a file
akinansori 10:e9fa6f47194f 48 FILE * fp = fopen("/usb/temp.csv", "a");
samux 1:473f339c54c1 49
samux 1:473f339c54c1 50 if (fp != NULL) {
akinansori 10:e9fa6f47194f 51 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)){
akinansori 10:e9fa6f47194f 52 abs1[i]=(float)MMA.z()-comp1[i];
akinansori 10:e9fa6f47194f 53 }
akinansori 10:e9fa6f47194f 54 else{
akinansori 10:e9fa6f47194f 55 abs1[i]=(float)MMA.z()-0.985;
akinansori 10:e9fa6f47194f 56 }
akinansori 10:e9fa6f47194f 57 if((abs1[i]<0.215)&&((abs1[i-1]+abs1[i-2])/2)>-0.285){
akinansori 10:e9fa6f47194f 58 fprintf(fp, "%ld,%.3f\n", counter, abs1[i]);
akinansori 10:e9fa6f47194f 59 fclose(fp);
akinansori 10:e9fa6f47194f 60 }
akinansori 10:e9fa6f47194f 61 else {
akinansori 10:e9fa6f47194f 62 if((((abs1[i-1]+abs1[i-2]+abs1[i-3])/3)>-0.235)||(abs1[i-1]>-0.085)){
akinansori 10:e9fa6f47194f 63 fprintf(fp, "%ld,%.3f\n", counter, abs1[i]);
akinansori 10:e9fa6f47194f 64 fclose(fp);
akinansori 10:e9fa6f47194f 65 }
akinansori 10:e9fa6f47194f 66 else{
akinansori 10:e9fa6f47194f 67 led2=!led2;
akinansori 10:e9fa6f47194f 68 counter1++;
akinansori 10:e9fa6f47194f 69 fprintf(fp, "%ld,%.3f,%ld\n", counter, abs1[i],counter1);
akinansori 10:e9fa6f47194f 70 fclose(fp);
akinansori 10:e9fa6f47194f 71 }
akinansori 10:e9fa6f47194f 72 }
samux 1:473f339c54c1 73 } else {
samux 1:473f339c54c1 74 printf("FILE == NULL\r\n");
samux 1:473f339c54c1 75 }
akinansori 10:e9fa6f47194f 76 if(i==999){
akinansori 10:e9fa6f47194f 77 i=0;
akinansori 10:e9fa6f47194f 78 }
samux 1:473f339c54c1 79
akinansori 10:e9fa6f47194f 80 Thread::wait(100);
samux 0:0d68fe822228 81
samux 1:473f339c54c1 82 // if device disconnected, try to connect again
samux 1:473f339c54c1 83 if (!msd.connected())
samux 1:473f339c54c1 84 break;
samux 0:0d68fe822228 85 }
samux 0:0d68fe822228 86 }
samux 0:0d68fe822228 87 }
samux 0:0d68fe822228 88
samux 0:0d68fe822228 89 int main() {
samux 2:3e3df7a79050 90 Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
akinansori 9:4b959b2974fd 91 //Check connecting of 3-Axis
akinansori 9:4b959b2974fd 92 if (MMA.testConnection()) printf("Sensor connect \n");
akinansori 9:4b959b2974fd 93 while(1){
akinansori 9:4b959b2974fd 94 lcd.cls();
akinansori 9:4b959b2974fd 95 lcd.locate(0,3);
akinansori 10:e9fa6f47194f 96 lcd.printf("counter = %ld \n", counter);
akinansori 9:4b959b2974fd 97
akinansori 9:4b959b2974fd 98 led1 = !led1;
akinansori 10:e9fa6f47194f 99 wait(0.1);
samux 0:0d68fe822228 100 }
akinansori 9:4b959b2974fd 101
akinansori 9:4b959b2974fd 102 }