tokuni

Dependencies:   mbed

Committer:
changzhe8387
Date:
Tue Dec 23 06:16:39 2014 +0000
Revision:
0:c168443703fb
Child:
1:b647fdc5a465
servo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
changzhe8387 0:c168443703fb 1 #include "mbed.h"
changzhe8387 0:c168443703fb 2 Serial pc(USBTX, USBRX);
changzhe8387 0:c168443703fb 3 AnalogIn tempPin1(p15);
changzhe8387 0:c168443703fb 4 AnalogIn tempPin2(p16);
changzhe8387 0:c168443703fb 5 AnalogIn tempPin3(p17);
changzhe8387 0:c168443703fb 6 AnalogIn tempPin4(p18);
changzhe8387 0:c168443703fb 7 PwmOut pwm1(p21);
changzhe8387 0:c168443703fb 8 PwmOut pwm2(p22);
changzhe8387 0:c168443703fb 9 #define start 500
changzhe8387 0:c168443703fb 10 #define end 2000
changzhe8387 0:c168443703fb 11 float tempTotal1;
changzhe8387 0:c168443703fb 12 float tempTotal2;
changzhe8387 0:c168443703fb 13 float tempTotal3;
changzhe8387 0:c168443703fb 14 float tempTotal4;
changzhe8387 0:c168443703fb 15 uint32_t tempDiv1;
changzhe8387 0:c168443703fb 16 uint32_t tempDiv2;
changzhe8387 0:c168443703fb 17 uint32_t tempDiv3;
changzhe8387 0:c168443703fb 18 uint32_t tempDiv4;
changzhe8387 0:c168443703fb 19 #define MAX_TEMP_AVG 10
changzhe8387 0:c168443703fb 20 void sampleTemp();
changzhe8387 0:c168443703fb 21 void sampleTemps();
changzhe8387 0:c168443703fb 22 void resetTempSamples();
changzhe8387 0:c168443703fb 23 float getAvgTemp();
changzhe8387 0:c168443703fb 24
changzhe8387 0:c168443703fb 25 void sampleTemp()
changzhe8387 0:c168443703fb 26 {
changzhe8387 0:c168443703fb 27 tempTotal1 += tempPin1;
changzhe8387 0:c168443703fb 28 tempDiv1++;
changzhe8387 0:c168443703fb 29 tempTotal2 += tempPin2;
changzhe8387 0:c168443703fb 30 tempDiv2++;
changzhe8387 0:c168443703fb 31 tempTotal3 += tempPin3;
changzhe8387 0:c168443703fb 32 tempDiv3++;
changzhe8387 0:c168443703fb 33 tempTotal4 += tempPin4;
changzhe8387 0:c168443703fb 34 tempDiv4++;
changzhe8387 0:c168443703fb 35 }
changzhe8387 0:c168443703fb 36 void sampleTemps()
changzhe8387 0:c168443703fb 37 {
changzhe8387 0:c168443703fb 38 for(int i=0;i<MAX_TEMP_AVG;i++) {
changzhe8387 0:c168443703fb 39 sampleTemp();
changzhe8387 0:c168443703fb 40 wait(0.1);
changzhe8387 0:c168443703fb 41 }
changzhe8387 0:c168443703fb 42 }
changzhe8387 0:c168443703fb 43 void resetTempSamples()
changzhe8387 0:c168443703fb 44 {
changzhe8387 0:c168443703fb 45 tempTotal1 = 0.0;
changzhe8387 0:c168443703fb 46 tempDiv1 = 0;
changzhe8387 0:c168443703fb 47 tempTotal2 = 0.0;
changzhe8387 0:c168443703fb 48 tempDiv2 = 0;
changzhe8387 0:c168443703fb 49 tempTotal3 = 0.0;
changzhe8387 0:c168443703fb 50 tempDiv3 = 0;
changzhe8387 0:c168443703fb 51 tempTotal4 = 0.0;
changzhe8387 0:c168443703fb 52 tempDiv4 = 0;
changzhe8387 0:c168443703fb 53 }
changzhe8387 0:c168443703fb 54
changzhe8387 0:c168443703fb 55 float getAvgTemp1()
changzhe8387 0:c168443703fb 56 {
changzhe8387 0:c168443703fb 57 resetTempSamples();
changzhe8387 0:c168443703fb 58 sampleTemps();
changzhe8387 0:c168443703fb 59 float tempAvg1 = (((tempTotal1)*3300/(float)tempDiv1)-400.0)/19.5;
changzhe8387 0:c168443703fb 60 return tempAvg1;
changzhe8387 0:c168443703fb 61 }
changzhe8387 0:c168443703fb 62 float getAvgTemp2()
changzhe8387 0:c168443703fb 63 {
changzhe8387 0:c168443703fb 64 resetTempSamples();
changzhe8387 0:c168443703fb 65 sampleTemps();
changzhe8387 0:c168443703fb 66 float tempAvg2 = (((tempTotal2)*3300/(float)tempDiv2)-400.0)/19.5;
changzhe8387 0:c168443703fb 67 return tempAvg2;
changzhe8387 0:c168443703fb 68 }
changzhe8387 0:c168443703fb 69 float getAvgTemp3()
changzhe8387 0:c168443703fb 70 {
changzhe8387 0:c168443703fb 71 resetTempSamples();
changzhe8387 0:c168443703fb 72 sampleTemps();
changzhe8387 0:c168443703fb 73 float tempAvg3 = (((tempTotal3)*3300/(float)tempDiv3)-400.0)/19.5;
changzhe8387 0:c168443703fb 74 return tempAvg3;
changzhe8387 0:c168443703fb 75 }
changzhe8387 0:c168443703fb 76 float getAvgTemp4()
changzhe8387 0:c168443703fb 77 {
changzhe8387 0:c168443703fb 78 resetTempSamples();
changzhe8387 0:c168443703fb 79 sampleTemps();
changzhe8387 0:c168443703fb 80 float tempAvg4 = (((tempTotal4)*3300/(float)tempDiv4)-400.0)/19.5;
changzhe8387 0:c168443703fb 81 return tempAvg4;
changzhe8387 0:c168443703fb 82 }
changzhe8387 0:c168443703fb 83 int main() {
changzhe8387 0:c168443703fb 84
changzhe8387 0:c168443703fb 85 tempDiv1 = 0;
changzhe8387 0:c168443703fb 86 tempDiv2 = 0;
changzhe8387 0:c168443703fb 87 tempDiv3 = 0;
changzhe8387 0:c168443703fb 88 tempDiv4 = 0;
changzhe8387 0:c168443703fb 89 int a,b;
changzhe8387 0:c168443703fb 90 pc.printf("MBED ready..\r\n");
changzhe8387 0:c168443703fb 91 sampleTemps();
changzhe8387 0:c168443703fb 92 while(1){
changzhe8387 0:c168443703fb 93 sampleTemp();
changzhe8387 0:c168443703fb 94 float k=getAvgTemp1()-getAvgTemp2();
changzhe8387 0:c168443703fb 95 float i=getAvgTemp3()-getAvgTemp4();
changzhe8387 0:c168443703fb 96 pc.printf("Temp1:%f\nTemp2:%f\n",getAvgTemp1(),getAvgTemp2());
changzhe8387 0:c168443703fb 97 pc.printf("Temp3:%f\nTemp4:%f\n",getAvgTemp3(),getAvgTemp4());
changzhe8387 0:c168443703fb 98 a = k * 2;
changzhe8387 0:c168443703fb 99 b = i * 2;
changzhe8387 0:c168443703fb 100 {
changzhe8387 0:c168443703fb 101 for(int p = start; p < end; p += a)
changzhe8387 0:c168443703fb 102 pwm1.pulsewidth_us(p);
changzhe8387 0:c168443703fb 103 wait_ms(10);
changzhe8387 0:c168443703fb 104 }
changzhe8387 0:c168443703fb 105 {
changzhe8387 0:c168443703fb 106 for(int q = start; q < end; q += b)
changzhe8387 0:c168443703fb 107 pwm2.pulsewidth_us(q);
changzhe8387 0:c168443703fb 108 wait_ms(10);
changzhe8387 0:c168443703fb 109 }
changzhe8387 0:c168443703fb 110 }
changzhe8387 0:c168443703fb 111 }