Enrico Aloisi Nardi / Mbed 2 deprecated conversor_dac

Dependencies:   mbed

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?

UserRevisionLine numberNew 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