
.
Diff: main.cpp
- Revision:
- 0:5bb13ee7d146
- Child:
- 1:47dce2cc8eed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon May 20 22:06:52 2019 +0000 @@ -0,0 +1,293 @@ +#include "mbed.h" +#include "TextLCD.h" + +BusOut saida (D4,D5,D6,D7,D8,D9,D10,D11); +Serial pc(USBTX , USBRX);// band rate é de 1152000 na Serial Port do Tera Term +TextLCD lcd(PC_9, PC_8, PC_10, PC_12, PA_13, PA_14, TextLCD::LCD20x4); // rs, e , d4-d7 +DigitalIn botao_enter(PA_15); +DigitalIn botao_ciclo(PB_7); +int lista[] = {15,15,14,13,12,11,10,8,7,5,4,2,1,1,0,0}; +//IHM +int menu = 0; +int linha = 1; +int freq[] = {10,500}; +bool troca_freq = 0 ; +int t; // tempo de espera +void senoidal(int frequencia) +{ + t = (1/(16*frequencia)); + + for (int i = 0 ; i < 16 ; i++) + { + + saida = lista[i]; + wait(t); + if ( i ==15) + { for ( int i = 15; i >= 0; i--) + { + saida = lista[i]; + wait(t); + } + } + } +} +void triangular(int frequencia) +{ int k = 0; + if (k == 0) + t = (1/(16*frequencia)); + { + for (int i = 0; i <= 15; i++) + { + saida = i; + wait(t/2); + if (i ==15) + { + k = 1; + } + } + } + + if (k == 1) + { + for (int i = 15; i >= 0; i--) + { + saida = i; + wait(t/2); + if (i == 0) + { + k = 0; + } + } + } +} +void quadrado(int frequencia) +{ + t = (1/(16*frequencia)); + saida = 15; + wait(t); + saida = 0; + wait(t); + +} +int main() +{ + while(1) + { + //triangular(); + //senoidal(); + //quadrado(freq[0]); + pc.baud(115200); + //------------------------------------------------------------------------------Menu = 0 tela inicial------------------------------------------------------------------ + if (menu == 0 ) + { + lcd.cls(); + saida = 0;//Não emite sinal + lcd.printf("Gerador de Ondas \n"); + lcd.printf(" Triangular\n"); + lcd.printf(" Senoidal\n"); + lcd.printf(" Quadrado\n"); + lcd.locate(0,linha); + lcd.putc('>'); + wait(0.2); + //botao_cima.fall(&cima_cursor); + menu = -1; + }// if menu = 1 + //------------------------------------------------------------------------------Botao Ciclo------------------------------------------------------------------ + if (botao_ciclo== 0) + { + pc.printf(" linha=%i menu=%i\r\n",linha, menu); + if (menu == -1 ) + { + linha++; + if (linha == 4) + { + linha =1; + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('>'); + } + if (linha < 4 and linha > 1) + { + lcd.locate(0,linha-1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('>'); + } + wait(0.2); + menu = -1; + } + if (menu == -2 or menu == -3 or menu == -4) + { + linha++; + if (linha == 4) + { + linha =1; + lcd.locate(0,3); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('>'); + } + if (linha < 4 and linha > 1) + { + lcd.locate(0,linha-1); + lcd.putc(' '); + lcd.locate(0,linha); + lcd.putc('>'); + } + wait(0.2); + //menu = -2; + } + } + //------------------------------------------------------------------------------Botao Enter------------------------------------------------------------------ + if (botao_enter == 0) + { + pc.printf(" linha=%i menu=%i\r\n",linha, menu); + if (menu== -1) + { + wait(0.2); + if (linha == 1) + { + menu = 1;// menu para a triangular + } + if (linha == 2) + { + menu = 2;// menu para a triangular + } + if (linha == 3) + { + menu = 3;// menu para a triangular + } + } + if (menu== -2)//triangular + { + + if (linha == 1) + { + troca_freq= !troca_freq; + lcd.cls(); + lcd.printf(" Triangular \n"); + lcd.printf(" Freq: %d Hz\n", freq[troca_freq]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + wait(0.2); + menu = -2; + } + if (linha == 3) + { + menu = 0; + } + if (linha == 2) + { + + while(botao_ciclo == 1) + { + triangular(freq[troca_freq]); + } + } + } + if (menu== -3)//senoidal + { + + if (linha == 1) + { + troca_freq= !troca_freq; + lcd.cls(); + lcd.printf(" Senoidal \n"); + lcd.printf(" Freq: %d Hz\n", freq[troca_freq]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + wait(0.2); + menu = -3; + } + if (linha == 3) + { + menu = 0; + } + if (linha == 2) + { + pc.printf("%d\r\n",freq[troca_freq]); + while(botao_ciclo == 1) + { + senoidal(freq[troca_freq]); + } + } + } + if (menu== -4)//quadrado + { + + if (linha == 1) + { + troca_freq= !troca_freq; + lcd.cls(); + lcd.printf(" Quadrado \n"); + lcd.printf(" Freq: %d Hz\n", freq[troca_freq]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + wait(0.2); + menu = -4; + } + if (linha == 3) + { + menu = 0; + } + if (linha == 2) + { + + while(botao_ciclo == 1) + { + quadrado(freq[troca_freq]); + } + } + } + } + //------------------------------------------------------------------------------ menu =1 menu tragular------------------------------------------------------------------ + if (menu == 1) + { lcd.cls(); + lcd.printf(" Triangular \n"); + lcd.printf(" Freq: %d Hz\n", freq[0]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + menu = -2; + wait(0.2); + } + //------------------------------------------------------------------------------ menu =2 menu Senoidal------------------------------------------------------------------ + if (menu == 2) + { lcd.cls(); + lcd.printf(" Senoidal \n"); + lcd.printf(" Freq: %d Hz\n", freq[0]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + menu = -3; + wait(0.2); + } + //------------------------------------------------------------------------------ menu =3 menu Quadrado------------------------------------------------------------------ + if (menu == 3) + { lcd.cls(); + lcd.printf(" Quadrado \n"); + lcd.printf(" Freq: %d Hz\n", freq[0]); + lcd.printf(" Gerar\n"); + lcd.printf(" Voltar\n"); + linha = 1; + lcd.locate(0,linha); + lcd.putc('>'); + menu = -4; + wait(0.2); + } + } +} \ No newline at end of file