![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
v1
Dependencies: PinDetect TextLCD mbed
Fork of SunflowerMach1 by
main.cpp
- Committer:
- mdraganic
- Date:
- 2013-11-09
- Revision:
- 3:bebfc64cefe4
- Parent:
- 2:0bf41ad96558
- Child:
- 4:03b68322905f
File content as of revision 3:bebfc64cefe4:
#include "mbed.h" #include "Motor.h" #define sensorStartTreshold 0.07 #define sensorStopTreshold 0.02 #define calibrateFactorSenzA 1 #define calibrateFactorSenzB 0.97 #define calibrateFactorSenzC 1.06 #define calibrateFactorSenzD 0.9 Serial pc(USBTX, USBRX); AnalogIn ainSensA(p17); AnalogIn ainSensB(p18); AnalogIn ainSensC(p19); AnalogIn ainSensD(p20); float valAzimut = 0; float valElevacija = 0; float SensA, SensB, SensC, SensD; void readValuesForAveraging() { SensA = 0; SensB = 0; SensC = 0; SensD = 0; for (int i = 0; i < 20; i++) { SensA += ainSensA; SensB += ainSensB; SensC += ainSensC; SensD += ainSensD; } SensA /= 20; SensB /= 20; SensC /= 20; SensD /= 20; SensA *= calibrateFactorSenzA; SensB *= calibrateFactorSenzB; SensC *= calibrateFactorSenzC; SensD *= calibrateFactorSenzD; valAzimut = (SensA + SensB) - (SensC + SensD); valElevacija = (SensB + SensC) - (SensA + SensD); // pc.printf("az:%6.3f el:%6.3f :: A:%.3f B:%.3f C:%.3f D:%.3f \n", // valAzimut, valElevacija, SensA, SensB, SensC, SensD); pc.printf("az:%6.3f el:%6.3f \n", valAzimut, valElevacija); } int main() { Motor *motorAz = new Motor(p25, p26, p24); Motor *motorEl = new Motor(p22, p21, p23); while(1) { readValuesForAveraging(); bool someWrokDone = false; // ----- azimut ----- if(!(*motorAz).isMoving() && (abs(valAzimut) > sensorStartTreshold)) { if(valAzimut > 0) (*motorAz).movePositive(); else (*motorAz).moveNegative(); someWrokDone = true; } if((*motorAz).isMoving() && (abs(valAzimut) < sensorStopTreshold)) { (*motorAz).stop(); someWrokDone = true; } // ----- elevacija ----- if(!(*motorEl).isMoving() && (abs(valElevacija) > sensorStartTreshold)) { if(valElevacija > 0) (*motorEl).movePositive(); else (*motorEl).moveNegative(); someWrokDone = true; } if((*motorEl).isMoving() && (abs(valElevacija) < sensorStopTreshold)) { (*motorEl).stop(); someWrokDone = true; } // ---- ništa nije dirano ---- if(!someWrokDone) wait_ms(500); /* if(valAzimut > sensorStartTreshold) { if(!(*motorAz).isMoving()) (*motorAz).movePositive(); continue; } if(valAzimut < (-1 * sensorStartTreshold)) { if(!(*motorAz).isMoving()) (*motorAz).moveNegative(); continue; } if((*motorAz).isMoving() && (abs(valAzimut) < sensorStopTreshold)) { (*motorAz).stop(); } if(valElevacija > sensorStartTreshold) { if(!(*motorEl).isMoving()) (*motorEl).movePositive(); continue; } if(valElevacija < (-1 * sensorStartTreshold)) { if(!(*motorEl).isMoving()) (*motorEl).moveNegative(); continue; } if((*motorEl).isMoving() && (abs(valElevacija) < sensorStopTreshold)) { (*motorEl).stop(); } */ /* if (valElevacija > sensorTreshold){ // positive azimuth deviation (*motorEl).movePositive(); pc.printf("elevacija pozitiv \n"); } else if (valElevacija < (-1 * sensorTreshold)) { // negative azimuth deviation (*motorEl).moveNegative(); pc.printf("elevacija negativ \n"); } */ } }