v1
Dependencies: PinDetect TextLCD mbed
Fork of SunflowerMach1 by
main.cpp@12:8cb20afa1694, 2014-01-17 (annotated)
- Committer:
- cvitas
- Date:
- Fri Jan 17 14:40:31 2014 +0000
- Revision:
- 12:8cb20afa1694
- Parent:
- 11:f243d8ed556d
danchi 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mdraganic | 0:7447b8021b33 | 1 | #include "mbed.h" |
mdraganic | 0:7447b8021b33 | 2 | #include "Motor.h" |
mdraganic | 7:ac67f44120a5 | 3 | #include "TextLCD.h" |
cvitas | 11:f243d8ed556d | 4 | #include "PinDetect.h" |
mdraganic | 3:bebfc64cefe4 | 5 | |
mdraganic | 10:0b8a98b1e6b1 | 6 | #define sensorStartTreshold 0.08 |
mdraganic | 10:0b8a98b1e6b1 | 7 | #define sensorStopTreshold 0.02 |
mdraganic | 3:bebfc64cefe4 | 8 | |
mdraganic | 5:7e28f4b64a55 | 9 | #define calibrateFactorSenzA 1 |
mdraganic | 5:7e28f4b64a55 | 10 | #define calibrateFactorSenzB 0.97 |
mdraganic | 5:7e28f4b64a55 | 11 | #define calibrateFactorSenzC 1.06 |
mdraganic | 5:7e28f4b64a55 | 12 | #define calibrateFactorSenzD 0.9 |
mdraganic | 3:bebfc64cefe4 | 13 | |
mdraganic | 7:ac67f44120a5 | 14 | #define lcdOutputEnable true |
cvitas | 11:f243d8ed556d | 15 | #define serialOutputEnable true |
cvitas | 11:f243d8ed556d | 16 | #define serialOutputBaudrate 9600 |
mdraganic | 4:03b68322905f | 17 | |
mdraganic | 3:bebfc64cefe4 | 18 | Serial pc(USBTX, USBRX); |
cvitas | 12:8cb20afa1694 | 19 | TextLCD lcd(p5, p6, p7, p8, p9, p10); // rs, e, d4-d7 |
mdraganic | 7:ac67f44120a5 | 20 | |
cvitas | 11:f243d8ed556d | 21 | Ticker Prikaz; |
cvitas | 11:f243d8ed556d | 22 | |
mdraganic | 7:ac67f44120a5 | 23 | DigitalOut ledBoot(LED1); |
mdraganic | 10:0b8a98b1e6b1 | 24 | DigitalOut ledAz(LED3); |
mdraganic | 7:ac67f44120a5 | 25 | DigitalOut ledEl(LED4); |
mdraganic | 0:7447b8021b33 | 26 | |
cvitas | 12:8cb20afa1694 | 27 | DigitalOut R1(p26); |
cvitas | 12:8cb20afa1694 | 28 | DigitalOut R2(p25); |
cvitas | 12:8cb20afa1694 | 29 | DigitalOut R3(p24); |
cvitas | 12:8cb20afa1694 | 30 | DigitalOut R4(p23); |
cvitas | 12:8cb20afa1694 | 31 | |
cvitas | 12:8cb20afa1694 | 32 | |
mdraganic | 10:0b8a98b1e6b1 | 33 | AnalogIn ainSensA(p16); |
mdraganic | 10:0b8a98b1e6b1 | 34 | AnalogIn ainSensB(p17); |
mdraganic | 10:0b8a98b1e6b1 | 35 | AnalogIn ainSensC(p18); |
mdraganic | 10:0b8a98b1e6b1 | 36 | AnalogIn ainSensD(p19); |
mdraganic | 0:7447b8021b33 | 37 | |
cvitas | 12:8cb20afa1694 | 38 | PinDetect pb_azimut(p30); |
cvitas | 12:8cb20afa1694 | 39 | PinDetect pb_elevacija(p29); |
cvitas | 11:f243d8ed556d | 40 | |
mdraganic | 2:0bf41ad96558 | 41 | float valAzimut = 0; |
mdraganic | 2:0bf41ad96558 | 42 | float valElevacija = 0; |
mdraganic | 2:0bf41ad96558 | 43 | |
cvitas | 11:f243d8ed556d | 44 | int volatile count_azimut=0; |
cvitas | 11:f243d8ed556d | 45 | int volatile count_elevacija=0; |
cvitas | 11:f243d8ed556d | 46 | |
cvitas | 11:f243d8ed556d | 47 | |
mdraganic | 2:0bf41ad96558 | 48 | float SensA, SensB, SensC, SensD; |
cvitas | 11:f243d8ed556d | 49 | |
cvitas | 11:f243d8ed556d | 50 | // Callback routine is interrupt activated by a debounced pb hit |
cvitas | 11:f243d8ed556d | 51 | void pb_azimut_hit_callback (void) { |
cvitas | 11:f243d8ed556d | 52 | count_azimut++; |
cvitas | 11:f243d8ed556d | 53 | } |
cvitas | 11:f243d8ed556d | 54 | |
cvitas | 11:f243d8ed556d | 55 | void pb_elevacija_hit_callback (void) { |
cvitas | 11:f243d8ed556d | 56 | count_elevacija++; |
cvitas | 11:f243d8ed556d | 57 | } |
cvitas | 11:f243d8ed556d | 58 | |
cvitas | 11:f243d8ed556d | 59 | char GetKeyInput(void) { |
cvitas | 11:f243d8ed556d | 60 | char c = pc.getc(); // get keyboard data (note numerical ascii range) |
cvitas | 11:f243d8ed556d | 61 | pc.printf("%c",c); // print ascii value to host PC terminal |
cvitas | 11:f243d8ed556d | 62 | return (c&0x0F); // return value as non-ascii (bitmask c with value 0x0f |
cvitas | 11:f243d8ed556d | 63 | } |
cvitas | 11:f243d8ed556d | 64 | |
cvitas | 11:f243d8ed556d | 65 | void od_prikaza(){ |
cvitas | 11:f243d8ed556d | 66 | lcd.cls(); |
cvitas | 11:f243d8ed556d | 67 | lcd.printf(" %d %d ", count_azimut , count_elevacija); |
cvitas | 11:f243d8ed556d | 68 | } |
cvitas | 11:f243d8ed556d | 69 | |
mdraganic | 2:0bf41ad96558 | 70 | void readValuesForAveraging() { |
mdraganic | 2:0bf41ad96558 | 71 | |
mdraganic | 2:0bf41ad96558 | 72 | SensA = 0; |
mdraganic | 2:0bf41ad96558 | 73 | SensB = 0; |
mdraganic | 2:0bf41ad96558 | 74 | SensC = 0; |
mdraganic | 2:0bf41ad96558 | 75 | SensD = 0; |
mdraganic | 2:0bf41ad96558 | 76 | |
mdraganic | 3:bebfc64cefe4 | 77 | for (int i = 0; i < 20; i++) { |
mdraganic | 2:0bf41ad96558 | 78 | SensA += ainSensA; |
mdraganic | 2:0bf41ad96558 | 79 | SensB += ainSensB; |
mdraganic | 2:0bf41ad96558 | 80 | SensC += ainSensC; |
mdraganic | 2:0bf41ad96558 | 81 | SensD += ainSensD; |
mdraganic | 2:0bf41ad96558 | 82 | } |
mdraganic | 3:bebfc64cefe4 | 83 | SensA /= 20; |
mdraganic | 3:bebfc64cefe4 | 84 | SensB /= 20; |
mdraganic | 3:bebfc64cefe4 | 85 | SensC /= 20; |
mdraganic | 3:bebfc64cefe4 | 86 | SensD /= 20; |
mdraganic | 3:bebfc64cefe4 | 87 | |
mdraganic | 3:bebfc64cefe4 | 88 | SensA *= calibrateFactorSenzA; |
mdraganic | 3:bebfc64cefe4 | 89 | SensB *= calibrateFactorSenzB; |
mdraganic | 3:bebfc64cefe4 | 90 | SensC *= calibrateFactorSenzC; |
mdraganic | 3:bebfc64cefe4 | 91 | SensD *= calibrateFactorSenzD; |
mdraganic | 2:0bf41ad96558 | 92 | |
mdraganic | 2:0bf41ad96558 | 93 | valAzimut = (SensA + SensB) - (SensC + SensD); |
mdraganic | 2:0bf41ad96558 | 94 | valElevacija = (SensB + SensC) - (SensA + SensD); |
mdraganic | 3:bebfc64cefe4 | 95 | |
mdraganic | 4:03b68322905f | 96 | if(serialOutputEnable) { |
mdraganic | 4:03b68322905f | 97 | |
cvitas | 11:f243d8ed556d | 98 | pc.printf("az:%6.3f el:%6.3f :: A:%.3f B:%.3f C:%.3f D:%.3f \n\r", |
cvitas | 11:f243d8ed556d | 99 | valAzimut, valElevacija, SensA, SensB, SensC, SensD); |
mdraganic | 4:03b68322905f | 100 | |
cvitas | 11:f243d8ed556d | 101 | // pc.printf("az:%6.3f el:%6.3f \n", valAzimut, valElevacija); |
mdraganic | 4:03b68322905f | 102 | } |
mdraganic | 7:ac67f44120a5 | 103 | |
mdraganic | 7:ac67f44120a5 | 104 | if(lcdOutputEnable) { |
mdraganic | 7:ac67f44120a5 | 105 | lcd.cls(); |
mdraganic | 8:4044ae40bbc1 | 106 | lcd.printf("a:%5.2f \n", valAzimut); |
mdraganic | 8:4044ae40bbc1 | 107 | lcd.printf("e:%5.2f \n", valElevacija); |
mdraganic | 7:ac67f44120a5 | 108 | } |
mdraganic | 7:ac67f44120a5 | 109 | |
mdraganic | 2:0bf41ad96558 | 110 | } |
mdraganic | 0:7447b8021b33 | 111 | |
cvitas | 11:f243d8ed556d | 112 | char data1, data2; // variable declarations |
mdraganic | 10:0b8a98b1e6b1 | 113 | int main() { |
mdraganic | 0:7447b8021b33 | 114 | |
mdraganic | 7:ac67f44120a5 | 115 | ledBoot = 1; |
cvitas | 12:8cb20afa1694 | 116 | Motor *motorEl = new Motor(p23, p24, p22); |
cvitas | 12:8cb20afa1694 | 117 | /* |
cvitas | 11:f243d8ed556d | 118 | Prikaz.attach(&od_prikaza, 0.1); |
cvitas | 11:f243d8ed556d | 119 | |
cvitas | 11:f243d8ed556d | 120 | // Setup Interrupt callback function for a pb hit |
cvitas | 11:f243d8ed556d | 121 | pb_elevacija.attach_deasserted(&pb_elevacija_hit_callback); |
cvitas | 11:f243d8ed556d | 122 | pb_azimut.attach_deasserted(&pb_azimut_hit_callback); |
cvitas | 11:f243d8ed556d | 123 | // Start sampling pb input using interrupts |
cvitas | 11:f243d8ed556d | 124 | pb_elevacija.setSampleFrequency(); |
cvitas | 11:f243d8ed556d | 125 | pb_azimut.setSampleFrequency(); |
mdraganic | 4:03b68322905f | 126 | pc.baud(serialOutputBaudrate); |
cvitas | 11:f243d8ed556d | 127 | |
cvitas | 12:8cb20afa1694 | 128 | Motor *motorAz = new Motor(p25, p26, p21); // relej, relej, pwm |
cvitas | 12:8cb20afa1694 | 129 | |
cvitas | 12:8cb20afa1694 | 130 | if(lcdOutputEnable) {*/ |
cvitas | 12:8cb20afa1694 | 131 | |
cvitas | 12:8cb20afa1694 | 132 | while(1){ |
cvitas | 12:8cb20afa1694 | 133 | ledBoot = 1; |
mdraganic | 9:764eb7341754 | 134 | lcd.cls(); |
mdraganic | 9:764eb7341754 | 135 | lcd.printf("Suncokre\n"); |
mdraganic | 9:764eb7341754 | 136 | lcd.printf("t TVZ \n"); |
mdraganic | 10:0b8a98b1e6b1 | 137 | |
cvitas | 12:8cb20afa1694 | 138 | wait_ms(200); |
cvitas | 12:8cb20afa1694 | 139 | ledBoot = 0; |
cvitas | 12:8cb20afa1694 | 140 | wait_ms(200); |
cvitas | 12:8cb20afa1694 | 141 | (*motorEl).stop(); |
cvitas | 12:8cb20afa1694 | 142 | /* |
cvitas | 12:8cb20afa1694 | 143 | R1 = 1; |
cvitas | 12:8cb20afa1694 | 144 | R2 = 0;R3=0;R4=0; |
cvitas | 12:8cb20afa1694 | 145 | wait_ms(1000); |
cvitas | 12:8cb20afa1694 | 146 | R2 = 1; |
cvitas | 12:8cb20afa1694 | 147 | R1 = 0;R3=0;R4=0; |
cvitas | 12:8cb20afa1694 | 148 | wait_ms(1000); |
cvitas | 12:8cb20afa1694 | 149 | R3 = 1; |
cvitas | 12:8cb20afa1694 | 150 | R2 = 0;R1=0;R4=0; |
cvitas | 12:8cb20afa1694 | 151 | wait_ms(1000); |
cvitas | 12:8cb20afa1694 | 152 | R4 = 1; |
cvitas | 12:8cb20afa1694 | 153 | R2 = 0;R3=0;R1=0;*/ |
cvitas | 12:8cb20afa1694 | 154 | |
cvitas | 12:8cb20afa1694 | 155 | wait_ms(600); |
cvitas | 12:8cb20afa1694 | 156 | (*motorEl).movePositive(); |
cvitas | 12:8cb20afa1694 | 157 | wait_ms(1000); |
cvitas | 12:8cb20afa1694 | 158 | (*motorEl).stop(); |
cvitas | 12:8cb20afa1694 | 159 | (*motorEl).moveNegative(); |
cvitas | 12:8cb20afa1694 | 160 | wait_ms(1000); |
cvitas | 12:8cb20afa1694 | 161 | |
cvitas | 12:8cb20afa1694 | 162 | |
cvitas | 12:8cb20afa1694 | 163 | } |
cvitas | 12:8cb20afa1694 | 164 | |
mdraganic | 0:7447b8021b33 | 165 | } |
mdraganic | 2:0bf41ad96558 | 166 | |
mdraganic | 2:0bf41ad96558 | 167 |