Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

32 (Linier) / 11 (Pseudolog)-Band-Audiospektrumanalysator

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Widerstand 10k Ohm
× 1
Widerstand 100k Ohm
× 2
Widerstand 4,75 kOhm
× 3
Jumper (generisch)
× 1
Breadboard (generisch)
× 1
USB-A-auf-Mini-USB-Kabel
× 1
Tastschalter, von oben betätigt
× 1
Male-Header 36 Position 1 Row- Long (0,1")
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Es war mein erster Versuch, ein Arduino-Projekt aufzubauen. Ich interessiere mich für alles, was mit Audioprojekten zu tun hat. Ich habe den Audio Visualizer von Shajeeb gefunden und versucht, die Skala auf dem Display anders zu gestalten. Irgendwie logarithmisch, aber ich erstelle nur einige (Log / Exponential-)Tabellen unter Excel und implementiere die Datenzuordnung manuell im Code des Projekts.

Schaltfläche zum Ändern der Anzeige hinzugefügt / ändern:Einzelbalken (lineare Skalaanzeige / Doppelbalken - Pseudolog).

Hoffe es gefällt dir, viel Spaß beim Bauen.

Code

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.inoArduino
Fühlen Sie sich frei, meinen Anpassungsteilcode an Ihre Bedürfnisse anzupassen (Neuzuordnungsdaten, mit Kommentar gekennzeichnet).
// Geänderter Code von Christian Suryanto, ab (c) 2019 Shajeeb TM// HAZI TECH/ / Aktualisiert von Christian Suryanto// #include #include #include #include #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // Anzeigetyp so einstellen, dass MD_MAX72xx Bibliothek Treets es richtig#define CLK_PIN 13 // Clock-Pin für die Kommunikation mit dem Display#define DATA_PIN 11 // Daten-Pin für die Kommunikation mit dem Display#define CS_PIN 10 // Steuer-Pin für die Kommunikation mit dem Display#define SAMPLES 64 // Muss ein Strom sein of 2#define MAX_DEVICES 4 // Gesamtzahl Anzeigemodule#define xres 32 // Gesamtzahl der Spalten in der Anzeige, muss <=SAMPLES/2 sein#define yres 8 // Gesamtzahl der Zeilen in der Anzeige#define PREV 0xFF02FD // Adresse ist FFA25D, aber 0x wird hinzugefügt, weil so dem Arduino mitgeteilt wird, dass es HEXADECIMAL ist. #define NEXT 0xFFC23D // Kontrollstoppcode #define PWR 0xFFA25D // Steuerung Powerint audio_response =35; // Geben Sie einen Wert zwischen 10 und 80 ein. Je kleiner die Zahl, desto höher die Audioantwortdouble vReal[SAMPLES]; //double vReal2[SAMPLES];double vImag[SAMPLES];char data_avgs[xres];int yvalue;int displaycolumn , displayvalue;int Peaks[xres];const int buttonPin =6; // die Nummer des Pinint-Zustands der Drucktaste =HIGH; // der aktuelle Messwert vom Eingang pinint previousState =LOW; // der vorherige Messwert vom Eingang pinint displaymode; unsigned long lastDebounceTime =0; // das letzte Mal, als der Ausgangspin toggledunsigned war long debounceDelay =50; // die Entprellzeit; erhöhen, wenn die Ausgabe flickersint MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // Standard =Standardmuster //int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // Standardmuster //int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1}; // nur Peakmuster //int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129}; // nur Peak + Bottom Point //int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253}; // eine Lücke oben, 3. Licht weiterbool EQ_ON =true; // auf false setzen um 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); // Objekt anzeigenarduinoFFT FFT =arduinoFFT (); // FFT-Objekt void setup () { EEPROM.update (1,1); //(Speicheradresse, Wert), DIES ZUM ERSTEN MAL AUSFÜHREN displaymode =EEPROM.read(1); // Anzeigemodus =1; ADCSRA =0b11100101; // ADC in den Freilaufmodus setzen und Pre-Scalar auf 32 (0xe5) setzen ADMUX =0b00000000; // Pin A0 und externe Spannungsreferenz verwenden PinMode (buttonPin, INPUT); mx.begin(); // Anzeige initialisieren mx.control(MD_MAX72XX::INTENSITY, 0); // LED-Intensitätsverzögerung einstellen (50); // warten, bis die Referenzspannung stabilisiert ist} void loop () { // ++ Sampling int numData; doppelte rSumme; for(int i=0; i peaks[i]) peaks[i] =yvalue; yWert =Spitzen[i]; displayvalue=MY_ARRAY[yvalue]; Schalter (Anzeigemodus) { Fall 1:{ Anzeigespalte =31-i; mx.setColumn(Anzeigespalte, Anzeigewert); // von links nach rechts} break; Fall 2:{ Anzeigespalte =31-(3*i); mx.setColumn(displaycolumn-1, displayvalue); // von links nach rechts mx.setColumn(displaycolumn, displayvalue); // von links nach rechts} break; } } // -- senden zur Anzeige entsprechend dem gemessenen Wert displayModeChange (); // überprüfen, ob die Taste gedrückt wurde, um den Anzeigemodus zu ändern}void displayModeChange () { Int Reading =digitalRead (buttonPin); if (lesen ==HIGH &&previousState ==LOW &&millis() - lastDebounceTime> debounceDelay) // funktioniert nur, wenn gedrückt {switch (displaymode) { case 1:// von Modus 1 zu 2 wechseln displaymode =2; mx.clear(); Verzögerung (200); EEPROM.update(1,2); brechen; Fall 2:// von Modus 2 nach 3 wechseln displaymode =1; mx.clear(); Verzögerung (200); EEPROM.update(1,1); brechen; } lastDebounceTime =millis(); } previousState =Lesen;}

Schaltpläne


Herstellungsprozess

  1. Pflanzenalarm bei Durstalarm
  2. italienische Wordclock
  3. Nur drei Pins für eine 4x3-Tastatur
  4. Sigfox-kWh-Zähler
  5. Bluetooth-Temperaturüberwachung
  6. Selbstgemachter einfacher Autorange-Kapazitätsmesser (10pF-10000microF)
  7. Gestengesteuerte Sperre
  8. Der Companion-IC
  9. Ein isolierter Analogeingang für Arduino
  10. Messen Sie Ihre Reaktionszeit