C&F

Dependencies:   Debounced TextLCD1 mbed

Committer:
jmcallef
Date:
Tue Oct 22 01:16:39 2013 +0000
Revision:
0:623b3e042994
Child:
1:ac004087d490
C&F

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmcallef 0:623b3e042994 1 #include "mbed.h"
jmcallef 0:623b3e042994 2 #include "DebouncedIn.h"
jmcallef 0:623b3e042994 3 #include "TextLCD.h"
jmcallef 0:623b3e042994 4
jmcallef 0:623b3e042994 5 AnalogIn Vin(PTC2);
jmcallef 0:623b3e042994 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
jmcallef 0:623b3e042994 7
jmcallef 0:623b3e042994 8 DigitalOut led1(LED1);
jmcallef 0:623b3e042994 9 DigitalOut led2(LED2);
jmcallef 0:623b3e042994 10 DigitalOut led3(LED3);
jmcallef 0:623b3e042994 11 DigitalOut led4(LED4);
jmcallef 0:623b3e042994 12 DebouncedIn button1(PTC12); // Aumento
jmcallef 0:623b3e042994 13 DebouncedIn button2(PTC13); // Disminución
jmcallef 0:623b3e042994 14 DebouncedIn button3(PTC16); // Cambio de variable
jmcallef 0:623b3e042994 15 DebouncedIn button4(PTC17); // Reset
jmcallef 0:623b3e042994 16
jmcallef 0:623b3e042994 17 int C1=0x0E; // solo muestra el curzor.
jmcallef 0:623b3e042994 18 int C2=0x18; // desplaza izquierda.
jmcallef 0:623b3e042994 19 int C3=0x1A; // desplaza derecha.
jmcallef 0:623b3e042994 20 int C4=0x0C; // quito cursor bajo.
jmcallef 0:623b3e042994 21
jmcallef 0:623b3e042994 22 int i; // Indice de la variable.
jmcallef 0:623b3e042994 23 int j; // Controla cambio de posición.
jmcallef 0:623b3e042994 24 int kp, ki, kd, sp;
jmcallef 0:623b3e042994 25
jmcallef 0:623b3e042994 26 int main(){
jmcallef 0:623b3e042994 27 lcd.writeCommand(C1); // Escribimos un comando segun el manual del modulo LCD
jmcallef 0:623b3e042994 28 lcd.cls(); // Borro toda la pantalla
jmcallef 0:623b3e042994 29 lcd.locate(0,0); // Localizo donde se escribirá el siguiente comando.
jmcallef 0:623b3e042994 30 lcd.printf("Sp %d",sp); // Escribe Sp (aparecen desde el punto (0,0)
jmcallef 0:623b3e042994 31 lcd.locate(8,0); // Localizo donde se escribirá el siguiente comando.
jmcallef 0:623b3e042994 32 lcd.printf("Kp %d",kp); // Escribe Kp (aparecen desde el punto (8,0)
jmcallef 0:623b3e042994 33 lcd.locate(0,1);
jmcallef 0:623b3e042994 34 lcd.printf("Ki %d",ki);
jmcallef 0:623b3e042994 35 lcd.locate(8,1);
jmcallef 0:623b3e042994 36 lcd.printf("Kd %d",kd);
jmcallef 0:623b3e042994 37
jmcallef 0:623b3e042994 38
jmcallef 0:623b3e042994 39 while(1){
jmcallef 0:623b3e042994 40 led3 =1;
jmcallef 0:623b3e042994 41 if (button3.falling()){
jmcallef 0:623b3e042994 42 led3 =!led3; // Prendo el LED color rojo cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido).
jmcallef 0:623b3e042994 43 ++j;
jmcallef 0:623b3e042994 44 } // INCREMENTA POSICION DEL MENU CON BOTON 3
jmcallef 0:623b3e042994 45 if (j==0){
jmcallef 0:623b3e042994 46 lcd.locate(3,0);
jmcallef 0:623b3e042994 47 lcd.printf("%d",sp);
jmcallef 0:623b3e042994 48
jmcallef 0:623b3e042994 49 wait(0.3);
jmcallef 0:623b3e042994 50
jmcallef 0:623b3e042994 51 led1 = 1;
jmcallef 0:623b3e042994 52 if (button1.falling()) {
jmcallef 0:623b3e042994 53 led1 =!led1; // Prendo el LED color azul cada vez que pulso el boton 1 ya que pasa a valer 0 (encendido).
jmcallef 0:623b3e042994 54 ++sp; // Incrementa valor al pulsar el botón.
jmcallef 0:623b3e042994 55 }
jmcallef 0:623b3e042994 56
jmcallef 0:623b3e042994 57
jmcallef 0:623b3e042994 58 if (!button1) { //primer if button1 j=0
jmcallef 0:623b3e042994 59 wait(0.3);
jmcallef 0:623b3e042994 60 while(sp<20){
jmcallef 0:623b3e042994 61 sp=sp+1;
jmcallef 0:623b3e042994 62 lcd.locate(0,0);
jmcallef 0:623b3e042994 63 lcd.printf("Sp %d",sp);
jmcallef 0:623b3e042994 64
jmcallef 0:623b3e042994 65 wait(0.3);
jmcallef 0:623b3e042994 66 if(button1){
jmcallef 0:623b3e042994 67 break;
jmcallef 0:623b3e042994 68 }
jmcallef 0:623b3e042994 69 }
jmcallef 0:623b3e042994 70 }
jmcallef 0:623b3e042994 71
jmcallef 0:623b3e042994 72
jmcallef 0:623b3e042994 73
jmcallef 0:623b3e042994 74
jmcallef 0:623b3e042994 75
jmcallef 0:623b3e042994 76 led2 =1;
jmcallef 0:623b3e042994 77 if (button2.falling()) {
jmcallef 0:623b3e042994 78 lcd.locate(3,0);
jmcallef 0:623b3e042994 79 lcd.printf("%d ");
jmcallef 0:623b3e042994 80 led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido).
jmcallef 0:623b3e042994 81 --sp; // Reduce el valor al pulsar el botón.
jmcallef 0:623b3e042994 82 }
jmcallef 0:623b3e042994 83 if (sp>10000){ // Ponemos un tope incremental en 10.000
jmcallef 0:623b3e042994 84 sp=10000;
jmcallef 0:623b3e042994 85 }
jmcallef 0:623b3e042994 86
jmcallef 0:623b3e042994 87 if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0.
jmcallef 0:623b3e042994 88 sp=0;
jmcallef 0:623b3e042994 89 }
jmcallef 0:623b3e042994 90
jmcallef 0:623b3e042994 91 }
jmcallef 0:623b3e042994 92 if (j==1){
jmcallef 0:623b3e042994 93 lcd.locate(11,0);
jmcallef 0:623b3e042994 94 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 95 wait(0.3);
jmcallef 0:623b3e042994 96 led1 =1;
jmcallef 0:623b3e042994 97 if (button1.falling()) {
jmcallef 0:623b3e042994 98 led1 =!led1;
jmcallef 0:623b3e042994 99 ++kp;
jmcallef 0:623b3e042994 100 }
jmcallef 0:623b3e042994 101 led2 =1;
jmcallef 0:623b3e042994 102 if (button2.falling()) {
jmcallef 0:623b3e042994 103 lcd.locate(11,0);
jmcallef 0:623b3e042994 104 lcd.printf("%d ");
jmcallef 0:623b3e042994 105 led2 =!led2;
jmcallef 0:623b3e042994 106 --kp;
jmcallef 0:623b3e042994 107 }
jmcallef 0:623b3e042994 108 if (kp>10000){
jmcallef 0:623b3e042994 109 kp=10000;
jmcallef 0:623b3e042994 110 lcd.locate(11,0);
jmcallef 0:623b3e042994 111 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 112 }
jmcallef 0:623b3e042994 113
jmcallef 0:623b3e042994 114 if (kp<0){
jmcallef 0:623b3e042994 115 kp=0;
jmcallef 0:623b3e042994 116 lcd.locate(11,0);
jmcallef 0:623b3e042994 117 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 118 }
jmcallef 0:623b3e042994 119 }
jmcallef 0:623b3e042994 120 if (j==2){
jmcallef 0:623b3e042994 121 lcd.locate(3,1);
jmcallef 0:623b3e042994 122 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 123 wait(0.3);
jmcallef 0:623b3e042994 124 led1 =1;
jmcallef 0:623b3e042994 125 if (button1.falling()){
jmcallef 0:623b3e042994 126 led1 =!led1;
jmcallef 0:623b3e042994 127 ++ki;
jmcallef 0:623b3e042994 128 }
jmcallef 0:623b3e042994 129 led2 =1;
jmcallef 0:623b3e042994 130 if (button2.falling()){
jmcallef 0:623b3e042994 131 lcd.locate(3,1);
jmcallef 0:623b3e042994 132 lcd.printf("%d ");
jmcallef 0:623b3e042994 133 led2 =!led2;
jmcallef 0:623b3e042994 134 --ki;
jmcallef 0:623b3e042994 135 }
jmcallef 0:623b3e042994 136 if (ki>10000){
jmcallef 0:623b3e042994 137 ki=10000;
jmcallef 0:623b3e042994 138 lcd.locate(3,1);
jmcallef 0:623b3e042994 139 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 140 }
jmcallef 0:623b3e042994 141
jmcallef 0:623b3e042994 142 if (ki<0){
jmcallef 0:623b3e042994 143 ki=0;
jmcallef 0:623b3e042994 144 lcd.locate(3,1);
jmcallef 0:623b3e042994 145 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 146 }
jmcallef 0:623b3e042994 147 }
jmcallef 0:623b3e042994 148
jmcallef 0:623b3e042994 149 if (j==3){
jmcallef 0:623b3e042994 150 lcd.locate(11,1);
jmcallef 0:623b3e042994 151 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 152 wait(0.3);
jmcallef 0:623b3e042994 153 led1 =1;
jmcallef 0:623b3e042994 154 if (button1.falling()){
jmcallef 0:623b3e042994 155 led1 =!led1;
jmcallef 0:623b3e042994 156 ++kd;
jmcallef 0:623b3e042994 157 }
jmcallef 0:623b3e042994 158 led2 =1;
jmcallef 0:623b3e042994 159 if (button2.falling()){
jmcallef 0:623b3e042994 160 lcd.locate(11,1);
jmcallef 0:623b3e042994 161 lcd.printf("%d ");
jmcallef 0:623b3e042994 162 led2 =!led2;
jmcallef 0:623b3e042994 163 --kd;
jmcallef 0:623b3e042994 164
jmcallef 0:623b3e042994 165
jmcallef 0:623b3e042994 166 }
jmcallef 0:623b3e042994 167 if (kd>10000){
jmcallef 0:623b3e042994 168 kd=10000;
jmcallef 0:623b3e042994 169 lcd.locate(11,1);
jmcallef 0:623b3e042994 170 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 171 }
jmcallef 0:623b3e042994 172
jmcallef 0:623b3e042994 173 if (kd<0){
jmcallef 0:623b3e042994 174 kd=0;
jmcallef 0:623b3e042994 175 lcd.locate(11,1);
jmcallef 0:623b3e042994 176 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 177 }
jmcallef 0:623b3e042994 178 }
jmcallef 0:623b3e042994 179
jmcallef 0:623b3e042994 180 if (j==4){
jmcallef 0:623b3e042994 181 j=0;
jmcallef 0:623b3e042994 182 }
jmcallef 0:623b3e042994 183
jmcallef 0:623b3e042994 184 if (button4.falling()){
jmcallef 0:623b3e042994 185 sp=0;
jmcallef 0:623b3e042994 186 kp=0;
jmcallef 0:623b3e042994 187 ki=0;
jmcallef 0:623b3e042994 188 kd=0;
jmcallef 0:623b3e042994 189 lcd.locate(11,1);
jmcallef 0:623b3e042994 190 lcd.printf("%d ",kd);
jmcallef 0:623b3e042994 191 lcd.locate(3,1);
jmcallef 0:623b3e042994 192 lcd.printf("%d ",ki);
jmcallef 0:623b3e042994 193 lcd.locate(11,0);
jmcallef 0:623b3e042994 194 lcd.printf("%d ",kp);
jmcallef 0:623b3e042994 195 lcd.locate(3,0);
jmcallef 0:623b3e042994 196 lcd.printf("%d ",sp);
jmcallef 0:623b3e042994 197 }
jmcallef 0:623b3e042994 198 }
jmcallef 0:623b3e042994 199 }