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:
Wed Apr 23 16:44:18 2014 +0000
Revision:
1:84592eb27d11
Parent:
0:9aa80672eb3d
Child:
2:8782da14cf8f
Tarea2-Versi?n1

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;
lcorralesc1 0:9aa80672eb3d 17 int main()
lcorralesc1 0:9aa80672eb3d 18 {
lcorralesc1 0:9aa80672eb3d 19 lcd.cls();
lcorralesc1 0:9aa80672eb3d 20 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
lcorralesc1 0:9aa80672eb3d 21 lcd.locate(8,0);
lcorralesc1 0:9aa80672eb3d 22 lcd.printf("kp=%d", kp);
lcorralesc1 0:9aa80672eb3d 23 lcd.locate(0,1);
lcorralesc1 0:9aa80672eb3d 24 lcd.printf("Ki=%d", ki);
lcorralesc1 0:9aa80672eb3d 25 lcd.locate(8,1);
lcorralesc1 0:9aa80672eb3d 26 lcd.printf("Kd=%d", kd);
lcorralesc1 0:9aa80672eb3d 27 lcd.locate(0,0);
lcorralesc1 0:9aa80672eb3d 28 lcd.printf("Sp=%d", sp);
lcorralesc1 0:9aa80672eb3d 29
lcorralesc1 0:9aa80672eb3d 30 while(1)
lcorralesc1 0:9aa80672eb3d 31 {
lcorralesc1 0:9aa80672eb3d 32 if (button1.falling())
juniorACA 1:84592eb27d11 33
juniorACA 1:84592eb27d11 34
juniorACA 1:84592eb27d11 35 { sonido=0.8f;
juniorACA 1:84592eb27d11 36 wait(0.2);
juniorACA 1:84592eb27d11 37 sonido=0.0;
lcorralesc1 0:9aa80672eb3d 38 led1 =!led1;
lcorralesc1 0:9aa80672eb3d 39 if (p==1)
lcorralesc1 0:9aa80672eb3d 40 {
lcorralesc1 0:9aa80672eb3d 41 ++sp;
lcorralesc1 0:9aa80672eb3d 42 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 43 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 44 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 45 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 46 }
lcorralesc1 0:9aa80672eb3d 47 else if (p==2)
lcorralesc1 0:9aa80672eb3d 48 {
lcorralesc1 0:9aa80672eb3d 49 ++kp;
lcorralesc1 0:9aa80672eb3d 50 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 51 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 52 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 53 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 54 }
lcorralesc1 0:9aa80672eb3d 55 else if (p==3)
lcorralesc1 0:9aa80672eb3d 56 {
lcorralesc1 0:9aa80672eb3d 57 ++ki;
lcorralesc1 0:9aa80672eb3d 58 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 59 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 60 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 61 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 62 }
lcorralesc1 0:9aa80672eb3d 63 else if (p==4)
lcorralesc1 0:9aa80672eb3d 64 {
lcorralesc1 0:9aa80672eb3d 65 ++kd;
lcorralesc1 0:9aa80672eb3d 66 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 67 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 68 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 69 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 70 }
lcorralesc1 0:9aa80672eb3d 71 }
lcorralesc1 0:9aa80672eb3d 72 if (button2.falling())
juniorACA 1:84592eb27d11 73 { sonido=0.3f;
juniorACA 1:84592eb27d11 74 wait(0.2);
juniorACA 1:84592eb27d11 75 sonido=0.0;
lcorralesc1 0:9aa80672eb3d 76 led2 =!led2;
lcorralesc1 0:9aa80672eb3d 77 if (p==1)
lcorralesc1 0:9aa80672eb3d 78 {
lcorralesc1 0:9aa80672eb3d 79 if (sp==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 80 {
lcorralesc1 0:9aa80672eb3d 81 }
lcorralesc1 0:9aa80672eb3d 82 else
lcorralesc1 0:9aa80672eb3d 83 {
lcorralesc1 0:9aa80672eb3d 84 --sp;
lcorralesc1 0:9aa80672eb3d 85 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 86 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 87 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 88 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 89 }
lcorralesc1 0:9aa80672eb3d 90 }
lcorralesc1 0:9aa80672eb3d 91 if (p==2)
lcorralesc1 0:9aa80672eb3d 92 {
lcorralesc1 0:9aa80672eb3d 93 if (kp==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 94 {
lcorralesc1 0:9aa80672eb3d 95 }
lcorralesc1 0:9aa80672eb3d 96 else
lcorralesc1 0:9aa80672eb3d 97 {
lcorralesc1 0:9aa80672eb3d 98 --kp;
lcorralesc1 0:9aa80672eb3d 99 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 100 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 101 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 102 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 103 }
lcorralesc1 0:9aa80672eb3d 104 }
lcorralesc1 0:9aa80672eb3d 105 if (p==3)
lcorralesc1 0:9aa80672eb3d 106 {
lcorralesc1 0:9aa80672eb3d 107 if (ki==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 108 {
lcorralesc1 0:9aa80672eb3d 109 }
lcorralesc1 0:9aa80672eb3d 110 else
lcorralesc1 0:9aa80672eb3d 111 {
lcorralesc1 0:9aa80672eb3d 112 --ki;
lcorralesc1 0:9aa80672eb3d 113 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 114 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 115 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 116 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 117 }
lcorralesc1 0:9aa80672eb3d 118 }
lcorralesc1 0:9aa80672eb3d 119 if (p==4)
lcorralesc1 0:9aa80672eb3d 120 {
lcorralesc1 0:9aa80672eb3d 121 if (kd==0) // no mostrar nada
lcorralesc1 0:9aa80672eb3d 122 {
lcorralesc1 0:9aa80672eb3d 123 }
lcorralesc1 0:9aa80672eb3d 124 else
lcorralesc1 0:9aa80672eb3d 125 {
lcorralesc1 0:9aa80672eb3d 126 --kd;
lcorralesc1 0:9aa80672eb3d 127 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 128 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 129 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 130 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 131 }
lcorralesc1 0:9aa80672eb3d 132 }
lcorralesc1 0:9aa80672eb3d 133 }
lcorralesc1 0:9aa80672eb3d 134 if (button3.falling())
juniorACA 1:84592eb27d11 135 { sonido=0.01f;
juniorACA 1:84592eb27d11 136 wait(0.2);
juniorACA 1:84592eb27d11 137 sonido=0.0;
lcorralesc1 0:9aa80672eb3d 138 led3 =!led3;
lcorralesc1 0:9aa80672eb3d 139 if (p==1)
lcorralesc1 0:9aa80672eb3d 140 {
lcorralesc1 0:9aa80672eb3d 141 ++p;
lcorralesc1 0:9aa80672eb3d 142 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 143 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 144
lcorralesc1 0:9aa80672eb3d 145
lcorralesc1 0:9aa80672eb3d 146 }
lcorralesc1 0:9aa80672eb3d 147 else if (p==2)
lcorralesc1 0:9aa80672eb3d 148 {
lcorralesc1 0:9aa80672eb3d 149 ++p;
lcorralesc1 0:9aa80672eb3d 150 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 151 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 152 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 153
lcorralesc1 0:9aa80672eb3d 154 }
lcorralesc1 0:9aa80672eb3d 155 else if (p==3)
lcorralesc1 0:9aa80672eb3d 156 {
lcorralesc1 0:9aa80672eb3d 157 ++p;
lcorralesc1 0:9aa80672eb3d 158 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 159 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 160
lcorralesc1 0:9aa80672eb3d 161
lcorralesc1 0:9aa80672eb3d 162 }
lcorralesc1 0:9aa80672eb3d 163 else if (p==4)
lcorralesc1 0:9aa80672eb3d 164 {
lcorralesc1 0:9aa80672eb3d 165 p=1;
lcorralesc1 0:9aa80672eb3d 166 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 167 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 168
lcorralesc1 0:9aa80672eb3d 169
lcorralesc1 0:9aa80672eb3d 170 }
lcorralesc1 0:9aa80672eb3d 171 }
lcorralesc1 0:9aa80672eb3d 172 }
lcorralesc1 0:9aa80672eb3d 173 }