Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

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

Komponen dan persediaan

Arduino Nano R3
× 1
Resistor 10k ohm
× 1
Resistor 100k ohm
× 2
Resistor 4.75k ohm
× 3
Kabel jumper (generik)
× 1
Breadboard (generik)
× 1
Kabel USB-A ke Mini-USB
× 1
Saklar Taktil, Digerakkan Atas
× 1
Male-Header 36 Posisi 1 Baris- Panjang (0,1")
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Itu adalah upaya pertama saya untuk membangun proyek arduino. Saya tertarik pada apa pun tentang proyek audio. Menemukan Audio Visualizer oleh Shajeeb, saya mencoba membuat skala pada tampilan berbeda. Jenis Logaritma, tetapi saya hanya membuat beberapa tabel (Log / eksponensial) di bawah Excel, dan menerapkan pemetaan data secara manual dalam kode proyek.

Menambahkan / memodifikasi tombol untuk mengubah tampilan:bilah tunggal (tampilan skala linier / bilah ganda - log semu).

Semoga Anda menyukainya, selamat membangun.

Kode

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.inoArduino
Jangan ragu untuk memodifikasi / menyesuaikan sesuai kebutuhan Anda, pada kode bagian kustomisasi saya (data pemetaan ulang, ditandai dengan komentar).
// Kode dimodifikasi oleh Christian Suryanto, dari (c) 2019 Shajeeb TM// HAZI TECH/ / Diperbarui oleh Christian Suryanto// #include #include #include #include #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // Atur tipe tampilan agar MD_MAX72xx library membuat pohon dengan benar#menentukan CLK_PIN 13 // Pin jam untuk berkomunikasi dengan tampilan#menentukan DATA_PIN 11 // Pin data untuk berkomunikasi dengan tampilan#menentukan CS_PIN 10 // Pin kontrol untuk berkomunikasi dengan tampilan#menentukan SAMPEL 64 // Harus berupa daya of 2#define MAX_DEVICES 4 // Jumlah total modul tampilan#define xres 32 // Jumlah kolom dalam tampilan, harus <=SAMPLES/2#define thn 8 // Jumlah baris dalam tampilan#define PREV 0xFF02FD // alamat adalah FFA25D tetapi 0x ditambahkan karena ini adalah bagaimana arduino diberitahu bahwa itu adalah HEXADECIMAL.#define NEXT 0xFFC23D // control stop code#define PWR 0xFFA25D // kontrol Powerint audio_response =35; // beri nilai antara 10 dan 80. Semakin kecil angkanya, semakin tinggi respons audiodouble vReal[SAMPLES];//double vReal2[SAMPLES];double vImag[SAMPLES];char data_avgs[xres];int yvalue;int displaycolumn , displayvalue;int puncak[xres];const int buttonPin =6; // jumlah status pinint tombol tekan =TINGGI; // pembacaan saat ini dari input pinint beforeState =LOW; // pembacaan sebelumnya dari mode tampilan pinint input; unsigned long lastDebounceTime =0; // terakhir kali pin output di-toggledunsigned long debounceDelay =50; // waktu debounce; meningkat jika output berkedip MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // default =pola standar//int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; // pola standar//int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1}; // hanya pola puncak//int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129}; // hanya puncak + titik bawah//int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253}; // satu celah di atas , lampu ke-3 ke depan bool EQ_ON =true; // set ke false untuk menonaktifkan 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); // tampilkan objectarduinoFFT FFT =arduinoFFT(); // FFT objek batal setup() { EEPROM.update(1,1); //(alamat memori, nilai), JALANKAN INI UNTUK PERTAMA KALI displaymode =EEPROM.read(1); //mode tampilan =1; ADCSRA =0b11100101; // setel ADC ke mode lari bebas dan setel pra-skalar ke 32 (0xe5) ADMUX =0b00000000; // gunakan pin A0 dan pinMode referensi tegangan eksternal (buttonPin, INPUT); mx.mulai(); // inisialisasi tampilan mx.control(MD_MAX72XX::INTENSITY, 0); // setel penundaan intensitas LED(50); // tunggu sampai tegangan referensi distabilkan} void loop() { // ++ Sampling int numData; rSum ganda; untuk(int i=0; i puncak[i]) puncak[i] =nilai; ynilai =puncak[i]; displayvalue=MY_ARRAY[ynilai]; sakelar (mode tampilan) { kasus 1:{ kolom tampilan=31-i; mx.setColumn(kolom tampilan, nilai tampilan); // untuk kiri ke kanan } istirahat; kasus 2:{ kolom tampilan=31-(3*i); mx.setColumn(kolom tampilan-1, nilai tampilan); // untuk mx.setColumn dari kiri ke kanan(kolom tampilan, nilai tampilan); // untuk kiri ke kanan } istirahat; } } // -- kirim ke tampilan menurut nilai terukur displayModeChange(); // periksa apakah tombol ditekan untuk mengubah mode tampilan}void displayModeChange() { int reading =digitalRead(buttonPin); if (membaca ==TINGGI &&Status sebelumnya ==RENDAH &&milis() - lastDebounceTime> debounceDelay) // hanya berfungsi saat ditekan { switch (mode tampilan) { case 1:// pindah dari mode 1 ke 2 mode tampilan =2; mx.clear(); penundaan (200); EEPROM.update(1,2); merusak; kasus 2:// pindah dari mode 2 ke 3 mode tampilan =1; mx.clear(); penundaan (200); EEPROM.update(1,1); merusak; } lastDebounceTime =milis(); } status sebelumnya =membaca;}

Skema


Proses manufaktur

  1. Alarm Tanaman Peringatan Haus
  2. Jam Kata Italia
  3. Hanya Tiga Pin untuk Keypad 4x3
  4. Sigfox kWh Meter
  5. Pemantau Suhu Bluetooth
  6. Pengukur Kapasitansi Autorange Sederhana DIY (10pF-10000microF)
  7. Kunci yang Dikendalikan Gerakan
  8. IC Pendamping
  9. Input Analog Terisolasi untuk Arduino
  10. Ukur waktu reaksi Anda