آموزش آردوینوپروژه های آردوینو

ساخت ویژوالایزر موزیک با آردوینو و صفحه نمایش دات ماتریس

در اکثر کنسرت های موسیقی، برخی از المان های نمایشی فانتزی وجود دارد که فضای سالن را جذاب میکنند. تقریباً همه کنسرت ها ، جشنواره ها و کلوپ های شبانه دارای نمایش یا جلوه های بصری هستند. در اینجا یک پروژه ساده و در عین حال موثر برای ایجاد ویژوالایزر (تصویر ساز – Visualizer) موسیقی/صدا با استفاده از Arduino Nano ، ماژول ماتریس نقطه ای 32×8 و سنسور صوتی ارائه شده است. LED های صفحه نمایش ماتریس نقطه ای 32×8 با توجه به سیگنال هایی که آردوینو از طریق میکروفونی که به پین ​​آنالوگ متصل است دریافت می کند ، واکنش نشان می دهند. آردوینو سیگنال صوتی دریافت میکند و آن را از حالت آنالوگ به دیجیتال تبدیل میکند و سپس حالت مناسب با آن را در ماژول های دات ماتریس نمایش میدهد.

ماژول نمایش MAX7219 32×8 دات ماتریس چیست؟

ماژول MAX7219 یک نمایشگر سریال کاتد معمولی ورودی/خروجی است که برای نصب در یک زنجیره افقی یا توسعه در یک صفحه عمودی طراحی شده است تا یک صفحه نمایش همه کاره بسازد. این ماژول صفحه نمایش از رابط سریال سه سیم مناسب برای اتصال به همه بردهای کنترل معمولی مانند Arduino یا Raspberry استفاده می کند.

این ماژول شامل چهار صفحه نمایش ماتریس 8 × 8 نقطه و چهار IC درایور MAX7219 LED برای هر صفحه نمایش است. یک ماژول ماتریس LED 8×8 شامل 64 LED (دیودهای تابش نور) است که به شکل یک ماتریس مرتب شده اند. بنابراین نام آن ماتریس LED است. اگر ماژول به شکل نمودار مدار ترسیم شود ، تصویری مطابق شکل زیر خواهیم داشت:

ماژول نمایش MAX7219 32x8 دات ماتریس چیست؟

همانطور که در تصویر بالا نشان داده شده است ، صفحه نمایش ماتریس 8 × 8 دارای 16 پین است که برای هر سطر 8 عدد و برای هر ستون 8 عدد است. در اینجا ، همه سطرها و ستون ها به هم متصل شده اند تا تعداد پین های مورد نیاز را کاهش دهند. به این روش کنترل تعداد زیادی LED با پین های کمتر Multiplexing گفته می شود. IC های درایور صفحه نمایش MAX7219 LED برای کنترل ماژول های صفحه نمایش استفاده می شود. این IC می تواند الگو یا متن مورد نظر شما را به طور دقیق کنترل و تولید کند. جدا از این ، مزیت دیگر استفاده از این IC این است که تمام LED 64 را می توان تنها با 3 پین کنترل کرد.

مدار ساخت ویژوالایزر با آردوینو

شماتیک کامل اتصال صفحه نمایش ماتریس LED و میکروفون 32×8 به آردوینو نانو در تصویر زیر نشان داده شده است.

مدار ساخت ویژوالایزر با آردوینو

صفحه نمایش ماتریس نقطه ای و میکروفون هر دو دارای پین های 5 ولت و GND آردوینو نانو هستند. اما اگر قصد دارید از ماتریس نقطه با حداکثر روشنایی خود استفاده کنید ، بهتر است از منبع خارجی 5 ولت استفاده کنید زیرا صفحه نمایش هنگام تنظیم حداکثر روشنایی جریان زیادی را جذب می کند. پین داده میکروفون به پین ​​A7 آردوینو نانو متصل است. پین های SPI صفحه نمایش به پین ​​های سخت افزاری SPI Arduino Nano متصل می شوند زیرا پین های سخت افزاری SPI بسیار سریعتر از پین های SPI نرم افزاری هر میکروکنترلری هستند.

قطعات مورد نیاز

  • آردوینو نانو
  • ماژول نمایش ماتریس نقطه ای MAX7219 32×8
  • ماژول میکروفون/میکروفون
مطلب پیشنهادی:  پروژه کنترل سروو موتور با اینترنت آردوینو و ماژول وایفای ESP8266
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

اتصالات بین Arduino Nano ، ماژول ماتریس LED و میکروفون در جدول زیر نشان داده شده است.

Arduino Nano 32×8 LED Matrix
5V VCC
GND GND
D11 DIN
D10 CS
D13 CLK
Arduino Nano Microphone Module
5V VCC
GND GND
A7 OUT

ایده این است که این مدار را در یک محفظه چاپ سه بعدی قرار دهید تا بتوان آن را روی دیوار نصب کرد یا در کنار سیستم موسیقی قرار داد. برای انجام این کار ، من این مدار کامل را روی یک برد سوراخدار لحیم کردم.

مدار ویژوالایزر روی برد سوراخدار

کد آردوینو برنامه نویسی ویژوالایزر

