interface PI

Dependencies:   mbed LCD_DISCO_F469NI TS_DISCO_F469NI F469_GUI BSP_DISCO_F469NI

Committer:
zigdrix
Date:
Mon Oct 19 22:18:46 2020 +0000
Revision:
3:273047c393bd
Parent:
2:7002787e2ab1
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inkiiin 0:0a8891401c4f 1 #include "mbed.h"
inkiiin 0:0a8891401c4f 2 #include "stm32469i_discovery.h"
inkiiin 0:0a8891401c4f 3 #include "TS_DISCO_F469NI.h"
inkiiin 0:0a8891401c4f 4 #include "LCD_DISCO_F469NI.h"
inkiiin 0:0a8891401c4f 5 #include "F469_GUI.hpp"
zigdrix 3:273047c393bd 6 #include "math.h"
inkiiin 0:0a8891401c4f 7
zigdrix 2:7002787e2ab1 8 //#define TIME // Time for toggle the LED (seconds)
zigdrix 3:273047c393bd 9 #define Num 20000
zigdrix 3:273047c393bd 10 #define Resolucao 4095
zigdrix 1:450d80728151 11
zigdrix 1:450d80728151 12 Timeout timeout; // Create the Timeout object
zigdrix 3:273047c393bd 13 Timeout timeout2;
zigdrix 3:273047c393bd 14 Timeout timeout3;
zigdrix 3:273047c393bd 15 Timeout timeout4;
zigdrix 3:273047c393bd 16 Timeout timeout5;
zigdrix 3:273047c393bd 17 Timeout timeout6;
zigdrix 3:273047c393bd 18 DigitalOut ports[] = {(D0),(D1),(D2),(D3),(D4),(D5),(D6),(D7),(D8),(D9),(D10),(D11)};
zigdrix 3:273047c393bd 19 AnalogIn analog_value(A0);
zigdrix 3:273047c393bd 20 //DigitalOut toogle(D14);
zigdrix 1:450d80728151 21
zigdrix 1:450d80728151 22
zigdrix 3:273047c393bd 23 //float h[50]={0.00013664,0.0031434,-0.0011824,-0.01819,0.0050009,0.03851,-0.0087039,-0.027769,0.0011091,-0.022893,0.014935,0.042351,-0.0081599,0.017305,-0.024729,-0.057635,0.017887,-0.021015,0.048111,0.090766,-0.038671,0.046058,-0.15008,-0.29325,0.34694,0.34694,-0.29325,-0.15008,0.046058,-0.038671,0.090766,0.048111,-0.021015,0.017887,-0.057635,-0.024729,0.017305,-0.0081599,0.042351,0.014935,-0.022893,0.0011091,-0.027769,-0.0087039,0.03851,0.0050009,-0.01819,-0.0011824,0.0031434,0.00013664
zigdrix 3:273047c393bd 24 //};
zigdrix 3:273047c393bd 25 float h[151]={ 0.00085858,-0.00042606,-0.0015497,0.0025922,-0.0012627,-0.0045709,0.0045298,0.0016832,-0.00021682,0.0032086,-0.005761,-0.001845,8.275e-05,-0.0026711,0.006908,0.0011507,0.0014115,0.0022169,-0.0076429,-0.00025806,-0.0040655,-0.0013819,0.0072834,-0.00032939,0.0073833,9.7708e-05,-0.0052098,7.8399e-05,-0.010456,0.0012451,0.0012081,0.0013649,0.0121,-0.0018408,0.0042649,-0.0038654,-0.011222,0.00072002,-0.010022,0.0065729,0.0072796,0.0027994,0.014384,-0.0079399,-0.00066081,-0.0085907,-0.015693,0.0060706,-0.0072193,0.015325,0.012945,0.00065311,0.014214,-0.020385,-0.0062987,-0.01286,-0.018089,0.020111,-0.0027722,0.029675,0.017308,-0.010075,0.011812,-0.048643,-0.011664,-0.015803,-0.018126,0.066211,0.0024952,0.0736,0.019681,-0.078652,0.0076586,-0.30679,-0.015847,0.58315,-0.015847,-0.30679,0.0076586,-0.078652,0.019681,0.0736,0.0024952,0.066211,-0.018126,-0.015803,-0.011664,-0.048643,0.011812,-0.010075,0.017308,0.029675,-0.0027722,0.020111,-0.018089,-0.01286,-0.0062987,-0.020385,0.014214,0.00065311,0.012945,0.015325,-0.0072193,0.0060706,-0.015693,-0.0085907,-0.00066081,-0.0079399,0.014384,0.0027994,0.0072796,0.0065729,-0.010022,0.00072002,-0.011222,-0.0038654,0.0042649,-0.0018408,0.0121,0.0013649,0.0012081,0.0012451,-0.010456,7.8399e-05,-0.0052098,9.7708e-05,0.0073833,-0.00032939,0.0072834,-0.0013819,-0.0040655,-0.00025806,-0.0076429,0.0022169,0.0014115,0.0011507,0.006908,-0.0026711,8.275e-05,-0.001845,-0.005761,0.0032086,-0.00021682,0.0016832,0.0045298,-0.0045709,-0.0012627,0.0025922,-0.0015497,-0.00042606,0.00085858
zigdrix 3:273047c393bd 26 };
zigdrix 3:273047c393bd 27 //float h[41]={ 0.0013777,-0.0041524,0.0044975,0.018256,-0.027017,-0.02849,0.036046,0.010033,0.011027,0.020938,-0.059537,-0.015841,-0.0016861,-0.017589,0.10377,0.017077,-0.0031668,0.016809,-0.31751,-0.017002,0.50469,-0.017002,-0.31751,0.016809,-0.0031668,0.017077,0.10377,-0.017589,-0.0016861,-0.015841,-0.059537,0.020938,0.011027,0.010033,0.036046,-0.02849,-0.027017,0.018256,0.0044975,-0.0041524,0.0013777
zigdrix 3:273047c393bd 28 //};
zigdrix 3:273047c393bd 29 char desligado=0;
zigdrix 3:273047c393bd 30 int efeito=1;
zigdrix 3:273047c393bd 31 int escolha_anterior=-1;
zigdrix 3:273047c393bd 32 //1-Sem efeito
zigdrix 3:273047c393bd 33 //2-Robo
zigdrix 3:273047c393bd 34 //3-Reverb
zigdrix 3:273047c393bd 35 //4-Chorus
zigdrix 3:273047c393bd 36 //5-Distorcao
zigdrix 3:273047c393bd 37 //6-Radio
zigdrix 3:273047c393bd 38 int Numero_Amostras=50000;
zigdrix 3:273047c393bd 39 int amostra_atual=0;
zigdrix 3:273047c393bd 40 int reproducao_atual=0;
zigdrix 3:273047c393bd 41 int chorus1_atual=0;
zigdrix 3:273047c393bd 42 int chorus2_atual=0;
zigdrix 3:273047c393bd 43 int chorus3_atual=0;
zigdrix 3:273047c393bd 44 float TIME=0.000025,x;//20Khz
zigdrix 3:273047c393bd 45 uint16_t Leitura_som[Num];
zigdrix 3:273047c393bd 46 uint16_t Leitura_som_sub[Num];
zigdrix 3:273047c393bd 47 uint16_t Reproducao_som[Num];
zigdrix 3:273047c393bd 48 uint16_t aux_radio[Num];
zigdrix 3:273047c393bd 49 uint16_t chorus1val[Num];
zigdrix 3:273047c393bd 50 uint16_t chorus2val[Num];
zigdrix 3:273047c393bd 51 uint16_t chorus3val[Num];
zigdrix 1:450d80728151 52
zigdrix 3:273047c393bd 53
zigdrix 3:273047c393bd 54 char configura=1;
zigdrix 3:273047c393bd 55 const int NUMBER_BUTTONS = 7; //Número de botões
zigdrix 3:273047c393bd 56 const string STR1[NUMBER_BUTTONS] = {"OFF","Pass","Robo","Rev","Chor","Dist","Rad"}; //string que vai nos botões
zigdrix 1:450d80728151 57 //cria botão na tela,(inicio em x, inicio em Y, largura do botão, altura do botão, número de botões
zigdrix 1:450d80728151 58 // nome do botão,distãncia dos botões em x, distãncia dos botões em y, número de colunas,
zigdrix 1:450d80728151 59 // número de colunas, número de linhas, fonte do texto, cor do texto, cores dos estados do botão)
zigdrix 3:273047c393bd 60 ButtonGroup bGroup1(30, 90, 80, 80, NUMBER_BUTTONS, STR1, 20, 20, 7, 1,Font24, LCD_COLOR_WHITE, 0xFF003538, 0xFFB70068, 0xFFFF7FFF);
zigdrix 3:273047c393bd 61 Label bTouch(150, 280, Label::LEFT, Font24, LCD_COLOR_MAGENTA);
zigdrix 3:273047c393bd 62
zigdrix 3:273047c393bd 63
zigdrix 3:273047c393bd 64 void Escolha(void);
zigdrix 3:273047c393bd 65 void Captura_som(void);
zigdrix 3:273047c393bd 66 void Reproduz_som(void);
zigdrix 3:273047c393bd 67 void escreve_valor_digital_12bits(uint16_t valor);
zigdrix 3:273047c393bd 68 void chorus1(void);
zigdrix 3:273047c393bd 69 void chorus2(void);
zigdrix 3:273047c393bd 70 void chorus3(void);
zigdrix 3:273047c393bd 71
zigdrix 3:273047c393bd 72
zigdrix 3:273047c393bd 73
zigdrix 3:273047c393bd 74
zigdrix 3:273047c393bd 75 int main()
zigdrix 3:273047c393bd 76 {
zigdrix 3:273047c393bd 77 timeout3.attach(&Escolha, 0.01);
zigdrix 3:273047c393bd 78 timeout.attach(&Captura_som, TIME); // Set again the timer timeout for next iterations
zigdrix 3:273047c393bd 79 while (true)
zigdrix 3:273047c393bd 80 {
zigdrix 3:273047c393bd 81
zigdrix 3:273047c393bd 82 }
zigdrix 3:273047c393bd 83 }
zigdrix 3:273047c393bd 84
zigdrix 3:273047c393bd 85 void Captura_som()
zigdrix 3:273047c393bd 86 {
zigdrix 3:273047c393bd 87 int i,j;
zigdrix 3:273047c393bd 88 float acc1,acc2;
zigdrix 3:273047c393bd 89 if(efeito!=6){
zigdrix 3:273047c393bd 90 Leitura_som[amostra_atual] = ((analog_value.read()*Resolucao));
zigdrix 3:273047c393bd 91 Reproducao_som[amostra_atual]=Leitura_som[amostra_atual];
zigdrix 3:273047c393bd 92 amostra_atual++;
zigdrix 3:273047c393bd 93 if(amostra_atual==Numero_Amostras){
zigdrix 3:273047c393bd 94 amostra_atual=0;
zigdrix 3:273047c393bd 95 if(efeito!=4)timeout2.attach(&Reproduz_som, TIME);
zigdrix 3:273047c393bd 96 }
zigdrix 3:273047c393bd 97 if(efeito==4)timeout2.attach(&Reproduz_som, TIME);
zigdrix 3:273047c393bd 98
zigdrix 3:273047c393bd 99 if(desligado==0)timeout.attach(&Captura_som, TIME); // Set again the timer timeout for next iterations
zigdrix 3:273047c393bd 100 }
zigdrix 3:273047c393bd 101 else{
zigdrix 3:273047c393bd 102 timeout.attach(&Captura_som, TIME);
zigdrix 3:273047c393bd 103 acc1=0;
zigdrix 3:273047c393bd 104 for(j=0;j<151;j++){
zigdrix 3:273047c393bd 105 acc1=acc1+h[j]*Leitura_som[j];
zigdrix 3:273047c393bd 106 }
zigdrix 3:273047c393bd 107
zigdrix 3:273047c393bd 108 escreve_valor_digital_12bits((uint16_t)acc1*3);
zigdrix 3:273047c393bd 109 i=0;
zigdrix 3:273047c393bd 110 while(i<151){
zigdrix 3:273047c393bd 111 Leitura_som[i]=Leitura_som[i+1];
zigdrix 3:273047c393bd 112 i++;
inkiiin 0:0a8891401c4f 113 }
zigdrix 3:273047c393bd 114 //for(i=0;i<50;i++) Leitura_som[i]=Leitura_som[i+1];
zigdrix 3:273047c393bd 115 Leitura_som[151] = ((analog_value.read()*Resolucao));
zigdrix 3:273047c393bd 116 //if(amostra_atual==Numero_Amostras)amostra_atual=0;
inkiiin 0:0a8891401c4f 117 }
inkiiin 0:0a8891401c4f 118 }
zigdrix 3:273047c393bd 119
zigdrix 3:273047c393bd 120 void Reproduz_som()
zigdrix 3:273047c393bd 121 {
zigdrix 3:273047c393bd 122 if(efeito==5){
zigdrix 3:273047c393bd 123 if(Reproducao_som[reproducao_atual]>2000)Reproducao_som[reproducao_atual]=2000;
zigdrix 3:273047c393bd 124 }
zigdrix 3:273047c393bd 125 if(efeito==4){
zigdrix 3:273047c393bd 126 chorus1val[reproducao_atual]=Reproducao_som[reproducao_atual];
zigdrix 3:273047c393bd 127 if(reproducao_atual==(1000))timeout4.attach(&chorus1, TIME);
zigdrix 3:273047c393bd 128 }
zigdrix 3:273047c393bd 129 escreve_valor_digital_12bits((uint16_t)Reproducao_som[reproducao_atual]);
zigdrix 3:273047c393bd 130 reproducao_atual++;
zigdrix 3:273047c393bd 131 if(reproducao_atual==Numero_Amostras) reproducao_atual=0;
zigdrix 3:273047c393bd 132 else if(efeito==2)timeout2.attach(&Reproduz_som, TIME/200);
zigdrix 3:273047c393bd 133 //else if(efeito==6)timeout2.attach(&Reproduz_som, TIME);
zigdrix 3:273047c393bd 134 else timeout2.attach(&Reproduz_som, TIME);
zigdrix 3:273047c393bd 135
zigdrix 3:273047c393bd 136 }
zigdrix 3:273047c393bd 137
zigdrix 3:273047c393bd 138 void chorus1(void){
zigdrix 3:273047c393bd 139 if(efeito==4){
zigdrix 3:273047c393bd 140 if(chorus1_atual==2000)timeout5.attach(&chorus2, TIME);
zigdrix 3:273047c393bd 141 chorus2val[chorus1_atual]=chorus1val[chorus1_atual];
zigdrix 3:273047c393bd 142 escreve_valor_digital_12bits((uint16_t)chorus1val[chorus1_atual]);
zigdrix 3:273047c393bd 143 chorus1_atual++;
zigdrix 3:273047c393bd 144 if(chorus1_atual==Numero_Amostras)chorus1_atual=0;
zigdrix 3:273047c393bd 145 else timeout4.attach(&chorus1, TIME);
zigdrix 3:273047c393bd 146 }
zigdrix 3:273047c393bd 147 }
zigdrix 3:273047c393bd 148 void chorus2(void){
zigdrix 3:273047c393bd 149 if(efeito==4){
zigdrix 3:273047c393bd 150 if(chorus2_atual==3000)timeout6.attach(&chorus3, TIME);
zigdrix 3:273047c393bd 151 chorus3val[chorus2_atual]=chorus2val[chorus2_atual];
zigdrix 3:273047c393bd 152 escreve_valor_digital_12bits((uint16_t)chorus2val[chorus2_atual]);
zigdrix 3:273047c393bd 153 chorus2_atual++;
zigdrix 3:273047c393bd 154 if(chorus2_atual==Numero_Amostras)chorus2_atual=0;
zigdrix 3:273047c393bd 155 else timeout5.attach(&chorus2, TIME);
zigdrix 3:273047c393bd 156 }
zigdrix 3:273047c393bd 157 }
zigdrix 3:273047c393bd 158 void chorus3(void){
zigdrix 3:273047c393bd 159 if(efeito==4){
zigdrix 3:273047c393bd 160 escreve_valor_digital_12bits((uint16_t)chorus3val[chorus3_atual]);
zigdrix 3:273047c393bd 161 chorus3_atual++;
zigdrix 3:273047c393bd 162 if(chorus3_atual==Numero_Amostras)chorus3_atual=0;
zigdrix 3:273047c393bd 163 else timeout6.attach(&chorus3, TIME);
zigdrix 3:273047c393bd 164 }
zigdrix 3:273047c393bd 165 }
zigdrix 3:273047c393bd 166
zigdrix 3:273047c393bd 167
zigdrix 3:273047c393bd 168 void escreve_valor_digital_12bits(uint16_t valor){
zigdrix 3:273047c393bd 169 int cont=0;
zigdrix 3:273047c393bd 170 for(cont=0;cont<12;cont++){
zigdrix 3:273047c393bd 171 ports[cont]=valor & (1<<cont);
zigdrix 3:273047c393bd 172 }
zigdrix 3:273047c393bd 173 }
zigdrix 3:273047c393bd 174
zigdrix 3:273047c393bd 175 void Escolha(void){
zigdrix 3:273047c393bd 176 if (bGroup1.GetTouchedNumber(efeito));
zigdrix 3:273047c393bd 177 if(escolha_anterior!=efeito){
zigdrix 3:273047c393bd 178 escolha_anterior=efeito;
zigdrix 3:273047c393bd 179 amostra_atual=0;
zigdrix 3:273047c393bd 180 reproducao_atual=0;
zigdrix 3:273047c393bd 181 if(efeito==0){
zigdrix 3:273047c393bd 182 bTouch.Draw("OFF");
zigdrix 3:273047c393bd 183 desligado=1;
zigdrix 3:273047c393bd 184 }
zigdrix 3:273047c393bd 185 else if(efeito==1){
zigdrix 3:273047c393bd 186 bTouch.Draw("SEM EFEITO");
zigdrix 3:273047c393bd 187 Numero_Amostras=50;
zigdrix 3:273047c393bd 188 TIME=0.000025;
zigdrix 3:273047c393bd 189 }
zigdrix 3:273047c393bd 190 else if(efeito==2){
zigdrix 3:273047c393bd 191 bTouch.Draw("Efeito: ROBO");
zigdrix 3:273047c393bd 192 Numero_Amostras=50;
zigdrix 3:273047c393bd 193 TIME=0.000025;
zigdrix 3:273047c393bd 194 //TIME=0.0000005;
zigdrix 3:273047c393bd 195 }
zigdrix 3:273047c393bd 196 else if(efeito==3){
zigdrix 3:273047c393bd 197 bTouch.Draw("Efeito: REVERB");
zigdrix 3:273047c393bd 198 //Numero_Amostras=15000;
zigdrix 3:273047c393bd 199 //TIME=0.000025;
zigdrix 3:273047c393bd 200 TIME=0.000025;
zigdrix 3:273047c393bd 201 Numero_Amostras=8000;
zigdrix 3:273047c393bd 202 }
zigdrix 3:273047c393bd 203 else if(efeito==4){
zigdrix 3:273047c393bd 204 bTouch.Draw("Efeito: CHORUS");
zigdrix 3:273047c393bd 205 TIME=0.000025;
zigdrix 3:273047c393bd 206 Numero_Amostras=5000;
zigdrix 3:273047c393bd 207 }
zigdrix 3:273047c393bd 208 else if(efeito==5){
zigdrix 3:273047c393bd 209 bTouch.Draw("Efeito: DISTORCAO");
zigdrix 3:273047c393bd 210 TIME=0.000025;
zigdrix 3:273047c393bd 211 Numero_Amostras=50;
zigdrix 3:273047c393bd 212 }
zigdrix 3:273047c393bd 213 else if(efeito==6){
zigdrix 3:273047c393bd 214 bTouch.Draw("Efeito: RADIO");
zigdrix 3:273047c393bd 215 TIME=0.0001;
zigdrix 3:273047c393bd 216 Numero_Amostras=50;
zigdrix 3:273047c393bd 217 }
zigdrix 3:273047c393bd 218 if(efeito!=0){
zigdrix 3:273047c393bd 219 desligado=0;
zigdrix 3:273047c393bd 220 timeout.attach(&Captura_som, TIME);
zigdrix 3:273047c393bd 221 }
zigdrix 3:273047c393bd 222 }
zigdrix 3:273047c393bd 223 timeout3.attach(&Escolha, 1);
zigdrix 3:273047c393bd 224
zigdrix 3:273047c393bd 225 }
zigdrix 1:450d80728151 226