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@11:d3e72f8d05cd, 2020-06-09 (annotated)
- Committer:
- enricoan
- Date:
- Tue Jun 09 12:45:33 2020 +0000
- Revision:
- 11:d3e72f8d05cd
- Parent:
- 8:20afab089ff8
- Child:
- 12:415818832707
alguns comentarios adicionados
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
enricoan | 0:f2560180665b | 1 | #include "mbed.h" |
enricoan | 1:d05e46c73155 | 2 | #include <math.h> |
enricoan | 11:d3e72f8d05cd | 3 | #define PI 3.14159265 |
amandarm | 2:8e9dbb7523e7 | 4 | BusOut saida_digital (D2,D3,D4); |
enricoan | 11:d3e72f8d05cd | 5 | 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 |
amandarm | 2:8e9dbb7523e7 | 6 | AnalogIn leitura_an(A0); |
enricoan | 0:f2560180665b | 7 | |
enricoan | 0:f2560180665b | 8 | Serial pc(USBTX, USBRX); |
enricoan | 0:f2560180665b | 9 | float valor; |
amandarm | 5:436b7d88a92d | 10 | int estado_botao; |
enricoan | 11:d3e72f8d05cd | 11 | float tempo = 0.5; |
enricoan | 11:d3e72f8d05cd | 12 | //array de valores que será enviado para os pinos "saida digital" |
amandarm | 2:8e9dbb7523e7 | 13 | int SEQUENCIA[8]={ |
amandarm | 2:8e9dbb7523e7 | 14 | 0b000, |
amandarm | 2:8e9dbb7523e7 | 15 | 0b001, |
amandarm | 2:8e9dbb7523e7 | 16 | 0b010, |
amandarm | 2:8e9dbb7523e7 | 17 | 0b011, |
amandarm | 2:8e9dbb7523e7 | 18 | 0b100, |
amandarm | 2:8e9dbb7523e7 | 19 | 0b101, |
amandarm | 2:8e9dbb7523e7 | 20 | 0b110, |
amandarm | 2:8e9dbb7523e7 | 21 | 0b111 |
amandarm | 2:8e9dbb7523e7 | 22 | }; |
amandarm | 7:f69e1333449d | 23 | void funcao_botao(){ |
amandarm | 7:f69e1333449d | 24 | if (estado_botao < 4){ |
amandarm | 7:f69e1333449d | 25 | estado_botao++; |
amandarm | 7:f69e1333449d | 26 | } |
amandarm | 7:f69e1333449d | 27 | else{ |
amandarm | 7:f69e1333449d | 28 | estado_botao = 0; |
amandarm | 7:f69e1333449d | 29 | } |
amandarm | 7:f69e1333449d | 30 | } |
amandarm | 2:8e9dbb7523e7 | 31 | |
enricoan | 0:f2560180665b | 32 | int main(){ |
enricoan | 11:d3e72f8d05cd | 33 | estado_botao=0; //inicialização da variável estado_botao para que o gerador sempre comece como um gerador de onda quadrada |
enricoan | 11:d3e72f8d05cd | 34 | 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 |
enricoan | 0:f2560180665b | 35 | while(1){ |
enricoan | 11:d3e72f8d05cd | 36 | botao_usuario.fall(&funcao_botao); //chamada da função de interrupção dada uma descida no estado do botão do usuário |
enricoan | 11:d3e72f8d05cd | 37 | //Onda quadrada |
enricoan | 11:d3e72f8d05cd | 38 | if(estado_botao == 0){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador |
enricoan | 11:d3e72f8d05cd | 39 | 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) |
amandarm | 5:436b7d88a92d | 40 | saida_digital = 0b111; |
amandarm | 5:436b7d88a92d | 41 | valor=leitura_an.read(); |
amandarm | 5:436b7d88a92d | 42 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 43 | wait(tempo);} |
enricoan | 11:d3e72f8d05cd | 44 | |
amandarm | 6:e8afe3e31edb | 45 | for (int i=8; i>0; i--) { |
amandarm | 5:436b7d88a92d | 46 | saida_digital = 0b000; |
amandarm | 6:e8afe3e31edb | 47 | valor=leitura_an.read(); |
amandarm | 6:e8afe3e31edb | 48 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 49 | wait(tempo);} |
enricoan | 0:f2560180665b | 50 | } |
enricoan | 11:d3e72f8d05cd | 51 | |
enricoan | 11:d3e72f8d05cd | 52 | //Onda rampa |
enricoan | 11:d3e72f8d05cd | 53 | else if (estado_botao == 1){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador |
amandarm | 5:436b7d88a92d | 54 | for (int i=0; i<8; i++) { |
amandarm | 5:436b7d88a92d | 55 | saida_digital = SEQUENCIA[i]; |
amandarm | 5:436b7d88a92d | 56 | valor=leitura_an.read(); |
amandarm | 5:436b7d88a92d | 57 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 58 | wait(tempo);} |
amandarm | 5:436b7d88a92d | 59 | } |
enricoan | 11:d3e72f8d05cd | 60 | |
enricoan | 11:d3e72f8d05cd | 61 | //Onda triangular |
enricoan | 11:d3e72f8d05cd | 62 | else if (estado_botao == 2){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador |
amandarm | 5:436b7d88a92d | 63 | for (int i=0; i<8; i++) { |
amandarm | 5:436b7d88a92d | 64 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 65 | wait(tempo); |
amandarm | 5:436b7d88a92d | 66 | valor=leitura_an.read(); |
amandarm | 7:f69e1333449d | 67 | pc.printf("\r\t%1.3f\n",valor); |
amandarm | 5:436b7d88a92d | 68 | } |
amandarm | 8:20afab089ff8 | 69 | for (int i=7; i>0; i--) { |
amandarm | 5:436b7d88a92d | 70 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 71 | wait(tempo); |
amandarm | 5:436b7d88a92d | 72 | valor=leitura_an.read(); |
amandarm | 7:f69e1333449d | 73 | pc.printf("\r\t%1.3f\n",valor); |
amandarm | 5:436b7d88a92d | 74 | } |
amandarm | 5:436b7d88a92d | 75 | } |
enricoan | 11:d3e72f8d05cd | 76 | //Onda senoidal |
enricoan | 11:d3e72f8d05cd | 77 | else if (estado_botao == 3){//teste do valor da variável estado_botao para determinar qual onda será a saída do gerador |
enricoan | 11:d3e72f8d05cd | 78 | for (int i=0; i<8; i++) { |
enricoan | 11:d3e72f8d05cd | 79 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 80 | wait(tempo); |
enricoan | 11:d3e72f8d05cd | 81 | valor=leitura_an.read(); |
enricoan | 11:d3e72f8d05cd | 82 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 83 | } |
enricoan | 11:d3e72f8d05cd | 84 | for (int i=7; i>0; i--) { |
enricoan | 11:d3e72f8d05cd | 85 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 86 | wait(tempo); |
enricoan | 11:d3e72f8d05cd | 87 | valor=leitura_an.read(); |
enricoan | 11:d3e72f8d05cd | 88 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 89 | } |
enricoan | 11:d3e72f8d05cd | 90 | } |
enricoan | 11:d3e72f8d05cd | 91 | |
amandarm | 2:8e9dbb7523e7 | 92 | |
enricoan | 11:d3e72f8d05cd | 93 | }//fim do while(1) |
enricoan | 11:d3e72f8d05cd | 94 | }//fim do int main() |
enricoan | 0:f2560180665b | 95 |