![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
tokuni
main.cpp@0:c168443703fb, 2014-12-23 (annotated)
- Committer:
- changzhe8387
- Date:
- Tue Dec 23 06:16:39 2014 +0000
- Revision:
- 0:c168443703fb
- Child:
- 1:b647fdc5a465
servo
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 | 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 | } |