el encoder al presionarlo pita y ademas es incremental y decremental
Dependencies: Debounced QEI TextLCD mbed
main.cpp@0:41a3a16a7de0, 2014-04-09 (annotated)
- Committer:
- mescobart22
- Date:
- Wed Apr 09 15:32:24 2014 +0000
- Revision:
- 0:41a3a16a7de0
funcion encoder con pitido
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mescobart22 | 0:41a3a16a7de0 | 1 | #include "mbed.h" |
mescobart22 | 0:41a3a16a7de0 | 2 | #include "DebouncedIn.h" |
mescobart22 | 0:41a3a16a7de0 | 3 | #include "TextLCD.h" |
mescobart22 | 0:41a3a16a7de0 | 4 | #include "QEI.h" |
mescobart22 | 0:41a3a16a7de0 | 5 | |
mescobart22 | 0:41a3a16a7de0 | 6 | |
mescobart22 | 0:41a3a16a7de0 | 7 | QEI wheel (PTA16, PTA17, NC, 48); |
mescobart22 | 0:41a3a16a7de0 | 8 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
mescobart22 | 0:41a3a16a7de0 | 9 | |
mescobart22 | 0:41a3a16a7de0 | 10 | |
mescobart22 | 0:41a3a16a7de0 | 11 | DebouncedIn Encoder_bu(PTC5); |
mescobart22 | 0:41a3a16a7de0 | 12 | DebouncedIn button1(PTC10); |
mescobart22 | 0:41a3a16a7de0 | 13 | DebouncedIn button2(PTC6); |
mescobart22 | 0:41a3a16a7de0 | 14 | DebouncedIn button3(PTC11); |
mescobart22 | 0:41a3a16a7de0 | 15 | PwmOut Pwm(PTA5); |
mescobart22 | 0:41a3a16a7de0 | 16 | |
mescobart22 | 0:41a3a16a7de0 | 17 | |
mescobart22 | 0:41a3a16a7de0 | 18 | float pp=0.001; |
mescobart22 | 0:41a3a16a7de0 | 19 | float Dd=0.1; |
mescobart22 | 0:41a3a16a7de0 | 20 | int SP1=0,Sp=0,Kp1=0,Kp=0,Ki=0,Ki1=0,Kd=0,Kd1=0,v,m; |
mescobart22 | 0:41a3a16a7de0 | 21 | int C1=0x0E; |
mescobart22 | 0:41a3a16a7de0 | 22 | int r; // indice de la variable |
mescobart22 | 0:41a3a16a7de0 | 23 | |
mescobart22 | 0:41a3a16a7de0 | 24 | int PWMmodule(float pp,float Dd) |
mescobart22 | 0:41a3a16a7de0 | 25 | { |
mescobart22 | 0:41a3a16a7de0 | 26 | Pwm.period(pp); |
mescobart22 | 0:41a3a16a7de0 | 27 | Pwm.write(Dd); |
mescobart22 | 0:41a3a16a7de0 | 28 | wait(0.2); |
mescobart22 | 0:41a3a16a7de0 | 29 | Pwm.write(0); |
mescobart22 | 0:41a3a16a7de0 | 30 | return 0; |
mescobart22 | 0:41a3a16a7de0 | 31 | } |
mescobart22 | 0:41a3a16a7de0 | 32 | |
mescobart22 | 0:41a3a16a7de0 | 33 | int main() |
mescobart22 | 0:41a3a16a7de0 | 34 | |
mescobart22 | 0:41a3a16a7de0 | 35 | { |
mescobart22 | 0:41a3a16a7de0 | 36 | lcd.writeCommand(0x0E); |
mescobart22 | 0:41a3a16a7de0 | 37 | lcd.printf("Sp=0 Kp=0"); |
mescobart22 | 0:41a3a16a7de0 | 38 | lcd.locate(0,1); |
mescobart22 | 0:41a3a16a7de0 | 39 | lcd.printf("Ki=0 Kd=0"); |
mescobart22 | 0:41a3a16a7de0 | 40 | lcd.locate(2,0); |
mescobart22 | 0:41a3a16a7de0 | 41 | lcd.printf("="); |
mescobart22 | 0:41a3a16a7de0 | 42 | |
mescobart22 | 0:41a3a16a7de0 | 43 | while(1) |
mescobart22 | 0:41a3a16a7de0 | 44 | { |
mescobart22 | 0:41a3a16a7de0 | 45 | m=wheel.getPulses(); |
mescobart22 | 0:41a3a16a7de0 | 46 | |
mescobart22 | 0:41a3a16a7de0 | 47 | if(m!=v) { |
mescobart22 | 0:41a3a16a7de0 | 48 | |
mescobart22 | 0:41a3a16a7de0 | 49 | switch(r) { |
mescobart22 | 0:41a3a16a7de0 | 50 | |
mescobart22 | 0:41a3a16a7de0 | 51 | case 0: |
mescobart22 | 0:41a3a16a7de0 | 52 | Kd1=Kd; |
mescobart22 | 0:41a3a16a7de0 | 53 | |
mescobart22 | 0:41a3a16a7de0 | 54 | lcd.locate(2,0); |
mescobart22 | 0:41a3a16a7de0 | 55 | lcd.printf("= "); |
mescobart22 | 0:41a3a16a7de0 | 56 | lcd.locate(3,0); |
mescobart22 | 0:41a3a16a7de0 | 57 | lcd.printf("%d",Sp); |
mescobart22 | 0:41a3a16a7de0 | 58 | |
mescobart22 | 0:41a3a16a7de0 | 59 | Sp=SP1+m; |
mescobart22 | 0:41a3a16a7de0 | 60 | if(Sp<0) |
mescobart22 | 0:41a3a16a7de0 | 61 | { |
mescobart22 | 0:41a3a16a7de0 | 62 | Sp=0; |
mescobart22 | 0:41a3a16a7de0 | 63 | wheel.reset(); |
mescobart22 | 0:41a3a16a7de0 | 64 | m=0; |
mescobart22 | 0:41a3a16a7de0 | 65 | } |
mescobart22 | 0:41a3a16a7de0 | 66 | break; |
mescobart22 | 0:41a3a16a7de0 | 67 | case 1: |
mescobart22 | 0:41a3a16a7de0 | 68 | SP1=Sp; |
mescobart22 | 0:41a3a16a7de0 | 69 | lcd.locate(10,0); |
mescobart22 | 0:41a3a16a7de0 | 70 | lcd.printf("= "); |
mescobart22 | 0:41a3a16a7de0 | 71 | lcd.locate(11,0); |
mescobart22 | 0:41a3a16a7de0 | 72 | lcd.printf("%d",Kp); |
mescobart22 | 0:41a3a16a7de0 | 73 | |
mescobart22 | 0:41a3a16a7de0 | 74 | Kp=Kp1+m; |
mescobart22 | 0:41a3a16a7de0 | 75 | if(Kp<0) |
mescobart22 | 0:41a3a16a7de0 | 76 | { |
mescobart22 | 0:41a3a16a7de0 | 77 | Kp=0; |
mescobart22 | 0:41a3a16a7de0 | 78 | wheel.reset(); |
mescobart22 | 0:41a3a16a7de0 | 79 | m=0; |
mescobart22 | 0:41a3a16a7de0 | 80 | } |
mescobart22 | 0:41a3a16a7de0 | 81 | break; |
mescobart22 | 0:41a3a16a7de0 | 82 | case 2: |
mescobart22 | 0:41a3a16a7de0 | 83 | Kp1=Kp; |
mescobart22 | 0:41a3a16a7de0 | 84 | lcd.locate(2,1); |
mescobart22 | 0:41a3a16a7de0 | 85 | lcd.printf("= "); |
mescobart22 | 0:41a3a16a7de0 | 86 | lcd.locate(3,1); |
mescobart22 | 0:41a3a16a7de0 | 87 | lcd.printf("%d",Ki); |
mescobart22 | 0:41a3a16a7de0 | 88 | |
mescobart22 | 0:41a3a16a7de0 | 89 | Ki=Ki1+m; |
mescobart22 | 0:41a3a16a7de0 | 90 | if(Ki<0) |
mescobart22 | 0:41a3a16a7de0 | 91 | { |
mescobart22 | 0:41a3a16a7de0 | 92 | Ki=0; |
mescobart22 | 0:41a3a16a7de0 | 93 | wheel.reset(); |
mescobart22 | 0:41a3a16a7de0 | 94 | m=0; |
mescobart22 | 0:41a3a16a7de0 | 95 | } |
mescobart22 | 0:41a3a16a7de0 | 96 | |
mescobart22 | 0:41a3a16a7de0 | 97 | break; |
mescobart22 | 0:41a3a16a7de0 | 98 | case 3: |
mescobart22 | 0:41a3a16a7de0 | 99 | Ki1=Ki; |
mescobart22 | 0:41a3a16a7de0 | 100 | lcd.locate(10,1); |
mescobart22 | 0:41a3a16a7de0 | 101 | lcd.printf("= "); |
mescobart22 | 0:41a3a16a7de0 | 102 | lcd.locate(11,1); |
mescobart22 | 0:41a3a16a7de0 | 103 | lcd.printf("%d",Kd); |
mescobart22 | 0:41a3a16a7de0 | 104 | Kd=Kd1+m; |
mescobart22 | 0:41a3a16a7de0 | 105 | if(Kd<0) |
mescobart22 | 0:41a3a16a7de0 | 106 | { |
mescobart22 | 0:41a3a16a7de0 | 107 | Kd=0; |
mescobart22 | 0:41a3a16a7de0 | 108 | wheel.reset(); |
mescobart22 | 0:41a3a16a7de0 | 109 | m=0; |
mescobart22 | 0:41a3a16a7de0 | 110 | } |
mescobart22 | 0:41a3a16a7de0 | 111 | |
mescobart22 | 0:41a3a16a7de0 | 112 | break; |
mescobart22 | 0:41a3a16a7de0 | 113 | } |
mescobart22 | 0:41a3a16a7de0 | 114 | v=m; |
mescobart22 | 0:41a3a16a7de0 | 115 | } |
mescobart22 | 0:41a3a16a7de0 | 116 | |
mescobart22 | 0:41a3a16a7de0 | 117 | |
mescobart22 | 0:41a3a16a7de0 | 118 | if(button3.falling() || Encoder_bu.falling()) |
mescobart22 | 0:41a3a16a7de0 | 119 | { |
mescobart22 | 0:41a3a16a7de0 | 120 | PWMmodule(pp,Dd); |
mescobart22 | 0:41a3a16a7de0 | 121 | wait(0.2); |
mescobart22 | 0:41a3a16a7de0 | 122 | wheel.reset(); |
mescobart22 | 0:41a3a16a7de0 | 123 | r++; |
mescobart22 | 0:41a3a16a7de0 | 124 | if(r>3) |
mescobart22 | 0:41a3a16a7de0 | 125 | { |
mescobart22 | 0:41a3a16a7de0 | 126 | r=0; |
mescobart22 | 0:41a3a16a7de0 | 127 | } |
mescobart22 | 0:41a3a16a7de0 | 128 | switch (r) |
mescobart22 | 0:41a3a16a7de0 | 129 | { |
mescobart22 | 0:41a3a16a7de0 | 130 | case 0: |
mescobart22 | 0:41a3a16a7de0 | 131 | lcd.locate(2,0); |
mescobart22 | 0:41a3a16a7de0 | 132 | lcd.printf("="); |
mescobart22 | 0:41a3a16a7de0 | 133 | break; |
mescobart22 | 0:41a3a16a7de0 | 134 | case 1: |
mescobart22 | 0:41a3a16a7de0 | 135 | lcd.locate(10,0); |
mescobart22 | 0:41a3a16a7de0 | 136 | lcd.printf("="); |
mescobart22 | 0:41a3a16a7de0 | 137 | break; |
mescobart22 | 0:41a3a16a7de0 | 138 | case 2: |
mescobart22 | 0:41a3a16a7de0 | 139 | lcd.locate(2,1); |
mescobart22 | 0:41a3a16a7de0 | 140 | lcd.printf("="); |
mescobart22 | 0:41a3a16a7de0 | 141 | break; |
mescobart22 | 0:41a3a16a7de0 | 142 | case 3: |
mescobart22 | 0:41a3a16a7de0 | 143 | lcd.locate(10,1); |
mescobart22 | 0:41a3a16a7de0 | 144 | lcd.printf("="); |
mescobart22 | 0:41a3a16a7de0 | 145 | break; |
mescobart22 | 0:41a3a16a7de0 | 146 | |
mescobart22 | 0:41a3a16a7de0 | 147 | |
mescobart22 | 0:41a3a16a7de0 | 148 | } |
mescobart22 | 0:41a3a16a7de0 | 149 | } |
mescobart22 | 0:41a3a16a7de0 | 150 | { |
mescobart22 | 0:41a3a16a7de0 | 151 | } |
mescobart22 | 0:41a3a16a7de0 | 152 | } |
mescobart22 | 0:41a3a16a7de0 | 153 | } |