tokuni

Dependencies:   mbed

Committer:
changzhe8387
Date:
Thu Jan 22 13:39:46 2015 +0000
Revision:
1:b647fdc5a465
Parent:
0:c168443703fb
Child:
2:06322e6e403b
temp

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 PwmOut pwm1(p21);
changzhe8387 0:c168443703fb 7 PwmOut pwm2(p22);
changzhe8387 0:c168443703fb 8 float tempTotal1;
changzhe8387 0:c168443703fb 9 float tempTotal2;
changzhe8387 0:c168443703fb 10 float tempTotal3;
changzhe8387 0:c168443703fb 11 uint32_t tempDiv1;
changzhe8387 0:c168443703fb 12 uint32_t tempDiv2;
changzhe8387 0:c168443703fb 13 uint32_t tempDiv3;
changzhe8387 0:c168443703fb 14 #define MAX_TEMP_AVG 10
changzhe8387 0:c168443703fb 15 void sampleTemp();
changzhe8387 0:c168443703fb 16 void sampleTemps();
changzhe8387 0:c168443703fb 17 void resetTempSamples();
changzhe8387 0:c168443703fb 18 float getAvgTemp();
changzhe8387 0:c168443703fb 19 void sampleTemp()
changzhe8387 0:c168443703fb 20 {
changzhe8387 0:c168443703fb 21 tempTotal1 += tempPin1;
changzhe8387 0:c168443703fb 22 tempDiv1++;
changzhe8387 0:c168443703fb 23 tempTotal2 += tempPin2;
changzhe8387 0:c168443703fb 24 tempDiv2++;
changzhe8387 0:c168443703fb 25 tempTotal3 += tempPin3;
changzhe8387 0:c168443703fb 26 tempDiv3++;
changzhe8387 1:b647fdc5a465 27
changzhe8387 0:c168443703fb 28 }
changzhe8387 0:c168443703fb 29 void sampleTemps()
changzhe8387 0:c168443703fb 30 {
changzhe8387 0:c168443703fb 31 for(int i=0;i<MAX_TEMP_AVG;i++) {
changzhe8387 0:c168443703fb 32 sampleTemp();
changzhe8387 0:c168443703fb 33 wait(0.1);
changzhe8387 0:c168443703fb 34 }
changzhe8387 0:c168443703fb 35 }
changzhe8387 0:c168443703fb 36 void resetTempSamples()
changzhe8387 0:c168443703fb 37 {
changzhe8387 0:c168443703fb 38 tempTotal1 = 0.0;
changzhe8387 0:c168443703fb 39 tempDiv1 = 0;
changzhe8387 0:c168443703fb 40 tempTotal2 = 0.0;
changzhe8387 0:c168443703fb 41 tempDiv2 = 0;
changzhe8387 0:c168443703fb 42 tempTotal3 = 0.0;
changzhe8387 0:c168443703fb 43 tempDiv3 = 0;
changzhe8387 1:b647fdc5a465 44
changzhe8387 0:c168443703fb 45 }
changzhe8387 0:c168443703fb 46
changzhe8387 0:c168443703fb 47 float getAvgTemp1()
changzhe8387 0:c168443703fb 48 {
changzhe8387 0:c168443703fb 49 resetTempSamples();
changzhe8387 0:c168443703fb 50 sampleTemps();
changzhe8387 1:b647fdc5a465 51 float tempAvg1 = ((((tempTotal1)*3300/(float)tempDiv1)-400.0)/19.5);
changzhe8387 0:c168443703fb 52 return tempAvg1;
changzhe8387 0:c168443703fb 53 }
changzhe8387 0:c168443703fb 54 float getAvgTemp2()
changzhe8387 0:c168443703fb 55 {
changzhe8387 0:c168443703fb 56 resetTempSamples();
changzhe8387 0:c168443703fb 57 sampleTemps();
changzhe8387 1:b647fdc5a465 58 float tempAvg2 = (((((tempTotal2)*3300/(float)tempDiv2)-400.0)/19.5)-1);
changzhe8387 0:c168443703fb 59 return tempAvg2;
changzhe8387 0:c168443703fb 60 }
changzhe8387 0:c168443703fb 61 float getAvgTemp3()
changzhe8387 0:c168443703fb 62 {
changzhe8387 0:c168443703fb 63 resetTempSamples();
changzhe8387 0:c168443703fb 64 sampleTemps();
changzhe8387 1:b647fdc5a465 65 float tempAvg3 = (((((tempTotal3)*3300/(float)tempDiv3)-400.0)/19.5));
changzhe8387 0:c168443703fb 66 return tempAvg3;
changzhe8387 0:c168443703fb 67 }
changzhe8387 0:c168443703fb 68 int main() {
changzhe8387 0:c168443703fb 69 tempDiv1 = 0;
changzhe8387 0:c168443703fb 70 tempDiv2 = 0;
changzhe8387 1:b647fdc5a465 71 tempDiv3 = 0;
changzhe8387 0:c168443703fb 72 pc.printf("MBED ready..\r\n");
changzhe8387 1:b647fdc5a465 73 sampleTemps();
changzhe8387 0:c168443703fb 74 while(1){
changzhe8387 0:c168443703fb 75 sampleTemp();
changzhe8387 1:b647fdc5a465 76 pc.printf("T2=%f T1=%f T3=%f\n",getAvgTemp2(),getAvgTemp1(),getAvgTemp3()); // T1,T2,T3
changzhe8387 1:b647fdc5a465 77 if(getAvgTemp1()>getAvgTemp2()||getAvgTemp1()>getAvgTemp3()){
changzhe8387 1:b647fdc5a465 78 wait_ms(4000);
changzhe8387 1:b647fdc5a465 79 }else if(getAvgTemp2()-getAvgTemp1()>0.5||getAvgTemp1()-getAvgTemp3()>0.5){
changzhe8387 1:b647fdc5a465 80 for(int i = 0; i <=200; i++){
changzhe8387 1:b647fdc5a465 81 pwm1.pulsewidth_us(2000-i*5);
changzhe8387 1:b647fdc5a465 82 pwm2.pulsewidth_us(2000-i*5);
changzhe8387 1:b647fdc5a465 83 wait_ms(4000);
changzhe8387 1:b647fdc5a465 84 }
changzhe8387 1:b647fdc5a465 85 }else(getAvgTemp3()>getAvgTemp1()||getAvgTemp1()>getAvgTemp2()){
changzhe8387 1:b647fdc5a465 86 for(int i = 0; i <=200 ; i++){
changzhe8387 1:b647fdc5a465 87 pwm1.pulsewidth_us(1000+i*5); //xia max 2000
changzhe8387 1:b647fdc5a465 88 pwm2.pulsewidth_us(1000+i*5); //shang max 2000
changzhe8387 1:b647fdc5a465 89 wait_ms(4000);
changzhe8387 1:b647fdc5a465 90 }if(i == 200){ //xia shang tong shi 2000
changzhe8387 1:b647fdc5a465 91 for(int i = 0; i <=200; i++){
changzhe8387 1:b647fdc5a465 92 pwm1.pulsewidth_us(2000+i*5); //xia 1500+max1000 = 3000
changzhe8387 1:b647fdc5a465 93 pwm2.pulsewidth_us(2000-i*5); //shang 2000-max1000 = 1000
changzhe8387 1:b647fdc5a465 94 wait_ms(4000);
changzhe8387 1:b647fdc5a465 95 }
changzhe8387 1:b647fdc5a465 96 }
changzhe8387 1:b647fdc5a465 97
changzhe8387 1:b647fdc5a465 98
changzhe8387 1:b647fdc5a465 99 }