کد کامل Audio Visualizer با استفاده از Arduino در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا ، ما برخی از خطوط مهم کد را توضیح می دهیم. این کد از کتابخانه های arduinoFFT.h و MD_MAX72xx.h استفاده می کند. هر دو کتابخانه را می توان از مدیر کتابخانه Arduino IDE نصب کرد. برای این کار ، Arduino IDE را باز کرده و به Sketch <Include Library <Manage Libraries بروید. اکنون ، arduinoFFT را جستجو کرده و کتابخانه arduinoFFT را (که توسط Enrique Condes ساخته شده است) نصب کنید. به طور مشابه ، کتابخانه MD_MAX72xx.h را نصب کنید.

پس از نصب همه کتابخانه های مورد نیاز ، کد را با قرار دادن کتابخانه ها شروع کنید. کتابخانه ArduinoFFT برای ترجمه سیگنال آنالوگ ورودی به طیف فرکانسی استفاده می شود. کتابخانه MD_MAX72xx برای کنترل صفحه نمایش و ترسیم طیف صوتی روی صفحه استفاده می شود. در حالی که کتابخانه SPI برای برقراری ارتباط SPI بین Arduino و صفحه ماتریس Dot استفاده می شود.

#include <arduinoFFT.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

در مرحله بعد ، یک نمونه برای MD_MAX72XX با عملکرد MD_MAX72XX() ایجاد کنید. این عملکرد به سه پارامتر نیاز دارد ، اولین مورد نوع سخت افزار ، است، مورد دوم پین CS ، و سوم ، حداکثر تعداد دستگاه های متصل است. همچنین ، یک مثال برای arduinoFFT با تابع arduinoFFT() ایجاد کنید.

MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 4);
arduinoFFT FFT = arduinoFFT();

سپس در سطرهای بعدی ، دو آرایه جدید برای ذخیره اجزای طیفی 64 بیتی تعریف کنید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
double realComponent[64];
double imagComponent[64];

اکنون ، در داخل تابع setup() باید Serial Monitor را با نرخ baud 9600 برای اهداف اشکال زدایی راه اندازی کنید. همچنین ، نمایشگر ماتریس نقطه را با تابع ()disp.begin راه اندازی کنید.

void setup()
{
  disp.begin();
  Serial.begin(9600);
}

اکنون ، در داخل تابع حلقه ، 64 نمونه میکروفون را با استفاده از حلقه for از طریق پین A7 آردوینو نانو گرفته و در آرایه “realComponent” که قبلاً تعریف کردیم ذخیره می کنیم.

for (int i=0; i<64; i++)
  {
    realComponent[i] = analogRead(A7)/sensitivity;
    imagComponent[i] = 0;
  }

پس از بدست آوردن 64 مقدار طیفی از میکروفون ، آنها را از طریق الگوریتم FFT عبور دادیم تا 64 جزء طیفی را برای سیگنالهای واقعی و خیالی محاسبه کنیم. سپس در سطرهای بعدی ، این تابع FFT.ComplexToMagnitude() را برای محاسبه قدر 64 جزء طیفی استفاده کردیم.

FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD);
FFT.ComplexToMagnitude(realComponent, imagComponent, 64);

در خطوط بعدی ، از حلقه for برای کنترل همه 32 ستون ماتریس LED استفاده کردیم. در داخل حلقه for ، ابتدا این مقدار ها را به یک محدوده شناخته شده تبدیل کردیم و سپس با استفاده از تابع ئشح، این مقادیر را در محدوده 0 تا 8 ترسیم کردیم.

for(int i=0; i<32; i++)
  {
    realComponent[i] = constrain(realComponent[i],0,80);
    realComponent[i] = map(realComponent[i],0,80,0,8);
    index = realComponent[i];
    value = spectralHeight[index];
    c = 31 - i;
    disp.setColumn(c, value);
  }

تست ویژوالایزر آهنگ ساخته شده با Arduino

پس از آماده شدن سخت افزار و کد ، مدار را مانند تصویر زیر در داخل محفظه چاپ سه بعدی نصب کردیم.

مطلب پیشنهادی:  کنترل فن با توجه به دما با آردوینو (آموزش جامع)

تست ویژوالایزر آهنگ ساخته شده با Arduino

ما از آداپتور 5 ولت برای تغذیه دستگاه استفاده کردیم. در ابتدا ، چیزی روی صفحه نمایش داده نمی شود ، اما هنگامی که ما موسیقی پخش می کنیم یا جلوی میکروفون صحبت می کنیم ، LED های صفحه نمایش ماتریسی با توجه به شدت سیگنال تغییر می کند.

بنابراین ، به این ترتیب است که می توانید از ماژول نمایش نقطه ماتریس با آردوینو برای ایجاد یک تصویر ساز موسیقی/صدا استفاده کنید. در اینجا ، ما از میکروفون برای ورودی صدا استفاده می کنیم ، اما در صورت تمایل می توانید از هدفون خارج از سیستم تلفن همراه/ موسیقی استفاده کنید.

موارد موجود در فایل : سورس کامل

4.2 (5 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

1 دیدگاه

  1. این پروژه رو میشه به صورت مجازی با استفاده از نرم افزار Proteus پیاده سازی کرد؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *