.

Dependencies:   mbed TextLCD

main.cpp

Committer:
ligeiro13
Date:
2019-05-20
Revision:
1:47dce2cc8eed
Parent:
0:5bb13ee7d146

File content as of revision 1:47dce2cc8eed:

#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(freq[0]);
        quadrado();
        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);
            }   
    }   
}