Se genera un sonido con diferente tono al pulsar cada uno de los tres botones.

Dependencies:   Debounced TextLCD mbed

Fork of pid_teclas by Gustavo Ramirez

Committer:
lopjohn_26
Date:
Wed Apr 02 23:39:29 2014 +0000
Revision:
1:933ebb48e31d
Parent:
0:9aa80672eb3d
sonido al oprimir pulsadores.

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
lcorralesc1 0:9aa80672eb3d 7
lcorralesc1 0:9aa80672eb3d 8 DigitalOut led1(LED1);
lcorralesc1 0:9aa80672eb3d 9 DigitalOut led2(LED2);
lcorralesc1 0:9aa80672eb3d 10 DigitalOut led3(LED3);
lcorralesc1 0:9aa80672eb3d 11 DebouncedIn button1(PTC12);
lcorralesc1 0:9aa80672eb3d 12 DebouncedIn button2(PTC13);
lcorralesc1 0:9aa80672eb3d 13 DebouncedIn button3(PTC16);
lopjohn_26 1:933ebb48e31d 14 PwmOut sound(PTD4);
lopjohn_26 1:933ebb48e31d 15
lcorralesc1 0:9aa80672eb3d 16 int C1=0x0F;
lcorralesc1 0:9aa80672eb3d 17 int sp=0,kp=0,kd=0,ki=0,p=1;
lcorralesc1 0:9aa80672eb3d 18 int main()
lcorralesc1 0:9aa80672eb3d 19 {
lcorralesc1 0:9aa80672eb3d 20 lcd.cls();
lcorralesc1 0:9aa80672eb3d 21 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
lcorralesc1 0:9aa80672eb3d 22 lcd.locate(8,0);
lcorralesc1 0:9aa80672eb3d 23 lcd.printf("kp=%d", kp);
lcorralesc1 0:9aa80672eb3d 24 lcd.locate(0,1);
lcorralesc1 0:9aa80672eb3d 25 lcd.printf("Ki=%d", ki);
lcorralesc1 0:9aa80672eb3d 26 lcd.locate(8,1);
lcorralesc1 0:9aa80672eb3d 27 lcd.printf("Kd=%d", kd);
lcorralesc1 0:9aa80672eb3d 28 lcd.locate(0,0);
lcorralesc1 0:9aa80672eb3d 29 lcd.printf("Sp=%d", sp);
lcorralesc1 0:9aa80672eb3d 30
lcorralesc1 0:9aa80672eb3d 31 while(1)
lcorralesc1 0:9aa80672eb3d 32 {
lopjohn_26 1:933ebb48e31d 33
lcorralesc1 0:9aa80672eb3d 34 if (button1.falling())
lcorralesc1 0:9aa80672eb3d 35 {
lopjohn_26 1:933ebb48e31d 36
lcorralesc1 0:9aa80672eb3d 37 led1 =!led1;
lopjohn_26 1:933ebb48e31d 38
lopjohn_26 1:933ebb48e31d 39 sound=0.1f;
lopjohn_26 1:933ebb48e31d 40 wait(0.3);
lopjohn_26 1:933ebb48e31d 41 sound=0;
lopjohn_26 1:933ebb48e31d 42
lcorralesc1 0:9aa80672eb3d 43 if (p==1)
lcorralesc1 0:9aa80672eb3d 44 {
lcorralesc1 0:9aa80672eb3d 45 ++sp;
lcorralesc1 0:9aa80672eb3d 46 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 47 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 48 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 49 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 50 }
lcorralesc1 0:9aa80672eb3d 51 else if (p==2)
lcorralesc1 0:9aa80672eb3d 52 {
lcorralesc1 0:9aa80672eb3d 53 ++kp;
lcorralesc1 0:9aa80672eb3d 54 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 55 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 56 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 57 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 58 }
lcorralesc1 0:9aa80672eb3d 59 else if (p==3)
lcorralesc1 0:9aa80672eb3d 60 {
lcorralesc1 0:9aa80672eb3d 61 ++ki;
lcorralesc1 0:9aa80672eb3d 62 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 63 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 64 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 65 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 66 }
lcorralesc1 0:9aa80672eb3d 67 else if (p==4)
lcorralesc1 0:9aa80672eb3d 68 {
lcorralesc1 0:9aa80672eb3d 69 ++kd;
lcorralesc1 0:9aa80672eb3d 70 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 71 lcd.printf(" ");
lcorralesc1 0:9aa80672eb3d 72 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 73 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 74 }
lcorralesc1 0:9aa80672eb3d 75 }
lopjohn_26 1:933ebb48e31d 76
lcorralesc1 0:9aa80672eb3d 77 if (button2.falling())
lcorralesc1 0:9aa80672eb3d 78 {
lcorralesc1 0:9aa80672eb3d 79 led2 =!led2;
lopjohn_26 1:933ebb48e31d 80 sound=0.5f;
lopjohn_26 1:933ebb48e31d 81 wait(0.3);
lopjohn_26 1:933ebb48e31d 82 sound=0;
lopjohn_26 1:933ebb48e31d 83
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 }
lopjohn_26 1:933ebb48e31d 141
lcorralesc1 0:9aa80672eb3d 142 if (button3.falling())
lcorralesc1 0:9aa80672eb3d 143 {
lcorralesc1 0:9aa80672eb3d 144 led3 =!led3;
lopjohn_26 1:933ebb48e31d 145 sound=1.0f;
lopjohn_26 1:933ebb48e31d 146 wait(0.3);
lopjohn_26 1:933ebb48e31d 147 sound=0;
lopjohn_26 1:933ebb48e31d 148
lcorralesc1 0:9aa80672eb3d 149 if (p==1)
lcorralesc1 0:9aa80672eb3d 150 {
lcorralesc1 0:9aa80672eb3d 151 ++p;
lcorralesc1 0:9aa80672eb3d 152 lcd.locate(11,0);
lcorralesc1 0:9aa80672eb3d 153 lcd.printf("%d", kp);
lcorralesc1 0:9aa80672eb3d 154
lcorralesc1 0:9aa80672eb3d 155
lcorralesc1 0:9aa80672eb3d 156 }
lcorralesc1 0:9aa80672eb3d 157 else if (p==2)
lcorralesc1 0:9aa80672eb3d 158 {
lcorralesc1 0:9aa80672eb3d 159 ++p;
lcorralesc1 0:9aa80672eb3d 160 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 161 lcd.printf("%d", ki);
lcorralesc1 0:9aa80672eb3d 162 lcd.locate(3,1);
lcorralesc1 0:9aa80672eb3d 163
lcorralesc1 0:9aa80672eb3d 164 }
lcorralesc1 0:9aa80672eb3d 165 else if (p==3)
lcorralesc1 0:9aa80672eb3d 166 {
lcorralesc1 0:9aa80672eb3d 167 ++p;
lcorralesc1 0:9aa80672eb3d 168 lcd.locate(11,1);
lcorralesc1 0:9aa80672eb3d 169 lcd.printf("%d", kd);
lcorralesc1 0:9aa80672eb3d 170
lcorralesc1 0:9aa80672eb3d 171
lcorralesc1 0:9aa80672eb3d 172 }
lcorralesc1 0:9aa80672eb3d 173 else if (p==4)
lcorralesc1 0:9aa80672eb3d 174 {
lcorralesc1 0:9aa80672eb3d 175 p=1;
lcorralesc1 0:9aa80672eb3d 176 lcd.locate(3,0);
lcorralesc1 0:9aa80672eb3d 177 lcd.printf("%d", sp);
lcorralesc1 0:9aa80672eb3d 178
lcorralesc1 0:9aa80672eb3d 179
lcorralesc1 0:9aa80672eb3d 180 }
lcorralesc1 0:9aa80672eb3d 181 }
lcorralesc1 0:9aa80672eb3d 182 }
lcorralesc1 0:9aa80672eb3d 183 }