This program is communication with MMA7660 and LM75B. First receive sensor value of MMA7660 and LM75B. And MMA7660 value is control LED 2, 3, 4. LM75B is send another device.

Dependencies:   C12832 LM75B MMA7660 mbed-rtos mbed

Committer:
akinansori
Date:
Mon Jan 19 07:58:20 2015 +0000
Revision:
0:c49d67f5d839
Receive sensor value of MMA7660 and LM75B.
; And sensor value of MMA7660 is turn on LED 2,3,4 by specific value.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akinansori 0:c49d67f5d839 1 #include "mbed.h"
akinansori 0:c49d67f5d839 2 #include "LM75B.h"
akinansori 0:c49d67f5d839 3 #include "C12832.h"
akinansori 0:c49d67f5d839 4 #include "rtos.h"
akinansori 0:c49d67f5d839 5 #include "MMA7660.h"
akinansori 0:c49d67f5d839 6
akinansori 0:c49d67f5d839 7 //3-Axis Sensor port setting
akinansori 0:c49d67f5d839 8 MMA7660 MMA(p28, p27);
akinansori 0:c49d67f5d839 9 //Temperature Sensor port setting
akinansori 0:c49d67f5d839 10 LM75B sensor(p28,p27);
akinansori 0:c49d67f5d839 11 //LED setting connecting 3-Axis Sensor
akinansori 0:c49d67f5d839 12 DigitalOut MMA_X(LED2);
akinansori 0:c49d67f5d839 13 DigitalOut MMA_Y(LED3);
akinansori 0:c49d67f5d839 14 DigitalOut MMA_Z(LED4);
akinansori 0:c49d67f5d839 15 //Serial port setting with PC
akinansori 0:c49d67f5d839 16 Serial pc(USBTX,USBRX);
akinansori 0:c49d67f5d839 17 //LCD port setting
akinansori 0:c49d67f5d839 18 C12832 lcd(p5, p7, p6, p8, p11);
akinansori 0:c49d67f5d839 19 //LED setting connecting Temperature Sensor
akinansori 0:c49d67f5d839 20 DigitalOut led1(LED1);
akinansori 0:c49d67f5d839 21 //CAN port setting
akinansori 0:c49d67f5d839 22 CAN can1(p9, p10);
akinansori 0:c49d67f5d839 23
akinansori 0:c49d67f5d839 24
akinansori 0:c49d67f5d839 25
akinansori 0:c49d67f5d839 26 char counter, counter1, enter;
akinansori 0:c49d67f5d839 27 float temp;
akinansori 0:c49d67f5d839 28 float sensor_1[3];
akinansori 0:c49d67f5d839 29 //X-Axis thread
akinansori 0:c49d67f5d839 30 void led1_thread(void const *args){
akinansori 0:c49d67f5d839 31
akinansori 0:c49d67f5d839 32 MMA_X = 0;
akinansori 0:c49d67f5d839 33 while(1){
akinansori 0:c49d67f5d839 34 sensor_1[0]=(float)MMA.x();
akinansori 0:c49d67f5d839 35 if(sensor_1[0]>0.5) {
akinansori 0:c49d67f5d839 36 MMA_X = 1;
akinansori 0:c49d67f5d839 37 wait(1);
akinansori 0:c49d67f5d839 38 MMA_X = 0;
akinansori 0:c49d67f5d839 39 }
akinansori 0:c49d67f5d839 40 Thread::wait(100);
akinansori 0:c49d67f5d839 41 }
akinansori 0:c49d67f5d839 42 }
akinansori 0:c49d67f5d839 43 //Y-Axis thread
akinansori 0:c49d67f5d839 44 void led2_thread(void const *args){
akinansori 0:c49d67f5d839 45
akinansori 0:c49d67f5d839 46 MMA_Y = 0;
akinansori 0:c49d67f5d839 47 while(1){
akinansori 0:c49d67f5d839 48 sensor_1[1]=(float)MMA.y();
akinansori 0:c49d67f5d839 49 if(sensor_1[1]>0.5) {
akinansori 0:c49d67f5d839 50 MMA_Y = 1;
akinansori 0:c49d67f5d839 51 wait(1);
akinansori 0:c49d67f5d839 52 MMA_Y = 0;
akinansori 0:c49d67f5d839 53 }
akinansori 0:c49d67f5d839 54 Thread::wait(100);
akinansori 0:c49d67f5d839 55 }
akinansori 0:c49d67f5d839 56 }
akinansori 0:c49d67f5d839 57 //Z-Axis thread
akinansori 0:c49d67f5d839 58 void led3_thread(void const *args){
akinansori 0:c49d67f5d839 59
akinansori 0:c49d67f5d839 60 MMA_Z = 0;
akinansori 0:c49d67f5d839 61 while(1){
akinansori 0:c49d67f5d839 62 sensor_1[2]=(float)MMA.z();
akinansori 0:c49d67f5d839 63 if(sensor_1[2]<0.5) {
akinansori 0:c49d67f5d839 64 MMA_Z = 1;
akinansori 0:c49d67f5d839 65 wait(1);
akinansori 0:c49d67f5d839 66 MMA_Z = 0;
akinansori 0:c49d67f5d839 67 }
akinansori 0:c49d67f5d839 68 Thread::wait(100);
akinansori 0:c49d67f5d839 69 }
akinansori 0:c49d67f5d839 70 }
akinansori 0:c49d67f5d839 71 //Float to Integer
akinansori 0:c49d67f5d839 72 int getInteger(float n)
akinansori 0:c49d67f5d839 73 {
akinansori 0:c49d67f5d839 74 return (int)n;
akinansori 0:c49d67f5d839 75 }
akinansori 0:c49d67f5d839 76 //Getting Fracting of Float
akinansori 0:c49d67f5d839 77 int getFraction(float n)
akinansori 0:c49d67f5d839 78 {
akinansori 0:c49d67f5d839 79 float a;
akinansori 0:c49d67f5d839 80 a = n-getInteger(n);
akinansori 0:c49d67f5d839 81 a = a*100;
akinansori 0:c49d67f5d839 82 return (int)a;
akinansori 0:c49d67f5d839 83 }
akinansori 0:c49d67f5d839 84
akinansori 0:c49d67f5d839 85 int main() {
akinansori 0:c49d67f5d839 86 //Declare thread of 3-Axis
akinansori 0:c49d67f5d839 87 Thread thread1(led1_thread);
akinansori 0:c49d67f5d839 88 Thread thread2(led2_thread);
akinansori 0:c49d67f5d839 89 Thread thread3(led3_thread);
akinansori 0:c49d67f5d839 90 //Check connecting of 3-Axis
akinansori 0:c49d67f5d839 91 if (MMA.testConnection()) printf("Sensor connect \n");
akinansori 0:c49d67f5d839 92 while(1){
akinansori 0:c49d67f5d839 93 temp=sensor.read();
akinansori 0:c49d67f5d839 94 counter=getInteger(temp);
akinansori 0:c49d67f5d839 95 counter1=getFraction(temp);
akinansori 0:c49d67f5d839 96 enter='1';
akinansori 0:c49d67f5d839 97 lcd.cls();
akinansori 0:c49d67f5d839 98 lcd.locate(0,3);
akinansori 0:c49d67f5d839 99 lcd.printf("Temp = %.3f\n", temp);
akinansori 0:c49d67f5d839 100
akinansori 0:c49d67f5d839 101 can1.write(CANMessage(1337, &counter, 1));
akinansori 0:c49d67f5d839 102 wait(0.2);
akinansori 0:c49d67f5d839 103
akinansori 0:c49d67f5d839 104 can1.write(CANMessage(1337, &counter1, 1));
akinansori 0:c49d67f5d839 105 wait(0.2);
akinansori 0:c49d67f5d839 106
akinansori 0:c49d67f5d839 107 can1.write(CANMessage(1337, &enter, 1));
akinansori 0:c49d67f5d839 108
akinansori 0:c49d67f5d839 109 printf("Message sent : %d.%d \n", counter, counter1);
akinansori 0:c49d67f5d839 110 led1 = !led1;
akinansori 0:c49d67f5d839 111 wait(0.2);
akinansori 0:c49d67f5d839 112 }
akinansori 0:c49d67f5d839 113
akinansori 0:c49d67f5d839 114 }