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.
Diff: conversor.cpp
- Revision:
- 11:d3e72f8d05cd
- Parent:
- 8:20afab089ff8
- Child:
- 12:415818832707
--- a/conversor.cpp Mon Jun 08 14:59:14 2020 +0000 +++ b/conversor.cpp Tue Jun 09 12:45:33 2020 +0000 @@ -1,13 +1,15 @@ #include "mbed.h" #include <math.h> +#define PI 3.14159265 BusOut saida_digital (D2,D3,D4); -InterruptIn botao_usuario(PC_13); +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 SEQUENCIA[8]={ 0b000, 0b001, @@ -28,51 +30,66 @@ } int main(){ - estado_botao=0; - pc.baud(9600); - pc.printf("\r"); - pc.printf("oi"); + 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){ - pc.printf("%d",estado_botao); - botao_usuario.fall(&funcao_botao); - if(estado_botao == 0){ - for (int i=0; i<8; i++) { + 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(0.5); - } + 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(0.5); - } + wait(tempo);} } - else if (estado_botao == 1){ //Onda rampa + + //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(0.5); - } + wait(tempo);} } - else if (estado_botao == 2){ //Onda triangular + + //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(0.5); + 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(0.5); + 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=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() \ No newline at end of file