el encoder al presionarlo pita y ademas es incremental y decremental

Dependencies:   Debounced QEI TextLCD mbed

Committer:
mescobart22
Date:
Wed Apr 09 15:32:24 2014 +0000
Revision:
0:41a3a16a7de0
funcion encoder con pitido

Who changed what in which revision?

UserRevisionLine numberNew 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 }