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
main.cpp@10:e9fa6f47194f, 2015-02-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |