Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

32 (Linier) / 11 (Pseudo Log) banda Audio Spectrum Analyzer

Componentes e suprimentos

Arduino Nano R3
× 1
Resistor 10k ohm
× 1
Resistor 100k ohm
× 2
Resistor 4,75 k ohm
× 3
Fios de jumpers (genérico)
× 1
Breadboard (genérico)
× 1
Cabo USB-A para Mini-USB
× 1
Interruptor tátil, acionado pela parte superior
× 1
Male-Header 36 Position 1 Row- Long (0.1 ")
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Foi minha primeira tentativa de construir um projeto Arduino. Estou interessado em qualquer coisa sobre projetos de áudio. Encontrei o Audio Visualizer do Shajeeb, tentei fazer a escala na tela diferente. Meio logarítmico, mas acabei de criar algumas tabelas (Log / exponencial) no Excel e implementar o mapeamento de dados manualmente no código do projeto.

Adicionado / modificar o botão para alterar a exibição:barra única (exibição de escala linear / barra dupla - pseudo log).

Espero que gostem, aproveite a construção.

Código

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.ino Arduino
Sinta-se à vontade para modificar / personalizar de acordo com sua necessidade, no meu código de peça de personalização (re-mapeamento de dados, marcado com comentário).
 // Código modificado por Christian Suryanto, de (c) 2019 Shajeeb TM // HAZI TECH / / Atualizado por Christian Suryanto // #include  #include  #include  #include  #define HARDWARE_TYPE MD_MAX72XX ::FC16_HW // Defina o tipo de exibição para que MD_MAX72xx a biblioteca o treina corretamente # define CLK_PIN 13 // Pino do relógio para se comunicar com o display # define DATA_PIN 11 // Pino de dados para se comunicar com o display # define CS_PIN 10 // Pino de controle para se comunicar com o display # define SAMPLES 64 // Deve ser um poder de 2 # define MAX_DEVICES 4 // Número total de módulos de exibição # define xres 32 // Número total de colunas no display, deve ser <=SAMPLES / 2 # define yres 8 // Número total de linhas no display # define PREV 0xFF02FD // o endereço é FFA25D, mas 0x é adicionado porque é assim que o arduino é informado de que é HEXADECIMAL. # define NEXT 0xFFC23D // código de parada de controle # define PWR 0xFFA25D // controle Powerint audio_response =35; // coloque um valor entre 10 e 80. Quanto menor o número, maior será a resposta de áudio. Double vReal [SAMPLES]; // double vReal2 [SAMPLES]; double vImag [SAMPLES]; char data_avgs [xres]; int yvalue; int displaycolumn, displayvalue; int picos [xres]; const int buttonPin =6; // o número do botão de pressão pinint state =HIGH; // a leitura atual do pino de entrada previousState =LOW; // a leitura anterior da entrada pinint displaymode; não assinado long lastDebounceTime =0; // a última vez que o pino de saída foi alternado para assinar long debounceDelay =50; // o tempo de debounce; aumentar se a saída piscar em MY_ARRAY [] ={0, 128, 192, 224, 240, 248, 252, 254, 255}; // padrão =padrão padrão // int MY_MODE_1 [] ={0, 128, 192, 224, 240, 248, 252, 254, 255}; // padrão padrão // int MY_MODE_2 [] ={0, 128, 64, 32, 16, 8, 4, 2, 1}; // apenas padrão de pico // int MY_MODE_3 [] ={0, 128, 192, 160, 144, 136, 132, 130, 129}; // apenas pico + ponto inferior // int MY_MODE_4 [] ={0, 128, 192, 160, 208, 232, 244, 250, 253}; // uma lacuna no topo, 3ª luz onwardsbool EQ_ON =true; // definir como falso para desativar eqbyte eq1 [32] ={40, 45, 50, 60, 65, 70, 75, 95, 110, 110, 110, 110, 110, 110, 110, 110, 110, 130, 130, 130, 130, 130, 130, 130, 130, 145, 155, 170, 180, 215, 220, 245, 255}; byte eq2 [11] ={40, 70, 75, 110, 110, 140, 145, 220, 220, 230, 250}; MD_MAX72XX mx =MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // exibe objectarduinoFFT FFT =arduinoFFT (); // objeto FFT void setup () {EEPROM.update (1,1); // (endereço de memória, valor), EXECUTE ISTO PELA PRIMEIRA VEZ displaymode =EEPROM.read (1); // displaymode =1; ADCSRA =0b11100101; // definir ADC para modo de execução livre e definir pré-escalar para 32 (0xe5) ADMUX =0b00000000; // use o pino A0 e a referência de tensão externa pinMode (buttonPin, INPUT); mx.begin (); // inicializa o display mx.control (MD_MAX72XX ::INTENSITY, 0); // definir o atraso de intensidade do LED (50); // aguarde a estabilização da voltagem de referência} void loop () {// ++ Sampling int numData; double rSum; para (int i =0; i  peaks [i]) peaks [i] =yvalue; valor y =picos [i]; displayvalue =MY_ARRAY [yvalue]; switch (modo de exibição) {case 1:{displaycolumn =31-i; mx.setColumn (displaycolumn, displayvalue); // da esquerda para a direita} break; caso 2:{displaycolumn =31- (3 * i); mx.setColumn (displaycolumn-1, displayvalue); // da esquerda para a direita mx.setColumn (displaycolumn, displayvalue); // da esquerda para a direita} break; }} // - enviar para exibir de acordo com o valor medido displayModeChange (); // verifique se o botão foi pressionado para alterar o modo de exibição} void displayModeChange () {int reading =digitalRead (buttonPin); if (leitura ==HIGH &&previousState ==LOW &&millis () - lastDebounceTime> debounceDelay) // funciona apenas quando pressionado {switch (displaymode) {case 1:// move do modo 1 para 2 displaymode =2; mx.clear (); atraso (200); EEPROM.update (1,2); pausa; caso 2:// passa do modo 2 para o modo 3 displaymode =1; mx.clear (); atraso (200); EEPROM.update (1,1); pausa; } lastDebounceTime =millis (); } previousState =reading;} 

Esquemas


Processo de manufatura

  1. Alarme de planta de alerta de sede
  2. Word Clock italiano
  3. Apenas três pinos para um teclado 4x3
  4. Medidor Sigfox kWh
  5. Monitor de temperatura Bluetooth
  6. Medidor de capacitância DIY Simple Autorange (10pF-10000microF)
  7. Bloqueio controlado por gestos
  8. O Companion IC
  9. Uma entrada analógica isolada para Arduino
  10. Meça seu tempo de reação