Dependencies:   mbed TextLCD

Committer:
ligeiro13
Date:
Mon May 20 22:06:52 2019 +0000
Revision:
0:5bb13ee7d146
Child:
1:47dce2cc8eed
aula 25

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ligeiro13 0:5bb13ee7d146 1 #include "mbed.h"
ligeiro13 0:5bb13ee7d146 2 #include "TextLCD.h"
ligeiro13 0:5bb13ee7d146 3
ligeiro13 0:5bb13ee7d146 4 BusOut saida (D4,D5,D6,D7,D8,D9,D10,D11);
ligeiro13 0:5bb13ee7d146 5 Serial pc(USBTX , USBRX);// band rate é de 1152000 na Serial Port do Tera Term
ligeiro13 0:5bb13ee7d146 6 TextLCD lcd(PC_9, PC_8, PC_10, PC_12, PA_13, PA_14, TextLCD::LCD20x4); // rs, e , d4-d7
ligeiro13 0:5bb13ee7d146 7 DigitalIn botao_enter(PA_15);
ligeiro13 0:5bb13ee7d146 8 DigitalIn botao_ciclo(PB_7);
ligeiro13 0:5bb13ee7d146 9 int lista[] = {15,15,14,13,12,11,10,8,7,5,4,2,1,1,0,0};
ligeiro13 0:5bb13ee7d146 10 //IHM
ligeiro13 0:5bb13ee7d146 11 int menu = 0;
ligeiro13 0:5bb13ee7d146 12 int linha = 1;
ligeiro13 0:5bb13ee7d146 13 int freq[] = {10,500};
ligeiro13 0:5bb13ee7d146 14 bool troca_freq = 0 ;
ligeiro13 0:5bb13ee7d146 15 int t; // tempo de espera
ligeiro13 0:5bb13ee7d146 16 void senoidal(int frequencia)
ligeiro13 0:5bb13ee7d146 17 {
ligeiro13 0:5bb13ee7d146 18 t = (1/(16*frequencia));
ligeiro13 0:5bb13ee7d146 19
ligeiro13 0:5bb13ee7d146 20 for (int i = 0 ; i < 16 ; i++)
ligeiro13 0:5bb13ee7d146 21 {
ligeiro13 0:5bb13ee7d146 22
ligeiro13 0:5bb13ee7d146 23 saida = lista[i];
ligeiro13 0:5bb13ee7d146 24 wait(t);
ligeiro13 0:5bb13ee7d146 25 if ( i ==15)
ligeiro13 0:5bb13ee7d146 26 { for ( int i = 15; i >= 0; i--)
ligeiro13 0:5bb13ee7d146 27 {
ligeiro13 0:5bb13ee7d146 28 saida = lista[i];
ligeiro13 0:5bb13ee7d146 29 wait(t);
ligeiro13 0:5bb13ee7d146 30 }
ligeiro13 0:5bb13ee7d146 31 }
ligeiro13 0:5bb13ee7d146 32 }
ligeiro13 0:5bb13ee7d146 33 }
ligeiro13 0:5bb13ee7d146 34 void triangular(int frequencia)
ligeiro13 0:5bb13ee7d146 35 { int k = 0;
ligeiro13 0:5bb13ee7d146 36 if (k == 0)
ligeiro13 0:5bb13ee7d146 37 t = (1/(16*frequencia));
ligeiro13 0:5bb13ee7d146 38 {
ligeiro13 0:5bb13ee7d146 39 for (int i = 0; i <= 15; i++)
ligeiro13 0:5bb13ee7d146 40 {
ligeiro13 0:5bb13ee7d146 41 saida = i;
ligeiro13 0:5bb13ee7d146 42 wait(t/2);
ligeiro13 0:5bb13ee7d146 43 if (i ==15)
ligeiro13 0:5bb13ee7d146 44 {
ligeiro13 0:5bb13ee7d146 45 k = 1;
ligeiro13 0:5bb13ee7d146 46 }
ligeiro13 0:5bb13ee7d146 47 }
ligeiro13 0:5bb13ee7d146 48 }
ligeiro13 0:5bb13ee7d146 49
ligeiro13 0:5bb13ee7d146 50 if (k == 1)
ligeiro13 0:5bb13ee7d146 51 {
ligeiro13 0:5bb13ee7d146 52 for (int i = 15; i >= 0; i--)
ligeiro13 0:5bb13ee7d146 53 {
ligeiro13 0:5bb13ee7d146 54 saida = i;
ligeiro13 0:5bb13ee7d146 55 wait(t/2);
ligeiro13 0:5bb13ee7d146 56 if (i == 0)
ligeiro13 0:5bb13ee7d146 57 {
ligeiro13 0:5bb13ee7d146 58 k = 0;
ligeiro13 0:5bb13ee7d146 59 }
ligeiro13 0:5bb13ee7d146 60 }
ligeiro13 0:5bb13ee7d146 61 }
ligeiro13 0:5bb13ee7d146 62 }
ligeiro13 0:5bb13ee7d146 63 void quadrado(int frequencia)
ligeiro13 0:5bb13ee7d146 64 {
ligeiro13 0:5bb13ee7d146 65 t = (1/(16*frequencia));
ligeiro13 0:5bb13ee7d146 66 saida = 15;
ligeiro13 0:5bb13ee7d146 67 wait(t);
ligeiro13 0:5bb13ee7d146 68 saida = 0;
ligeiro13 0:5bb13ee7d146 69 wait(t);
ligeiro13 0:5bb13ee7d146 70
ligeiro13 0:5bb13ee7d146 71 }
ligeiro13 0:5bb13ee7d146 72 int main()
ligeiro13 0:5bb13ee7d146 73 {
ligeiro13 0:5bb13ee7d146 74 while(1)
ligeiro13 0:5bb13ee7d146 75 {
ligeiro13 0:5bb13ee7d146 76 //triangular();
ligeiro13 0:5bb13ee7d146 77 //senoidal();
ligeiro13 0:5bb13ee7d146 78 //quadrado(freq[0]);
ligeiro13 0:5bb13ee7d146 79 pc.baud(115200);
ligeiro13 0:5bb13ee7d146 80 //------------------------------------------------------------------------------Menu = 0 tela inicial------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 81 if (menu == 0 )
ligeiro13 0:5bb13ee7d146 82 {
ligeiro13 0:5bb13ee7d146 83 lcd.cls();
ligeiro13 0:5bb13ee7d146 84 saida = 0;//Não emite sinal
ligeiro13 0:5bb13ee7d146 85 lcd.printf("Gerador de Ondas \n");
ligeiro13 0:5bb13ee7d146 86 lcd.printf(" Triangular\n");
ligeiro13 0:5bb13ee7d146 87 lcd.printf(" Senoidal\n");
ligeiro13 0:5bb13ee7d146 88 lcd.printf(" Quadrado\n");
ligeiro13 0:5bb13ee7d146 89 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 90 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 91 wait(0.2);
ligeiro13 0:5bb13ee7d146 92 //botao_cima.fall(&cima_cursor);
ligeiro13 0:5bb13ee7d146 93 menu = -1;
ligeiro13 0:5bb13ee7d146 94 }// if menu = 1
ligeiro13 0:5bb13ee7d146 95 //------------------------------------------------------------------------------Botao Ciclo------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 96 if (botao_ciclo== 0)
ligeiro13 0:5bb13ee7d146 97 {
ligeiro13 0:5bb13ee7d146 98 pc.printf(" linha=%i menu=%i\r\n",linha, menu);
ligeiro13 0:5bb13ee7d146 99 if (menu == -1 )
ligeiro13 0:5bb13ee7d146 100 {
ligeiro13 0:5bb13ee7d146 101 linha++;
ligeiro13 0:5bb13ee7d146 102 if (linha == 4)
ligeiro13 0:5bb13ee7d146 103 {
ligeiro13 0:5bb13ee7d146 104 linha =1;
ligeiro13 0:5bb13ee7d146 105 lcd.locate(0,3);
ligeiro13 0:5bb13ee7d146 106 lcd.putc(' ');
ligeiro13 0:5bb13ee7d146 107 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 108 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 109 }
ligeiro13 0:5bb13ee7d146 110 if (linha < 4 and linha > 1)
ligeiro13 0:5bb13ee7d146 111 {
ligeiro13 0:5bb13ee7d146 112 lcd.locate(0,linha-1);
ligeiro13 0:5bb13ee7d146 113 lcd.putc(' ');
ligeiro13 0:5bb13ee7d146 114 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 115 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 116 }
ligeiro13 0:5bb13ee7d146 117 wait(0.2);
ligeiro13 0:5bb13ee7d146 118 menu = -1;
ligeiro13 0:5bb13ee7d146 119 }
ligeiro13 0:5bb13ee7d146 120 if (menu == -2 or menu == -3 or menu == -4)
ligeiro13 0:5bb13ee7d146 121 {
ligeiro13 0:5bb13ee7d146 122 linha++;
ligeiro13 0:5bb13ee7d146 123 if (linha == 4)
ligeiro13 0:5bb13ee7d146 124 {
ligeiro13 0:5bb13ee7d146 125 linha =1;
ligeiro13 0:5bb13ee7d146 126 lcd.locate(0,3);
ligeiro13 0:5bb13ee7d146 127 lcd.putc(' ');
ligeiro13 0:5bb13ee7d146 128 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 129 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 130 }
ligeiro13 0:5bb13ee7d146 131 if (linha < 4 and linha > 1)
ligeiro13 0:5bb13ee7d146 132 {
ligeiro13 0:5bb13ee7d146 133 lcd.locate(0,linha-1);
ligeiro13 0:5bb13ee7d146 134 lcd.putc(' ');
ligeiro13 0:5bb13ee7d146 135 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 136 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 137 }
ligeiro13 0:5bb13ee7d146 138 wait(0.2);
ligeiro13 0:5bb13ee7d146 139 //menu = -2;
ligeiro13 0:5bb13ee7d146 140 }
ligeiro13 0:5bb13ee7d146 141 }
ligeiro13 0:5bb13ee7d146 142 //------------------------------------------------------------------------------Botao Enter------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 143 if (botao_enter == 0)
ligeiro13 0:5bb13ee7d146 144 {
ligeiro13 0:5bb13ee7d146 145 pc.printf(" linha=%i menu=%i\r\n",linha, menu);
ligeiro13 0:5bb13ee7d146 146 if (menu== -1)
ligeiro13 0:5bb13ee7d146 147 {
ligeiro13 0:5bb13ee7d146 148 wait(0.2);
ligeiro13 0:5bb13ee7d146 149 if (linha == 1)
ligeiro13 0:5bb13ee7d146 150 {
ligeiro13 0:5bb13ee7d146 151 menu = 1;// menu para a triangular
ligeiro13 0:5bb13ee7d146 152 }
ligeiro13 0:5bb13ee7d146 153 if (linha == 2)
ligeiro13 0:5bb13ee7d146 154 {
ligeiro13 0:5bb13ee7d146 155 menu = 2;// menu para a triangular
ligeiro13 0:5bb13ee7d146 156 }
ligeiro13 0:5bb13ee7d146 157 if (linha == 3)
ligeiro13 0:5bb13ee7d146 158 {
ligeiro13 0:5bb13ee7d146 159 menu = 3;// menu para a triangular
ligeiro13 0:5bb13ee7d146 160 }
ligeiro13 0:5bb13ee7d146 161 }
ligeiro13 0:5bb13ee7d146 162 if (menu== -2)//triangular
ligeiro13 0:5bb13ee7d146 163 {
ligeiro13 0:5bb13ee7d146 164
ligeiro13 0:5bb13ee7d146 165 if (linha == 1)
ligeiro13 0:5bb13ee7d146 166 {
ligeiro13 0:5bb13ee7d146 167 troca_freq= !troca_freq;
ligeiro13 0:5bb13ee7d146 168 lcd.cls();
ligeiro13 0:5bb13ee7d146 169 lcd.printf(" Triangular \n");
ligeiro13 0:5bb13ee7d146 170 lcd.printf(" Freq: %d Hz\n", freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 171 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 172 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 173 linha = 1;
ligeiro13 0:5bb13ee7d146 174 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 175 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 176 wait(0.2);
ligeiro13 0:5bb13ee7d146 177 menu = -2;
ligeiro13 0:5bb13ee7d146 178 }
ligeiro13 0:5bb13ee7d146 179 if (linha == 3)
ligeiro13 0:5bb13ee7d146 180 {
ligeiro13 0:5bb13ee7d146 181 menu = 0;
ligeiro13 0:5bb13ee7d146 182 }
ligeiro13 0:5bb13ee7d146 183 if (linha == 2)
ligeiro13 0:5bb13ee7d146 184 {
ligeiro13 0:5bb13ee7d146 185
ligeiro13 0:5bb13ee7d146 186 while(botao_ciclo == 1)
ligeiro13 0:5bb13ee7d146 187 {
ligeiro13 0:5bb13ee7d146 188 triangular(freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 189 }
ligeiro13 0:5bb13ee7d146 190 }
ligeiro13 0:5bb13ee7d146 191 }
ligeiro13 0:5bb13ee7d146 192 if (menu== -3)//senoidal
ligeiro13 0:5bb13ee7d146 193 {
ligeiro13 0:5bb13ee7d146 194
ligeiro13 0:5bb13ee7d146 195 if (linha == 1)
ligeiro13 0:5bb13ee7d146 196 {
ligeiro13 0:5bb13ee7d146 197 troca_freq= !troca_freq;
ligeiro13 0:5bb13ee7d146 198 lcd.cls();
ligeiro13 0:5bb13ee7d146 199 lcd.printf(" Senoidal \n");
ligeiro13 0:5bb13ee7d146 200 lcd.printf(" Freq: %d Hz\n", freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 201 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 202 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 203 linha = 1;
ligeiro13 0:5bb13ee7d146 204 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 205 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 206 wait(0.2);
ligeiro13 0:5bb13ee7d146 207 menu = -3;
ligeiro13 0:5bb13ee7d146 208 }
ligeiro13 0:5bb13ee7d146 209 if (linha == 3)
ligeiro13 0:5bb13ee7d146 210 {
ligeiro13 0:5bb13ee7d146 211 menu = 0;
ligeiro13 0:5bb13ee7d146 212 }
ligeiro13 0:5bb13ee7d146 213 if (linha == 2)
ligeiro13 0:5bb13ee7d146 214 {
ligeiro13 0:5bb13ee7d146 215 pc.printf("%d\r\n",freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 216 while(botao_ciclo == 1)
ligeiro13 0:5bb13ee7d146 217 {
ligeiro13 0:5bb13ee7d146 218 senoidal(freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 219 }
ligeiro13 0:5bb13ee7d146 220 }
ligeiro13 0:5bb13ee7d146 221 }
ligeiro13 0:5bb13ee7d146 222 if (menu== -4)//quadrado
ligeiro13 0:5bb13ee7d146 223 {
ligeiro13 0:5bb13ee7d146 224
ligeiro13 0:5bb13ee7d146 225 if (linha == 1)
ligeiro13 0:5bb13ee7d146 226 {
ligeiro13 0:5bb13ee7d146 227 troca_freq= !troca_freq;
ligeiro13 0:5bb13ee7d146 228 lcd.cls();
ligeiro13 0:5bb13ee7d146 229 lcd.printf(" Quadrado \n");
ligeiro13 0:5bb13ee7d146 230 lcd.printf(" Freq: %d Hz\n", freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 231 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 232 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 233 linha = 1;
ligeiro13 0:5bb13ee7d146 234 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 235 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 236 wait(0.2);
ligeiro13 0:5bb13ee7d146 237 menu = -4;
ligeiro13 0:5bb13ee7d146 238 }
ligeiro13 0:5bb13ee7d146 239 if (linha == 3)
ligeiro13 0:5bb13ee7d146 240 {
ligeiro13 0:5bb13ee7d146 241 menu = 0;
ligeiro13 0:5bb13ee7d146 242 }
ligeiro13 0:5bb13ee7d146 243 if (linha == 2)
ligeiro13 0:5bb13ee7d146 244 {
ligeiro13 0:5bb13ee7d146 245
ligeiro13 0:5bb13ee7d146 246 while(botao_ciclo == 1)
ligeiro13 0:5bb13ee7d146 247 {
ligeiro13 0:5bb13ee7d146 248 quadrado(freq[troca_freq]);
ligeiro13 0:5bb13ee7d146 249 }
ligeiro13 0:5bb13ee7d146 250 }
ligeiro13 0:5bb13ee7d146 251 }
ligeiro13 0:5bb13ee7d146 252 }
ligeiro13 0:5bb13ee7d146 253 //------------------------------------------------------------------------------ menu =1 menu tragular------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 254 if (menu == 1)
ligeiro13 0:5bb13ee7d146 255 { lcd.cls();
ligeiro13 0:5bb13ee7d146 256 lcd.printf(" Triangular \n");
ligeiro13 0:5bb13ee7d146 257 lcd.printf(" Freq: %d Hz\n", freq[0]);
ligeiro13 0:5bb13ee7d146 258 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 259 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 260 linha = 1;
ligeiro13 0:5bb13ee7d146 261 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 262 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 263 menu = -2;
ligeiro13 0:5bb13ee7d146 264 wait(0.2);
ligeiro13 0:5bb13ee7d146 265 }
ligeiro13 0:5bb13ee7d146 266 //------------------------------------------------------------------------------ menu =2 menu Senoidal------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 267 if (menu == 2)
ligeiro13 0:5bb13ee7d146 268 { lcd.cls();
ligeiro13 0:5bb13ee7d146 269 lcd.printf(" Senoidal \n");
ligeiro13 0:5bb13ee7d146 270 lcd.printf(" Freq: %d Hz\n", freq[0]);
ligeiro13 0:5bb13ee7d146 271 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 272 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 273 linha = 1;
ligeiro13 0:5bb13ee7d146 274 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 275 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 276 menu = -3;
ligeiro13 0:5bb13ee7d146 277 wait(0.2);
ligeiro13 0:5bb13ee7d146 278 }
ligeiro13 0:5bb13ee7d146 279 //------------------------------------------------------------------------------ menu =3 menu Quadrado------------------------------------------------------------------
ligeiro13 0:5bb13ee7d146 280 if (menu == 3)
ligeiro13 0:5bb13ee7d146 281 { lcd.cls();
ligeiro13 0:5bb13ee7d146 282 lcd.printf(" Quadrado \n");
ligeiro13 0:5bb13ee7d146 283 lcd.printf(" Freq: %d Hz\n", freq[0]);
ligeiro13 0:5bb13ee7d146 284 lcd.printf(" Gerar\n");
ligeiro13 0:5bb13ee7d146 285 lcd.printf(" Voltar\n");
ligeiro13 0:5bb13ee7d146 286 linha = 1;
ligeiro13 0:5bb13ee7d146 287 lcd.locate(0,linha);
ligeiro13 0:5bb13ee7d146 288 lcd.putc('>');
ligeiro13 0:5bb13ee7d146 289 menu = -4;
ligeiro13 0:5bb13ee7d146 290 wait(0.2);
ligeiro13 0:5bb13ee7d146 291 }
ligeiro13 0:5bb13ee7d146 292 }
ligeiro13 0:5bb13ee7d146 293 }