Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Analizador de espectro de audio de 32 (Linier) / 11 (Pseudo Log) bandas

Componentes y suministros

Arduino Nano R3
× 1
Resistencia de 10k ohmios
× 1
Resistencia 100k ohm
× 2
Resistencia de 4,75 k ohmios
× 3
Cables de puente (genéricos)
× 1
Breadboard (genérico)
× 1
Cable USB-A a Mini-USB
× 1
Interruptor táctil, accionado por la parte superior
× 1
Male-Header 36 Position 1 Row - Long (0.1 ")
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Fue mi primer intento de construir un proyecto arduino. Estoy interesado en cualquier cosa sobre proyectos de audio. Encontré el Visualizador de audio de Shajeeb, intenté hacer que la escala en la pantalla fuera diferente. Es un poco logarítmico, pero solo hago algunas tablas (logarítmicas / exponenciales) en Excel e implemento el mapeo de datos manualmente en el código del proyecto.

Se agregó / modificó el botón para cambiar la visualización:barra única (visualización de escala lineal / barra doble - pseudo log).

Espero que les guste, disfruten construyendo.

Código

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.ino Arduino
Siéntase libre de modificar / personalizar para satisfacer sus necesidades, en mi código de parte de personalización (datos de reasignación, marcados con un comentario).
 // Código modificado por Christian Suryanto, de (c) 2019 Shajeeb TM // HAZI TECH / / Actualizado por Christian Suryanto // #include  #include  #include  #include  #define HARDWARE_TYPE MD_MAX72XX ::FC16_HW // Establezca el tipo de pantalla para que MD_MAX72xx la biblioteca lo configura correctamente # definir CLK_PIN 13 // Pin de reloj para comunicarse con la pantalla # definir DATA_PIN 11 // Pin de datos para comunicarse con la pantalla # definir CS_PIN 10 // Pin de control para comunicarse con la pantalla # definir SAMPLES 64 // Debe ser una potencia de 2 # define MAX_DEVICES 4 // Número total de módulos de visualización # define xres 32 // Número total de columnas en la pantalla, debe ser <=SAMPLES / 2 # define yres 8 // Número total de filas en la pantalla # define PREV 0xFF02FD // la dirección es FFA25D pero se agrega 0x porque así es como se le dice al arduino que es HEXADECIMAL. # define NEXT 0xFFC23D // código de parada de control # define PWR 0xFFA25D // control Powerint audio_response =35; // poner un valor entre 10 y 80. Cuanto menor sea el número, mayor será la respuesta de audio 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; // el número del pinint del botón pulsador state =HIGH; // la lectura actual de la entrada pinint previousState =LOW; // la lectura anterior de la entrada pinint displaymode; unsigned long lastDebounceTime =0; // la última vez que se alteró el pin de salida unsigned long debounceDelay =50; // el tiempo de rebote; aumentar si la salida parpadea en MY_ARRAY [] ={0, 128, 192, 224, 240, 248, 252, 254, 255}; // predeterminado =patrón estándar // int MY_MODE_1 [] ={0, 128, 192, 224, 240, 248, 252, 254, 255}; // patrón estándar // int MY_MODE_2 [] ={0, 128, 64, 32, 16, 8, 4, 2, 1}; // solo patrón de pico // int MY_MODE_3 [] ={0, 128, 192, 160, 144, 136, 132, 130, 129}; // solo pico + punto inferior // int MY_MODE_4 [] ={0, 128, 192, 160, 208, 232, 244, 250, 253}; // un espacio en la parte superior, tercera luz en adelante bool EQ_ON =true; // establecer en falso para deshabilitar eqbyte eq1 [32] ={40, 45, 50, 60, 65, 70, 75, 95, 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); // mostrar objectarduinoFFT FFT =arduinoFFT (); // Configuración vacía del objeto FFT () {EEPROM.update (1,1); // (dirección de memoria, valor), EJECUTE ESTO POR PRIMERA VEZ displaymode =EEPROM.read (1); // modo de visualización =1; ADCSRA =0b11100101; // establecer ADC en modo de ejecución libre y establecer preescalar en 32 (0xe5) ADMUX =0b00000000; // use el pin A0 y la referencia de voltaje externo pinMode (buttonPin, INPUT); mx.begin (); // inicializar display mx.control (MD_MAX72XX ::INTENSITY, 0); // establece el retardo de la intensidad del LED (50); // esperar a estabilizar el voltaje de referencia} void loop () {// ++ Sampling int numData; doble rSum; for (int i =0; i  peaks [i]) peaks [i] =yvalue; yvalue =picos [i]; displayvalue =MY_ARRAY [yvalue]; cambiar (modo de visualización) {caso 1:{columna de visualización =31-i; mx.setColumn (displaycolumn, displayvalue); // de izquierda a derecha} break; caso 2:{displaycolumn =31- (3 * i); mx.setColumn (displaycolumn-1, displayvalue); // de izquierda a derecha mx.setColumn (displaycolumn, displayvalue); // de izquierda a derecha} break; }} // - enviar a mostrar según el valor medido displayModeChange (); // verifica si el botón está presionado para cambiar el modo de visualización} void displayModeChange () {int lectura =digitalRead (buttonPin); if (lectura ==HIGH &&previousState ==LOW &&millis () - lastDebounceTime> debounceDelay) // funciona solo cuando se presiona {switch (displaymode) {case 1:// pasar del modo 1 al 2 displaymode =2; mx.clear (); retraso (200); EEPROM.update (1,2); descanso; caso 2:// pasar del modo 2 al 3 displaymode =1; mx.clear (); retraso (200); EEPROM.update (1,1); descanso; } lastDebounceTime =millis (); } previousState =reading;} 

Esquemas


Proceso de manufactura

  1. Alerta de sed Alarma de planta
  2. Reloj Word en italiano
  3. Solo tres pines para un teclado de 4x3
  4. Medidor de kWh Sigfox
  5. Monitor de temperatura Bluetooth
  6. Medidor de capacitancia de rango automático simple para bricolaje (10pF-10000microF)
  7. Bloqueo controlado por gestos
  8. El IC complementario
  9. Adaptador MIDI USB
  10. Una entrada analógica aislada para Arduino
  11. Mide tu tiempo de reacción