Enrico Aloisi Nardi / Mbed 2 deprecated conversor_dac

Dependencies:   mbed

conversor.cpp

Committer:
enricoan
Date:
2020-06-10
Revision:
12:415818832707
Parent:
11:d3e72f8d05cd
Parent:
10:fef73855847f
Child:
13:495cb8a5ca7d

File content as of revision 12:415818832707:

#include "mbed.h"
#include <math.h>
#define PI 3.14159265
BusOut saida_digital (D2,D3,D4);
InterruptIn botao_usuario(PC_13); //definição do botao do usuário como pino de interrupção para, independentemente do que estiver acontecendo, o programa mudar de um tipo de onda para o outro
AnalogIn leitura_an(A0);

Serial pc(USBTX, USBRX);
float valor;
int estado_botao;
<<<<<<< working copy
float tempo = 0.5;
//array de valores que será enviado para os pinos "saida digital"
=======

int senoide[8] = {0,1,4,6,7,6,4,1};
float vref = 3.3;

>>>>>>> merge rev
int SEQUENCIA[8]={
    0b000,
    0b001,
    0b010,
    0b011,
    0b100,
    0b101,
    0b110,
    0b111
    };
    
void funcao_botao(){ //contador que vê qual o estado do botão 
    if (estado_botao < 4){
        estado_botao++;
    }
    else{
        estado_botao = 0;
    }
}

int main(){
    estado_botao=0; //inicialização da variável estado_botao para que o gerador sempre comece como um gerador de onda quadrada
    pc.baud(9600);//indicação do número de vezes que o canal de leitura do monitor serial poderá mudar de estado até 9600 vezes
    while(1){
        botao_usuario.fall(&funcao_botao); //chamada da função de interrupção dada uma descida no estado do botão do usuário
        //Onda quadrada
        if(estado_botao == 0){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador
            for (int i=0; i<8; i++) { //laço para repetir o comando de envio do nível lógico enquanto o contador for menor que 8 (valor atrelado ao fato de que temos um conversor de 3 bits)
            saida_digital = 0b111;
            valor=leitura_an.read(); 
            pc.printf("\r\t%1.3f\n",valor);  
            wait(tempo);}
            
            for (int i=8; i>0; i--) { 
            saida_digital = 0b000;
            valor=leitura_an.read(); 
            pc.printf("\r\t%1.3f\n",valor);  
            wait(tempo);}            
        }
        
        //Onda rampa
        else if (estado_botao == 1){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador
            for (int i=0; i<8; i++) { 
            saida_digital = SEQUENCIA[i];
            valor=leitura_an.read(); 
            pc.printf("\r\t%1.3f\n",valor);  
            wait(tempo);}
        }
        
        //Onda triangular
        else if (estado_botao == 2){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador
            for (int i=0; i<8; i++) {    
                saida_digital = SEQUENCIA[i];
                wait(tempo);
                valor=leitura_an.read();
                pc.printf("\r\t%1.3f\n",valor);    
            }
            for (int i=7; i>0; i--) {  
                saida_digital = SEQUENCIA[i];
                wait(tempo);
                valor=leitura_an.read();
                pc.printf("\r\t%1.3f\n",valor);   
            }
        }
<<<<<<< working copy
        //Onda senoidal
        else if (estado_botao == 3){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador
            for (int i=0; i<8; i++) {    
                saida_digital = SEQUENCIA[i];
                wait(tempo);
                valor=leitura_an.read();
                pc.printf("\r\t%1.3f\n",valor);    
            }
            for (int i=7; i>0; i--) {  
                saida_digital = SEQUENCIA[i];
                wait(tempo);
                valor=leitura_an.read();
                pc.printf("\r\t%1.3f\n",valor);   
            }
        }
             
        
    }//fim do while(1)
}//fim do int main()
=======
        else if(estado_botao == 3){
            for(int i; i<8;i++){
                saida_digital = senoide[i];
                valor = leitura_an.read()*vref; 
                pc.printf("\r\t%1.3f\n",valor);  
                wait(0.5);
            }
        }
    }
}
>>>>>>> merge rev