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@12:415818832707, 2020-06-10 (annotated)
- Committer:
- enricoan
- Date:
- Wed Jun 10 20:30:28 2020 +0000
- Revision:
- 12:415818832707
- Parent:
- 11:d3e72f8d05cd
- Parent:
- 10:fef73855847f
- Child:
- 13:495cb8a5ca7d
ok
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 | 12:415818832707 | 11 | <<<<<<< working copy |
enricoan | 11:d3e72f8d05cd | 12 | float tempo = 0.5; |
enricoan | 11:d3e72f8d05cd | 13 | //array de valores que será enviado para os pinos "saida digital" |
enricoan | 12:415818832707 | 14 | ======= |
enricoan | 0:f2560180665b | 15 | |
Hiroball | 10:fef73855847f | 16 | int senoide[8] = {0,1,4,6,7,6,4,1}; |
Hiroball | 10:fef73855847f | 17 | float vref = 3.3; |
Hiroball | 10:fef73855847f | 18 | |
enricoan | 12:415818832707 | 19 | >>>>>>> merge rev |
amandarm | 2:8e9dbb7523e7 | 20 | int SEQUENCIA[8]={ |
amandarm | 2:8e9dbb7523e7 | 21 | 0b000, |
amandarm | 2:8e9dbb7523e7 | 22 | 0b001, |
amandarm | 2:8e9dbb7523e7 | 23 | 0b010, |
amandarm | 2:8e9dbb7523e7 | 24 | 0b011, |
amandarm | 2:8e9dbb7523e7 | 25 | 0b100, |
amandarm | 2:8e9dbb7523e7 | 26 | 0b101, |
amandarm | 2:8e9dbb7523e7 | 27 | 0b110, |
amandarm | 2:8e9dbb7523e7 | 28 | 0b111 |
amandarm | 2:8e9dbb7523e7 | 29 | }; |
amandarm | 9:c9fd0beba38c | 30 | |
amandarm | 9:c9fd0beba38c | 31 | void funcao_botao(){ //contador que vê qual o estado do botão |
amandarm | 7:f69e1333449d | 32 | if (estado_botao < 4){ |
amandarm | 7:f69e1333449d | 33 | estado_botao++; |
amandarm | 7:f69e1333449d | 34 | } |
amandarm | 7:f69e1333449d | 35 | else{ |
amandarm | 7:f69e1333449d | 36 | estado_botao = 0; |
amandarm | 7:f69e1333449d | 37 | } |
amandarm | 7:f69e1333449d | 38 | } |
amandarm | 2:8e9dbb7523e7 | 39 | |
enricoan | 0:f2560180665b | 40 | int main(){ |
enricoan | 11:d3e72f8d05cd | 41 | 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 | 42 | 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 | 43 | while(1){ |
enricoan | 11:d3e72f8d05cd | 44 | 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 | 45 | //Onda quadrada |
enricoan | 11:d3e72f8d05cd | 46 | 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 | 47 | 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 | 48 | saida_digital = 0b111; |
amandarm | 5:436b7d88a92d | 49 | valor=leitura_an.read(); |
amandarm | 5:436b7d88a92d | 50 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 51 | wait(tempo);} |
enricoan | 11:d3e72f8d05cd | 52 | |
amandarm | 6:e8afe3e31edb | 53 | for (int i=8; i>0; i--) { |
amandarm | 5:436b7d88a92d | 54 | saida_digital = 0b000; |
amandarm | 6:e8afe3e31edb | 55 | valor=leitura_an.read(); |
amandarm | 6:e8afe3e31edb | 56 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 57 | wait(tempo);} |
enricoan | 0:f2560180665b | 58 | } |
enricoan | 11:d3e72f8d05cd | 59 | |
enricoan | 11:d3e72f8d05cd | 60 | //Onda rampa |
enricoan | 11:d3e72f8d05cd | 61 | 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 | 62 | for (int i=0; i<8; i++) { |
amandarm | 5:436b7d88a92d | 63 | saida_digital = SEQUENCIA[i]; |
amandarm | 5:436b7d88a92d | 64 | valor=leitura_an.read(); |
amandarm | 5:436b7d88a92d | 65 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 66 | wait(tempo);} |
amandarm | 5:436b7d88a92d | 67 | } |
enricoan | 11:d3e72f8d05cd | 68 | |
enricoan | 11:d3e72f8d05cd | 69 | //Onda triangular |
enricoan | 11:d3e72f8d05cd | 70 | 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 | 71 | for (int i=0; i<8; i++) { |
amandarm | 5:436b7d88a92d | 72 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 73 | wait(tempo); |
amandarm | 5:436b7d88a92d | 74 | valor=leitura_an.read(); |
amandarm | 7:f69e1333449d | 75 | pc.printf("\r\t%1.3f\n",valor); |
amandarm | 5:436b7d88a92d | 76 | } |
amandarm | 8:20afab089ff8 | 77 | for (int i=7; i>0; i--) { |
amandarm | 5:436b7d88a92d | 78 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 79 | wait(tempo); |
amandarm | 5:436b7d88a92d | 80 | valor=leitura_an.read(); |
amandarm | 7:f69e1333449d | 81 | pc.printf("\r\t%1.3f\n",valor); |
amandarm | 5:436b7d88a92d | 82 | } |
amandarm | 5:436b7d88a92d | 83 | } |
enricoan | 12:415818832707 | 84 | <<<<<<< working copy |
enricoan | 11:d3e72f8d05cd | 85 | //Onda senoidal |
enricoan | 11:d3e72f8d05cd | 86 | 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 | 87 | for (int i=0; i<8; i++) { |
enricoan | 11:d3e72f8d05cd | 88 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 89 | wait(tempo); |
enricoan | 11:d3e72f8d05cd | 90 | valor=leitura_an.read(); |
enricoan | 11:d3e72f8d05cd | 91 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 92 | } |
enricoan | 11:d3e72f8d05cd | 93 | for (int i=7; i>0; i--) { |
enricoan | 11:d3e72f8d05cd | 94 | saida_digital = SEQUENCIA[i]; |
enricoan | 11:d3e72f8d05cd | 95 | wait(tempo); |
enricoan | 11:d3e72f8d05cd | 96 | valor=leitura_an.read(); |
enricoan | 11:d3e72f8d05cd | 97 | pc.printf("\r\t%1.3f\n",valor); |
enricoan | 11:d3e72f8d05cd | 98 | } |
enricoan | 11:d3e72f8d05cd | 99 | } |
enricoan | 11:d3e72f8d05cd | 100 | |
amandarm | 2:8e9dbb7523e7 | 101 | |
enricoan | 11:d3e72f8d05cd | 102 | }//fim do while(1) |
enricoan | 11:d3e72f8d05cd | 103 | }//fim do int main() |
enricoan | 12:415818832707 | 104 | ======= |
Hiroball | 10:fef73855847f | 105 | else if(estado_botao == 3){ |
Hiroball | 10:fef73855847f | 106 | for(int i; i<8;i++){ |
Hiroball | 10:fef73855847f | 107 | saida_digital = senoide[i]; |
Hiroball | 10:fef73855847f | 108 | valor = leitura_an.read()*vref; |
Hiroball | 10:fef73855847f | 109 | pc.printf("\r\t%1.3f\n",valor); |
Hiroball | 10:fef73855847f | 110 | wait(0.5); |
Hiroball | 10:fef73855847f | 111 | } |
Hiroball | 10:fef73855847f | 112 | } |
amandarm | 2:8e9dbb7523e7 | 113 | } |
amandarm | 2:8e9dbb7523e7 | 114 | } |
enricoan | 12:415818832707 | 115 | >>>>>>> merge rev |
enricoan | 0:f2560180665b | 116 |