Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

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

Componenten en benodigdheden

Arduino Nano R3
× 1
Weerstand 10k ohm
× 1
Weerstand 100k ohm
× 2
Weerstand 4.75k ohm
× 3
Jumperdraden (algemeen)
× 1
Broodplank (algemeen)
× 1
USB-A naar mini-USB-kabel
× 1
Tactiele schakelaar, bovenkant bediend
× 1
Mannelijke kop 36 Positie 1 rij - lang (0,1")
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Het was mijn eerste poging om een ​​arduino-project te bouwen. Ik ben geïnteresseerd in alles over audioprojecten. Ik vond de Audio Visualizer van Shajeeb, ik probeerde de schaal op het display anders te maken. Een beetje logaritmisch, maar ik maak gewoon wat (Log / exponentiële) tabellen onder Excel en implementeer de datamapping handmatig in de projectcode.

Toegevoegd / wijzig de knop om de weergave te wijzigen:enkele balk (lineaire schaalweergave / dubbele balk - pseudo-log).

Ik hoop dat je het leuk vindt, veel plezier met bouwen.

Code

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.inoArduino
Voel je vrij om te wijzigen / aanpassen aan je behoefte, op mijn aanpassingsonderdeelcode (gegevens opnieuw toewijzen, gemarkeerd met commentaar).
// Gewijzigde code door Christian Suryanto, van (c) 2019 Shajeeb TM// HAZI TECH/ / Bijgewerkt door Christian Suryanto// #include #include #include #include #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // Stel het weergavetype zo in dat MD_MAX72xx bibliotheek zorgt ervoor dat het correct wordt weergegeven#define CLK_PIN 13 // Clock-pin om te communiceren met display#define DATA_PIN 11 // Data-pin om te communiceren met display#define CS_PIN 10 // Control-pin om te communiceren met display#define SAMPLES 64 // Moet een kracht zijn van 2#define MAX_DEVICES 4 // Totaal aantal displaymodules#define xres 32 // Totaal aantal kolommen in het display, moet <=SAMPLES/2#define yres 8 // Totaal aantal rijen in het display#define PREV 0xFF02FD // adres is FFA25D maar 0x is toegevoegd omdat dit is hoe de Arduino wordt verteld dat het HEXADECIMAL is. #define NEXT 0xFFC23D // control stop code#define PWR 0xFFA25D // controle Powerint audio_respons =35; // plaats een waarde tussen 10 en 80. Kleiner het getal, hoe hoger de audioresponsdubbele vReal[SAMPLES];//double vReal2[SAMPLES];double vImag[SAMPLES];char data_avgs[xres];int yvalue;int displaycolumn , displayvalue;int peaks[xres];const int buttonPin =6; // het nummer van de pinint-status van de drukknop =HOOG; // de huidige lezing van de invoer pinint previousState =LAAG; // de vorige lezing van de invoer pinint displaymode; niet-ondertekend lang lastDebounceTime =0; // de laatste keer dat de uitvoerpin werd toggledunsigned long debounceDelay =50; // de debouncetijd; verhogen als de uitvoer flikkert in MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // standaard =standaardpatroon//int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // standaardpatroon//int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1}; // alleen piekpatroon//int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129}; // alleen piek + bodempunt//int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253}; // één opening in de top, 3e licht en verderbool EQ_ON =true; // ingesteld op false om eqbyte eq1 [32] ={40, 45, 50, 60, 65, 70, 75, 95, 110, 110, 110, 110, 110, 110, 110, 110, 130, 130, uit te schakelen, 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); // display objectarduinoFFT FFT =arduinoFFT(); // FFT-object ongeldig setup () {EEPROM.update (1,1); //(geheugenadres, waarde), VOER DIT VOOR DE EERSTE KEER UIT displaymode =EEPROM.read(1); //weergavemodus =1; ADCSRA =0b11100101; // stel ADC in op vrijloopmodus en stel pre-scalar in op 32 (0xe5) ADMUX =0b00000000; // gebruik pin A0 en externe spanningsreferentie pinMode (buttonPin, INPUT); mx.begin(); // initialiseer display mx.control (MD_MAX72XX::INTENSITY, 0); // stel LED-intensiteitsvertraging in (50); // wacht om de referentiespanning gestabiliseerd te krijgen} void loop () {// ++ Sampling int numData; dubbele rSom; for(int i=0; i peaks[i]) peaks[i] =yvalue; ywaarde =pieken[i]; displayvalue=MY_ARRAY[yvalue]; switch (displaymode) { case 1:{ displaycolumn=31-i; mx.setColumn(displaykolom, displaywaarde); // voor links naar rechts } pauze; geval 2:{ displaycolumn=31-(3*i); mx.setColumn(displaycolumn-1, displayvalue); // voor links naar rechts mx.setColumn (displaycolumn, displayvalue); // voor links naar rechts } pauze; } } // -- stuur naar display volgens gemeten waarde displayModeChange (); // controleer of de knop is ingedrukt om de weergavemodus te wijzigen} void displayModeChange () {int reading =digitalRead (buttonPin); if (lezing ==HIGH &&previousState ==LOW &&millis() - lastDebounceTime> debounceDelay) // werkt alleen wanneer ingedrukt { switch (displaymode) { case 1:// ga van modus 1 naar 2 displaymode =2; mx.clear(); vertraging (200); EEPROM.update(1,2); pauze; geval 2:// ga van modus 2 naar 3 weergavemodus =1; mx.clear(); vertraging (200); EEPROM.update(1,1); pauze; } lastDebounceTime =millis(); } previousState =lezen;}

Schema's


Productieproces

  1. Dorstalarm plantalarm
  2. Italiaanse Word Clock
  3. Slechts drie pinnen voor een 4x3-toetsenbord
  4. Sigfox kWh-meter
  5. Bluetooth-temperatuurmeter
  6. DIY Simple Autorange Capacitance Meter (10pF-10000microF)
  7. Gebarengestuurd slot
  8. The Companion IC
  9. USB MIDI-adapter
  10. Een geïsoleerde analoge ingang voor Arduino
  11. Meet je reactietijd