egrfgfrgg

Committer:
javiernegrette
Date:
Wed Oct 16 22:56:47 2013 +0000
Revision:
0:5d3dea91c85f
This code can increase, decrease or change of parameter of  sp, kp, ki, kd, by push-button. Has reset button too. This code is the first part of a PID controler design

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javiernegrette 0:5d3dea91c85f 1 #include "mbed.h"
javiernegrette 0:5d3dea91c85f 2 #include "DebouncedIn.h"
javiernegrette 0:5d3dea91c85f 3 #include "TextLCD.h"
javiernegrette 0:5d3dea91c85f 4
javiernegrette 0:5d3dea91c85f 5 AnalogIn Vin(PTC2);
javiernegrette 0:5d3dea91c85f 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
javiernegrette 0:5d3dea91c85f 7
javiernegrette 0:5d3dea91c85f 8 DigitalOut led1(LED1);
javiernegrette 0:5d3dea91c85f 9 DigitalOut led2(LED2);
javiernegrette 0:5d3dea91c85f 10 DigitalOut led3(LED3);
javiernegrette 0:5d3dea91c85f 11 DebouncedIn button1(PTC12);
javiernegrette 0:5d3dea91c85f 12 DebouncedIn button2(PTC13);
javiernegrette 0:5d3dea91c85f 13 DebouncedIn button3(PTC16);
javiernegrette 0:5d3dea91c85f 14 DebouncedIn button4(PTC17);
javiernegrette 0:5d3dea91c85f 15
javiernegrette 0:5d3dea91c85f 16 //codigos movimiento del curzor
javiernegrette 0:5d3dea91c85f 17 //18 para izquierda
javiernegrette 0:5d3dea91c85f 18 //1A para derecha
javiernegrette 0:5d3dea91c85f 19
javiernegrette 0:5d3dea91c85f 20 int C1=0x0E; // solo muestra el curzor
javiernegrette 0:5d3dea91c85f 21 int C2=0x18; // desplaza izquierda
javiernegrette 0:5d3dea91c85f 22 int C3=0x1A; // desplaza derecha
javiernegrette 0:5d3dea91c85f 23 int C4=0x0C; // quito cursor bajo
javiernegrette 0:5d3dea91c85f 24
javiernegrette 0:5d3dea91c85f 25 int i; // indice de la variable
javiernegrette 0:5d3dea91c85f 26 int j; //variable controla cambio 4 posiciones
javiernegrette 0:5d3dea91c85f 27 int kp, ki, kd, sp;
javiernegrette 0:5d3dea91c85f 28
javiernegrette 0:5d3dea91c85f 29 int main() {
javiernegrette 0:5d3dea91c85f 30 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
javiernegrette 0:5d3dea91c85f 31 lcd.cls();
javiernegrette 0:5d3dea91c85f 32 lcd.locate(0,0);
javiernegrette 0:5d3dea91c85f 33 lcd.printf("Sp%d",sp);//primero print y luego locate?? o al contrario??
javiernegrette 0:5d3dea91c85f 34 lcd.locate(8,0);
javiernegrette 0:5d3dea91c85f 35 lcd.printf("Kp%d",kp);
javiernegrette 0:5d3dea91c85f 36 lcd.locate(0,1);
javiernegrette 0:5d3dea91c85f 37 lcd.printf("Ki%d",ki);
javiernegrette 0:5d3dea91c85f 38 lcd.locate(8,1);
javiernegrette 0:5d3dea91c85f 39 lcd.printf("Kd%d",kd);
javiernegrette 0:5d3dea91c85f 40
javiernegrette 0:5d3dea91c85f 41
javiernegrette 0:5d3dea91c85f 42 while(1) {
javiernegrette 0:5d3dea91c85f 43 led3 =1;
javiernegrette 0:5d3dea91c85f 44 if (button3.falling()) {
javiernegrette 0:5d3dea91c85f 45 led3 =!led3;
javiernegrette 0:5d3dea91c85f 46 ++j;
javiernegrette 0:5d3dea91c85f 47 } //INCREMENTA POSICION DEL MENU CON BOTON 3
javiernegrette 0:5d3dea91c85f 48 if (j==0){
javiernegrette 0:5d3dea91c85f 49 lcd.locate(2,0);
javiernegrette 0:5d3dea91c85f 50 lcd.printf("%d",sp);
javiernegrette 0:5d3dea91c85f 51 wait(0.5);
javiernegrette 0:5d3dea91c85f 52 led1 =1;
javiernegrette 0:5d3dea91c85f 53 if (button1.falling()) {
javiernegrette 0:5d3dea91c85f 54 led1 =!led1;
javiernegrette 0:5d3dea91c85f 55 ++sp; // ademas revisa boton 1 para incrementar
javiernegrette 0:5d3dea91c85f 56 }
javiernegrette 0:5d3dea91c85f 57 led2 =1;
javiernegrette 0:5d3dea91c85f 58 if (button2.falling()) {
javiernegrette 0:5d3dea91c85f 59 led2 =!led2;
javiernegrette 0:5d3dea91c85f 60 --sp; // ademas revisa boton 2 para decrementar
javiernegrette 0:5d3dea91c85f 61 }
javiernegrette 0:5d3dea91c85f 62 if (sp>9999){
javiernegrette 0:5d3dea91c85f 63 sp=9999;
javiernegrette 0:5d3dea91c85f 64 }
javiernegrette 0:5d3dea91c85f 65
javiernegrette 0:5d3dea91c85f 66 if (sp<0){
javiernegrette 0:5d3dea91c85f 67 sp=0;
javiernegrette 0:5d3dea91c85f 68 }
javiernegrette 0:5d3dea91c85f 69 if (button4.falling()){
javiernegrette 0:5d3dea91c85f 70 sp=0;
javiernegrette 0:5d3dea91c85f 71 kp=0;
javiernegrette 0:5d3dea91c85f 72 ki=0;
javiernegrette 0:5d3dea91c85f 73 kd=0;
javiernegrette 0:5d3dea91c85f 74 }
javiernegrette 0:5d3dea91c85f 75 }
javiernegrette 0:5d3dea91c85f 76 if (j==1) {
javiernegrette 0:5d3dea91c85f 77 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 78 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 79 wait(0.5);
javiernegrette 0:5d3dea91c85f 80 led1 =1;
javiernegrette 0:5d3dea91c85f 81 if (button1.falling()) {
javiernegrette 0:5d3dea91c85f 82 led1 =!led1;
javiernegrette 0:5d3dea91c85f 83 ++kp;
javiernegrette 0:5d3dea91c85f 84 }
javiernegrette 0:5d3dea91c85f 85 led2 =1;
javiernegrette 0:5d3dea91c85f 86 if (button2.falling()) {
javiernegrette 0:5d3dea91c85f 87 led2 =!led2;
javiernegrette 0:5d3dea91c85f 88 --kp;
javiernegrette 0:5d3dea91c85f 89 }
javiernegrette 0:5d3dea91c85f 90 if (kp>9999){
javiernegrette 0:5d3dea91c85f 91 kp=9999;
javiernegrette 0:5d3dea91c85f 92 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 93 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 94 }
javiernegrette 0:5d3dea91c85f 95
javiernegrette 0:5d3dea91c85f 96 if (kp<0){
javiernegrette 0:5d3dea91c85f 97 kp=0;
javiernegrette 0:5d3dea91c85f 98 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 99 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 100 }
javiernegrette 0:5d3dea91c85f 101 if (button4.falling()){
javiernegrette 0:5d3dea91c85f 102 sp=0;
javiernegrette 0:5d3dea91c85f 103 kp=0;
javiernegrette 0:5d3dea91c85f 104 ki=0;
javiernegrette 0:5d3dea91c85f 105 kd=0;
javiernegrette 0:5d3dea91c85f 106 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 107 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 108 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 109 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 110 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 111 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 112 lcd.locate(2,0);
javiernegrette 0:5d3dea91c85f 113 lcd.printf("%d",sp);
javiernegrette 0:5d3dea91c85f 114 }
javiernegrette 0:5d3dea91c85f 115 }
javiernegrette 0:5d3dea91c85f 116 if (j==2) {
javiernegrette 0:5d3dea91c85f 117 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 118 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 119 wait(0.5);
javiernegrette 0:5d3dea91c85f 120 led1 =1;
javiernegrette 0:5d3dea91c85f 121 if (button1.falling()){
javiernegrette 0:5d3dea91c85f 122 led1 =!led1;
javiernegrette 0:5d3dea91c85f 123 ++ki;
javiernegrette 0:5d3dea91c85f 124 }
javiernegrette 0:5d3dea91c85f 125 led2 =1;
javiernegrette 0:5d3dea91c85f 126 if (button2.falling()){
javiernegrette 0:5d3dea91c85f 127 led2 =!led2;
javiernegrette 0:5d3dea91c85f 128 --ki;
javiernegrette 0:5d3dea91c85f 129 }
javiernegrette 0:5d3dea91c85f 130 if (ki>9999){
javiernegrette 0:5d3dea91c85f 131 ki=9999;
javiernegrette 0:5d3dea91c85f 132 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 133 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 134 }
javiernegrette 0:5d3dea91c85f 135
javiernegrette 0:5d3dea91c85f 136 if (ki<0){
javiernegrette 0:5d3dea91c85f 137 ki=0;
javiernegrette 0:5d3dea91c85f 138 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 139 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 140 }
javiernegrette 0:5d3dea91c85f 141 if (button4.falling()){
javiernegrette 0:5d3dea91c85f 142 sp=0;
javiernegrette 0:5d3dea91c85f 143 kp=0;
javiernegrette 0:5d3dea91c85f 144 ki=0;
javiernegrette 0:5d3dea91c85f 145 kd=0;
javiernegrette 0:5d3dea91c85f 146 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 147 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 148 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 149 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 150 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 151 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 152 lcd.locate(2,0);
javiernegrette 0:5d3dea91c85f 153 lcd.printf("%d",sp);
javiernegrette 0:5d3dea91c85f 154 }
javiernegrette 0:5d3dea91c85f 155
javiernegrette 0:5d3dea91c85f 156 }
javiernegrette 0:5d3dea91c85f 157 if (j==3) {
javiernegrette 0:5d3dea91c85f 158 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 159 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 160 wait(0.5);
javiernegrette 0:5d3dea91c85f 161 led1 =1;
javiernegrette 0:5d3dea91c85f 162 if (button1.falling()){
javiernegrette 0:5d3dea91c85f 163 led1 =!led1;
javiernegrette 0:5d3dea91c85f 164 ++kd;
javiernegrette 0:5d3dea91c85f 165 }
javiernegrette 0:5d3dea91c85f 166 led2 =1;
javiernegrette 0:5d3dea91c85f 167 if (button2.falling()){
javiernegrette 0:5d3dea91c85f 168 led2 =!led2;
javiernegrette 0:5d3dea91c85f 169 --kd;
javiernegrette 0:5d3dea91c85f 170 }
javiernegrette 0:5d3dea91c85f 171 if (kd>9999){
javiernegrette 0:5d3dea91c85f 172 kd=9999;
javiernegrette 0:5d3dea91c85f 173 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 174 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 175 }
javiernegrette 0:5d3dea91c85f 176
javiernegrette 0:5d3dea91c85f 177 if (kd<0){
javiernegrette 0:5d3dea91c85f 178 kd=0;
javiernegrette 0:5d3dea91c85f 179 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 180 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 181 }
javiernegrette 0:5d3dea91c85f 182 if (button4.falling()){
javiernegrette 0:5d3dea91c85f 183 sp=0;
javiernegrette 0:5d3dea91c85f 184 kp=0;
javiernegrette 0:5d3dea91c85f 185 ki=0;
javiernegrette 0:5d3dea91c85f 186 kd=0;
javiernegrette 0:5d3dea91c85f 187 lcd.locate(10,1);
javiernegrette 0:5d3dea91c85f 188 lcd.printf("%d",kd);
javiernegrette 0:5d3dea91c85f 189 lcd.locate(2,1);
javiernegrette 0:5d3dea91c85f 190 lcd.printf("%d",ki);
javiernegrette 0:5d3dea91c85f 191 lcd.locate(10,0);
javiernegrette 0:5d3dea91c85f 192 lcd.printf("%d",kp);
javiernegrette 0:5d3dea91c85f 193 lcd.locate(2,0);
javiernegrette 0:5d3dea91c85f 194 lcd.printf("%d",sp);
javiernegrette 0:5d3dea91c85f 195 }
javiernegrette 0:5d3dea91c85f 196
javiernegrette 0:5d3dea91c85f 197 }
javiernegrette 0:5d3dea91c85f 198 if (j==4) {
javiernegrette 0:5d3dea91c85f 199 j=0;
javiernegrette 0:5d3dea91c85f 200 }
javiernegrette 0:5d3dea91c85f 201
javiernegrette 0:5d3dea91c85f 202
javiernegrette 0:5d3dea91c85f 203
javiernegrette 0:5d3dea91c85f 204 }
javiernegrette 0:5d3dea91c85f 205 }