Tarea2-Versión1. Uso de 3 botones para cambiar los parámetros de un PID tal que al presionar cualquiera de los 3 botones se escucha un sonido con distinta frecuencia

Dependencies:   Debounced TextLCD mbed

Fork of Tarea2-V1 by junior andres calle acevedo

Committer:
juniorACA
Date:
Mon May 12 05:28:21 2014 +0000
Revision:
2:8782da14cf8f
Parent:
1:84592eb27d11
Tarea2-V1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lcorralesc1 0:9aa80672eb3d 1 #include "mbed.h"
lcorralesc1 0:9aa80672eb3d 2 #include "DebouncedIn.h"
lcorralesc1 0:9aa80672eb3d 3 #include "TextLCD.h"
lcorralesc1 0:9aa80672eb3d 4
lcorralesc1 0:9aa80672eb3d 5 AnalogIn Vin(PTC2);
lcorralesc1 0:9aa80672eb3d 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
juniorACA 1:84592eb27d11 7 PwmOut sonido(PTA12);
lcorralesc1 0:9aa80672eb3d 8
lcorralesc1 0:9aa80672eb3d 9 DigitalOut led1(LED1);
lcorralesc1 0:9aa80672eb3d 10 DigitalOut led2(LED2);
lcorralesc1 0:9aa80672eb3d 11 DigitalOut led3(LED3);
lcorralesc1 0:9aa80672eb3d 12 DebouncedIn button1(PTC12);
lcorralesc1 0:9aa80672eb3d 13 DebouncedIn button2(PTC13);
lcorralesc1 0:9aa80672eb3d 14 DebouncedIn button3(PTC16);
lcorralesc1 0:9aa80672eb3d 15 int C1=0x0F;
lcorralesc1 0:9aa80672eb3d 16 int sp=0,kp=0,kd=0,ki=0,p=1;
juniorACA 2:8782da14cf8f 17 float Dd=10;
juniorACA 2:8782da14cf8f 18 float pp=30;
juniorACA 2:8782da14cf8f 19 float Fi;
juniorACA 2:8782da14cf8f 20
lcorralesc1 0:9aa80672eb3d 21 int main()
lcorralesc1 0:9aa80672eb3d 22 {
lcorralesc1 0:9aa80672eb3d 23 lcd.cls();
lcorralesc1 0:9aa80672eb3d 24 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
lcorralesc1 0:9aa80672eb3d 25 lcd.locate(8,0);
lcorralesc1 0:9aa80672eb3d 26 lcd.printf("kp=%d", kp);
lcorralesc1 0:9aa80672eb3d 27 lcd.locate(0,1);
lcorralesc1 0:9aa80672eb3d 28 lcd.printf("Ki=%d", ki);
lcorralesc1 0:9aa80672eb3d 29 lcd.locate(8,1);
lcorralesc1 0:9aa80672eb3d 30 lcd.printf("Kd=%d", kd);
lcorralesc1 0:9aa80672eb3d 31 lcd.locate(0,0);
lcorralesc1 0:9aa80672eb3d 32 lcd.printf("Sp=%d", sp);
lcorralesc1 0:9aa80672eb3d 33
lcorralesc1 0:9aa80672eb3d 34 while(1)
juniorACA 2:8782da14cf8f 35 {Fi=(Dd)*100;
juniorACA 2:8782da14cf8f 36 pp=(1/Fi);
juniorACA 2:8782da14cf8f 37 sonido.period(pp);
lcorralesc1 0:9aa80672eb3d 38 if (button1.falling())
juniorACA 2:8782da14cf8f 39 {
juniorACA 2:8782da14cf8f 40 sonido.write(0.1);
juniorACA 2:8782da14cf8f 41 wait(0.1);
juniorACA 2:8782da14cf8f 42 sonido.write(0);
juniorACA 2:8782da14cf8f 43 wait(0.1);
lcorralesc1 0:9aa80672eb3d 44 led1 =!led1;
lcorralesc1 0:9aa80672eb3d 45 if (p==1)
lcorralesc1 0:9aa80672eb3d 46 {
lcorralesc1 0:9aa80672eb3d 47 ++sp;
lcorralesc1 0:9aa80672eb3d 48 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 49 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 50 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 51 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 52 }
lcorralesc1 0:9aa80672eb3d 53 else if (p==2)
lcorralesc1 0:9aa80672eb3d 54 {
lcorralesc1 0:9aa80672eb3d 55 ++kp;
lcorralesc1 0:9aa80672eb3d 56 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 57 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 58 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 59 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 60 }
lcorralesc1 0:9aa80672eb3d 61 else if (p==3)
lcorralesc1 0:9aa80672eb3d 62 {
lcorralesc1 0:9aa80672eb3d 63 ++ki;
lcorralesc1 0:9aa80672eb3d 64 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 65 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 66 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 67 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 68 }
lcorralesc1 0:9aa80672eb3d 69 else if (p==4)
lcorralesc1 0:9aa80672eb3d 70 {
lcorralesc1 0:9aa80672eb3d 71 ++kd;
lcorralesc1 0:9aa80672eb3d 72 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 73 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 74 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 75 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 76 }
lcorralesc1 0:9aa80672eb3d 77 }
lcorralesc1 0:9aa80672eb3d 78 if (button2.falling())
juniorACA 2:8782da14cf8f 79 { sonido.write(0.5);
juniorACA 2:8782da14cf8f 80 wait(0.1);
juniorACA 2:8782da14cf8f 81 sonido.write(0.0);
juniorACA 2:8782da14cf8f 82 wait(0.1);
lcorralesc1 0:9aa80672eb3d 83 led2 =!led2;
lcorralesc1 0:9aa80672eb3d 84 if (p==1)
lcorralesc1 0:9aa80672eb3d 85 {
lcorralesc1 0:9aa80672eb3d 86 if (sp==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 87 {
lcorralesc1 0:9aa80672eb3d 88 }
lcorralesc1 0:9aa80672eb3d 89 else
lcorralesc1 0:9aa80672eb3d 90 {
lcorralesc1 0:9aa80672eb3d 91 --sp;
lcorralesc1 0:9aa80672eb3d 92 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 93 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 94 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 95 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 96 }
lcorralesc1 0:9aa80672eb3d 97 }
lcorralesc1 0:9aa80672eb3d 98 if (p==2)
lcorralesc1 0:9aa80672eb3d 99 {
lcorralesc1 0:9aa80672eb3d 100 if (kp==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 101 {
lcorralesc1 0:9aa80672eb3d 102 }
lcorralesc1 0:9aa80672eb3d 103 else
lcorralesc1 0:9aa80672eb3d 104 {
lcorralesc1 0:9aa80672eb3d 105 --kp;
lcorralesc1 0:9aa80672eb3d 106 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 107 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 108 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 109 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 110 }
lcorralesc1 0:9aa80672eb3d 111 }
lcorralesc1 0:9aa80672eb3d 112 if (p==3)
lcorralesc1 0:9aa80672eb3d 113 {
lcorralesc1 0:9aa80672eb3d 114 if (ki==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 115 {
lcorralesc1 0:9aa80672eb3d 116 }
lcorralesc1 0:9aa80672eb3d 117 else
lcorralesc1 0:9aa80672eb3d 118 {
lcorralesc1 0:9aa80672eb3d 119 --ki;
lcorralesc1 0:9aa80672eb3d 120 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 121 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 122 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 123 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 124 }
lcorralesc1 0:9aa80672eb3d 125 }
lcorralesc1 0:9aa80672eb3d 126 if (p==4)
lcorralesc1 0:9aa80672eb3d 127 {
lcorralesc1 0:9aa80672eb3d 128 if (kd==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 129 {
lcorralesc1 0:9aa80672eb3d 130 }
lcorralesc1 0:9aa80672eb3d 131 else
lcorralesc1 0:9aa80672eb3d 132 {
lcorralesc1 0:9aa80672eb3d 133 --kd;
lcorralesc1 0:9aa80672eb3d 134 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 135 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 136 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 137 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 138 }
lcorralesc1 0:9aa80672eb3d 139 }
lcorralesc1 0:9aa80672eb3d 140 }
lcorralesc1 0:9aa80672eb3d 141 if (button3.falling())
juniorACA 2:8782da14cf8f 142 { sonido.write(0.8);
juniorACA 2:8782da14cf8f 143 wait(0.1);
juniorACA 2:8782da14cf8f 144 sonido.write(0.0);
juniorACA 2:8782da14cf8f 145 wait(0.1);
lcorralesc1 0:9aa80672eb3d 146 led3 =!led3;
lcorralesc1 0:9aa80672eb3d 147 if (p==1)
lcorralesc1 0:9aa80672eb3d 148 {
lcorralesc1 0:9aa80672eb3d 149 ++p;
lcorralesc1 0:9aa80672eb3d 150 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 151 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 152
lcorralesc1 0:9aa80672eb3d 153
lcorralesc1 0:9aa80672eb3d 154 }
lcorralesc1 0:9aa80672eb3d 155 else if (p==2)
lcorralesc1 0:9aa80672eb3d 156 {
lcorralesc1 0:9aa80672eb3d 157 ++p;
lcorralesc1 0:9aa80672eb3d 158 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 159 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 160 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 161
lcorralesc1 0:9aa80672eb3d 162 }
lcorralesc1 0:9aa80672eb3d 163 else if (p==3)
lcorralesc1 0:9aa80672eb3d 164 {
lcorralesc1 0:9aa80672eb3d 165 ++p;
lcorralesc1 0:9aa80672eb3d 166 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 167 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 168
lcorralesc1 0:9aa80672eb3d 169
lcorralesc1 0:9aa80672eb3d 170 }
lcorralesc1 0:9aa80672eb3d 171 else if (p==4)
lcorralesc1 0:9aa80672eb3d 172 {
lcorralesc1 0:9aa80672eb3d 173 p=1;
lcorralesc1 0:9aa80672eb3d 174 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 175 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 176
lcorralesc1 0:9aa80672eb3d 177
lcorralesc1 0:9aa80672eb3d 178 }
lcorralesc1 0:9aa80672eb3d 179 }
lcorralesc1 0:9aa80672eb3d 180 }
lcorralesc1 0:9aa80672eb3d 181 }