jyo tetsu
/
temp
tokuni
main.cpp@2:06322e6e403b, 2015-01-22 (annotated)
- Committer:
- changzhe8387
- Date:
- Thu Jan 22 13:43:33 2015 +0000
- Revision:
- 2:06322e6e403b
- Parent:
- 1:b647fdc5a465
; ; ; ;
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:06322e6e403b | 97 | } |
changzhe8387 | 2:06322e6e403b | 98 | } |
changzhe8387 | 1:b647fdc5a465 | 99 | } |