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.
Dependencies: mbed LCD_DISCO_F469NI TS_DISCO_F469NI BSP_DISCO_F469NI
Revision 3:273047c393bd, committed 2020-10-19
- Comitter:
- zigdrix
- Date:
- Mon Oct 19 22:18:46 2020 +0000
- Parent:
- 2:7002787e2ab1
- Commit message:
- 1
Changed in this revision
| BSP_DISCO_F469NI.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/BSP_DISCO_F469NI.lib Thu Oct 17 15:37:17 2019 +0000 +++ b/BSP_DISCO_F469NI.lib Mon Oct 19 22:18:46 2020 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ST/code/BSP_DISCO_F469NI/#9e4eb47092ed +https://os.mbed.com/users/zigdrix/code/BSP_DISCO_F469NI/#e746cdd3e76a
--- a/main.cpp Thu Oct 17 15:37:17 2019 +0000
+++ b/main.cpp Mon Oct 19 22:18:46 2020 +0000
@@ -3,96 +3,224 @@
#include "TS_DISCO_F469NI.h"
#include "LCD_DISCO_F469NI.h"
#include "F469_GUI.hpp"
+#include "math.h"
//#define TIME // Time for toggle the LED (seconds)
+#define Num 20000
+#define Resolucao 4095
Timeout timeout; // Create the Timeout object
-DigitalOut leds[] = {(LED1), (LED2), (LED3), (LED4)};
-/*DigitalOut led2(LED1, 0);
-DigitalOut led3(LED1, 0);
-DigitalOut led4(LED1, 0);*/
+Timeout timeout2;
+Timeout timeout3;
+Timeout timeout4;
+Timeout timeout5;
+Timeout timeout6;
+DigitalOut ports[] = {(D0),(D1),(D2),(D3),(D4),(D5),(D6),(D7),(D8),(D9),(D10),(D11)};
+AnalogIn analog_value(A0);
+//DigitalOut toogle(D14);
-int num,cont=0;
-float TIME=1,x;
-void timer_interrupt()
-{
- cont++;
- if(num==3) leds[cont] = !leds[cont]; // Toggle the LED state
- if(cont==3) cont=-1;
-
- timeout.attach(&timer_interrupt, TIME); // Set again the timer timeout for next iterations
-}
+//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
+//};
+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
+};
+//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
+//};
+char desligado=0;
+int efeito=1;
+int escolha_anterior=-1;
+//1-Sem efeito
+//2-Robo
+//3-Reverb
+//4-Chorus
+//5-Distorcao
+//6-Radio
+int Numero_Amostras=50000;
+int amostra_atual=0;
+int reproducao_atual=0;
+int chorus1_atual=0;
+int chorus2_atual=0;
+int chorus3_atual=0;
+float TIME=0.000025,x;//20Khz
+uint16_t Leitura_som[Num];
+uint16_t Leitura_som_sub[Num];
+uint16_t Reproducao_som[Num];
+uint16_t aux_radio[Num];
+uint16_t chorus1val[Num];
+uint16_t chorus2val[Num];
+uint16_t chorus3val[Num];
-int main(){
- int a;
-
- BSP_LED_Init(DISCO_LED_BLUE);
-
- Label obj10(400, 2, "Felipe", Label::CENTER, Font24); //escreve textos
- Label obj11(400, 40, "Gomes", Label::CENTER, Font24); //escreve textos
-
- //Button button1(10, 90, 120, 100, "1");
-
-
- const int NUMBER_BUTTONS = 3; //Número de botões
- const string STR1[NUMBER_BUTTONS] = {"ON", "OFF","?"}; //string que vai nos botões
+
+char configura=1;
+const int NUMBER_BUTTONS = 7; //Número de botões
+const string STR1[NUMBER_BUTTONS] = {"OFF","Pass","Robo","Rev","Chor","Dist","Rad"}; //string que vai nos botões
//cria botão na tela,(inicio em x, inicio em Y, largura do botão, altura do botão, número de botões
// nome do botão,distãncia dos botões em x, distãncia dos botões em y, número de colunas,
// número de colunas, número de linhas, fonte do texto, cor do texto, cores dos estados do botão)
- ButtonGroup bGroup1(30, 90, 150, 150, NUMBER_BUTTONS, STR1, 40, 5, 3, 1,
- Font24, LCD_COLOR_WHITE, 0xFF003538, 0xFFB70068, 0xFFFF7FFF);
-
- //NumericLabel<int> bTouch(600, 112, Label::LEFT, Font12, LCD_COLOR_MAGENTA);//label para numeros
-
- Label bTouch(600, 112, Label::LEFT, Font24, LCD_COLOR_MAGENTA);
-
-
- //ButtonGroup bGroup2(160, 150, 66, 40, 3, (string[]){"0", "1", "2"}, 5, 5, 3);
- //bGroup2.InactivateAll();
-
- //ButtonGroup bGroup3(10, 150, 66, 40, 2, (string[]){"ON", "OFF"}, 0, 0, 2);
- //bGroup3.TouchedColor(0);
-
-
- //desenha uma barra gráfica horizontal(inicioX, inicioY, Largura, valor mínimo, Valor maximo, valor inicial,
- //para criar uma barra gráfica vertical utiliza a função barH
- SeekBar barH(100, 300, 400, 0, 100, 50, "0", "", "100");
- NumericLabel<float> numLabel1(250, 270, "%5.1f", barH.GetValue());
- NumericLabel<float> numLabel2(250, 320, "%5.1f", (float)barH.GetValue());
- NumericLabel<float> numLabel3(600, 205);//?
-
-
- timeout.attach(&timer_interrupt, TIME); // Set the timer interrupt service rutine (ISR) and the time for the timeout (in seconds)
- for(a=0;a<4;a++)leds[a]=1;
- while(true){
- if (bGroup1.GetTouchedNumber(num))
- if(num==0){
- bTouch.Draw("ON");
- BSP_LED_On(DISCO_LED_BLUE);
- for(a=0;a<3;a++)leds[a]=1;
+ButtonGroup bGroup1(30, 90, 80, 80, NUMBER_BUTTONS, STR1, 20, 20, 7, 1,Font24, LCD_COLOR_WHITE, 0xFF003538, 0xFFB70068, 0xFFFF7FFF);
+Label bTouch(150, 280, Label::LEFT, Font24, LCD_COLOR_MAGENTA);
+
+
+void Escolha(void);
+void Captura_som(void);
+void Reproduz_som(void);
+void escreve_valor_digital_12bits(uint16_t valor);
+void chorus1(void);
+void chorus2(void);
+void chorus3(void);
+
+
+
+
+int main()
+{
+ timeout3.attach(&Escolha, 0.01);
+ timeout.attach(&Captura_som, TIME); // Set again the timer timeout for next iterations
+ while (true)
+ {
+
+ }
+}
+
+void Captura_som()
+{
+ int i,j;
+ float acc1,acc2;
+ if(efeito!=6){
+ Leitura_som[amostra_atual] = ((analog_value.read()*Resolucao));
+ Reproducao_som[amostra_atual]=Leitura_som[amostra_atual];
+ amostra_atual++;
+ if(amostra_atual==Numero_Amostras){
+ amostra_atual=0;
+ if(efeito!=4)timeout2.attach(&Reproduz_som, TIME);
+ }
+ if(efeito==4)timeout2.attach(&Reproduz_som, TIME);
+
+ if(desligado==0)timeout.attach(&Captura_som, TIME); // Set again the timer timeout for next iterations
+ }
+ else{
+ timeout.attach(&Captura_som, TIME);
+ acc1=0;
+ for(j=0;j<151;j++){
+ acc1=acc1+h[j]*Leitura_som[j];
+ }
+
+ escreve_valor_digital_12bits((uint16_t)acc1*3);
+ i=0;
+ while(i<151){
+ Leitura_som[i]=Leitura_som[i+1];
+ i++;
}
- else if(num==1){
- bTouch.Draw("OFF");
- BSP_LED_Off(DISCO_LED_BLUE);
- for(a=0;a<3;a++)leds[a]=1;
- }
- else if(num==2){
- num=3;
- TIME=x/100;
- bTouch.Draw("TROLADO");
- timeout.attach(&timer_interrupt, x/100); // Set again the timer timeout for next iterations
- }
-
-
-
- if (barH.Slide())
- {
- numLabel1.Draw("%5.1f", barH.GetValue());
- x = barH.GetValue();
- numLabel2.Draw("%5.1f", x);
- numLabel3.Draw("%5.3f ms", x/100);
- }
+ //for(i=0;i<50;i++) Leitura_som[i]=Leitura_som[i+1];
+ Leitura_som[151] = ((analog_value.read()*Resolucao));
+ //if(amostra_atual==Numero_Amostras)amostra_atual=0;
}
}
+
+void Reproduz_som()
+{
+ if(efeito==5){
+ if(Reproducao_som[reproducao_atual]>2000)Reproducao_som[reproducao_atual]=2000;
+ }
+ if(efeito==4){
+ chorus1val[reproducao_atual]=Reproducao_som[reproducao_atual];
+ if(reproducao_atual==(1000))timeout4.attach(&chorus1, TIME);
+ }
+ escreve_valor_digital_12bits((uint16_t)Reproducao_som[reproducao_atual]);
+ reproducao_atual++;
+ if(reproducao_atual==Numero_Amostras) reproducao_atual=0;
+ else if(efeito==2)timeout2.attach(&Reproduz_som, TIME/200);
+ //else if(efeito==6)timeout2.attach(&Reproduz_som, TIME);
+ else timeout2.attach(&Reproduz_som, TIME);
+
+}
+
+void chorus1(void){
+ if(efeito==4){
+ if(chorus1_atual==2000)timeout5.attach(&chorus2, TIME);
+ chorus2val[chorus1_atual]=chorus1val[chorus1_atual];
+ escreve_valor_digital_12bits((uint16_t)chorus1val[chorus1_atual]);
+ chorus1_atual++;
+ if(chorus1_atual==Numero_Amostras)chorus1_atual=0;
+ else timeout4.attach(&chorus1, TIME);
+ }
+ }
+void chorus2(void){
+ if(efeito==4){
+ if(chorus2_atual==3000)timeout6.attach(&chorus3, TIME);
+ chorus3val[chorus2_atual]=chorus2val[chorus2_atual];
+ escreve_valor_digital_12bits((uint16_t)chorus2val[chorus2_atual]);
+ chorus2_atual++;
+ if(chorus2_atual==Numero_Amostras)chorus2_atual=0;
+ else timeout5.attach(&chorus2, TIME);
+ }
+ }
+void chorus3(void){
+ if(efeito==4){
+ escreve_valor_digital_12bits((uint16_t)chorus3val[chorus3_atual]);
+ chorus3_atual++;
+ if(chorus3_atual==Numero_Amostras)chorus3_atual=0;
+ else timeout6.attach(&chorus3, TIME);
+ }
+ }
+
+
+void escreve_valor_digital_12bits(uint16_t valor){
+ int cont=0;
+ for(cont=0;cont<12;cont++){
+ ports[cont]=valor & (1<<cont);
+ }
+}
+
+void Escolha(void){
+ if (bGroup1.GetTouchedNumber(efeito));
+ if(escolha_anterior!=efeito){
+ escolha_anterior=efeito;
+ amostra_atual=0;
+ reproducao_atual=0;
+ if(efeito==0){
+ bTouch.Draw("OFF");
+ desligado=1;
+ }
+ else if(efeito==1){
+ bTouch.Draw("SEM EFEITO");
+ Numero_Amostras=50;
+ TIME=0.000025;
+ }
+ else if(efeito==2){
+ bTouch.Draw("Efeito: ROBO");
+ Numero_Amostras=50;
+ TIME=0.000025;
+ //TIME=0.0000005;
+ }
+ else if(efeito==3){
+ bTouch.Draw("Efeito: REVERB");
+ //Numero_Amostras=15000;
+ //TIME=0.000025;
+ TIME=0.000025;
+ Numero_Amostras=8000;
+ }
+ else if(efeito==4){
+ bTouch.Draw("Efeito: CHORUS");
+ TIME=0.000025;
+ Numero_Amostras=5000;
+ }
+ else if(efeito==5){
+ bTouch.Draw("Efeito: DISTORCAO");
+ TIME=0.000025;
+ Numero_Amostras=50;
+ }
+ else if(efeito==6){
+ bTouch.Draw("Efeito: RADIO");
+ TIME=0.0001;
+ Numero_Amostras=50;
+ }
+ if(efeito!=0){
+ desligado=0;
+ timeout.attach(&Captura_som, TIME);
+ }
+ }
+ timeout3.attach(&Escolha, 1);
+
+ }
\ No newline at end of file