Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
conversor.cpp
- Committer:
- enricoan
- Date:
- 2020-06-10
- Revision:
- 13:495cb8a5ca7d
- Parent:
- 12:415818832707
- Child:
- 14:c12150a053fd
File content as of revision 13:495cb8a5ca7d:
#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; 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; 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); } } //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; i<8;i++){ saida_digital = senoide[i]; valor = leitura_an.read()*vref; pc.printf("\r\t%1.3f\n",valor); wait(0.5); } } }//fim do while(1) }//fim do int main()