
motor i senzor
Dependencies: TextLCD mbed PinDetect
Revision 11:f243d8ed556d, committed 2013-12-11
- Comitter:
- cvitas
- Date:
- Wed Dec 11 14:54:25 2013 +0000
- Parent:
- 10:0b8a98b1e6b1
- Child:
- 12:8cb20afa1694
- Commit message:
- Verzija za kalibraciju platna 1
Changed in this revision
PinDetect.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Wed Dec 11 14:54:25 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/PinDetect/#cb3afc45028b
--- a/main.cpp Mon Nov 11 19:01:15 2013 +0000 +++ b/main.cpp Wed Dec 11 14:54:25 2013 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "Motor.h" #include "TextLCD.h" +#include "PinDetect.h" #define sensorStartTreshold 0.08 #define sensorStopTreshold 0.02 @@ -11,12 +12,14 @@ #define calibrateFactorSenzD 0.9 #define lcdOutputEnable true -#define serialOutputEnable false -#define serialOutputBaudrate 115200 +#define serialOutputEnable true +#define serialOutputBaudrate 9600 Serial pc(USBTX, USBRX); TextLCD lcd(p13, p14, p5, p6, p7, p8); // rs, e, d4-d7 +Ticker Prikaz; + DigitalOut ledBoot(LED1); DigitalOut ledAz(LED3); DigitalOut ledEl(LED4); @@ -26,10 +29,38 @@ AnalogIn ainSensC(p18); AnalogIn ainSensD(p19); +PinDetect pb_azimut(p11); +PinDetect pb_elevacija(p12); + float valAzimut = 0; float valElevacija = 0; +int volatile count_azimut=0; +int volatile count_elevacija=0; + + float SensA, SensB, SensC, SensD; + +// Callback routine is interrupt activated by a debounced pb hit +void pb_azimut_hit_callback (void) { + count_azimut++; +} + +void pb_elevacija_hit_callback (void) { + count_elevacija++; +} + +char GetKeyInput(void) { + char c = pc.getc(); // get keyboard data (note numerical ascii range) + pc.printf("%c",c); // print ascii value to host PC terminal + return (c&0x0F); // return value as non-ascii (bitmask c with value 0x0f +} + +void od_prikaza(){ + lcd.cls(); + lcd.printf(" %d %d ", count_azimut , count_elevacija); +} + void readValuesForAveraging() { SensA = 0; @@ -58,10 +89,10 @@ if(serialOutputEnable) { -// 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 :: A:%.3f B:%.3f C:%.3f D:%.3f \n\r", + valAzimut, valElevacija, SensA, SensB, SensC, SensD); - pc.printf("az:%6.3f el:%6.3f \n", valAzimut, valElevacija); + // pc.printf("az:%6.3f el:%6.3f \n", valAzimut, valElevacija); } if(lcdOutputEnable) { @@ -72,10 +103,20 @@ } +char data1, data2; // variable declarations int main() { ledBoot = 1; + Prikaz.attach(&od_prikaza, 0.1); + + // Setup Interrupt callback function for a pb hit + pb_elevacija.attach_deasserted(&pb_elevacija_hit_callback); + pb_azimut.attach_deasserted(&pb_azimut_hit_callback); + // Start sampling pb input using interrupts + pb_elevacija.setSampleFrequency(); + pb_azimut.setSampleFrequency(); pc.baud(serialOutputBaudrate); + Motor *motorAz = new Motor(p28, p27, p26); // relej, relej, pwm Motor *motorEl = new Motor(p24, p23, p25); if(lcdOutputEnable) { @@ -87,7 +128,32 @@ ledBoot = 0; while(1) { - + + data2 = GetKeyInput(); // call function to get 1st key press + switch (data2) { + case 0: + (*motorAz).stop(); + (*motorEl).stop(); + break; + case 1: + (*motorAz).movePositive(); + break; + case 2: + (*motorAz).moveNegative(); + break; + case 3: + (*motorEl).movePositive(); + break; + case 4: + (*motorEl).moveNegative(); + break; + default: + (*motorAz).stop(); + (*motorEl).stop(); + break; + } + + /* // ---- citanje senzora ------------ readValuesForAveraging(); @@ -121,10 +187,12 @@ (*motorEl).stop(); ledEl = 0; } - + */ // ----- pauza ------ - wait_ms(100); + + //wait_ms(200); + } }