بیایید یک نوار پیکسل را با HL1606، Arduino UNO و Spectrum Shield کنار هم قرار دهیم تا یک آنالایزر طیف "بزرگ" هفت باند با ساختار ساده بسازیم.
نوار مورد استفاده از کنترلر HL1606 برای مدیریت مستقیم هر یک از LED ها استفاده می کند. این تراشه دو گروه RGB را اجرا می کند و دارای 4 پین برای ورودی/خروجی است. پروتکل ارتباط سریال اجازه می دهد تا هر زمان که تراشه داده های جدیدی دریافت می کند، ورودی به خروجی عبور کند. به لطف ساعت ارائه شده در خط کنترل، داده ها از یک ماژول به ماژول دیگر منتقل می شوند. هر نوار میتواند از تعداد متغیری از ماژولها تا حداکثر تئوری که فقط با سرعتی که میخواهیم وضعیت LED را تغییر دهیم تعیین میشود، تشکیل شود.
هر تراشه بدون نمایش داده های دریافتی در مسیر عبور ادامه می دهد تا زمانی که وضعیت پین قفل (Ls) تغییر کند. سپس مقدار را از رجیستری ارتباطی خود در رجیستری که شش کانال را پایلوت می کند، می نویسد.
برای HL1606، داده ها یک بیت مپ (یک کلمه یک بایت برای هر LED RGB) مربوط به هر یک از سه LED است که بر اساس جدول حقیقتی که دارای دو بیت برای هر LED است مدیریت می شود. این تراشه دارای مدیریت ترکیب خودکار (PWM) نیست، اما از یک خط SI برای ارائه فرکانس ترکیب خودکار استفاده می کند که به عنوان یک عملکرد مستقل در دسترس است.
دومین جزء کلیدی این پروژه یک تراشه MSGEQ7 است. این تراشه برای اکولایزرهای هفت باند، برای نمایش سطح پیک هر یک از باندها طراحی شده است. تنها با هشت پین، مکانیزم «هوشمندانه» دارد: این تراشه، روی یک پایه، سطح ولتاژی برابر با سطح پیک یکی از هفت فرکانس مدیریت شده ارائه میکند.
انتقال از یک فرکانس به فرکانس دیگر از طریق یک پین بارق مدیریت می شود، که یک مالتی پلکسر شامل هر هفت فیلتر Bandpass با آشکارسازهای پیک را افزایش می دهد.
اساساً روی همان پین روی میتوان دنبالهای هفت سطح اوج برای هفت باند با محوریت 63، 160، 400، 1000، 2500، 6250 و 16000 هرتز را خواند.
اگر Arduino UNO را اضافه کنیم، همه چیزهایی را که برای خواندن هفت مقدار در باندهای فرکانسی مختلف نیاز داریم، و نمایشی از همان مقدار روی یک سری میله ایجاد می کنیم، در واقع تحلیلگر غول پیکر طیف ما.
ایجاد هفت باند بدون برش نوار led
ماهیت انعطافپذیر نواری که انتخاب کردهایم به ما امکان میدهد آنطور که ترجیح میدهیم مدل کنیم: در مورد ما، تنها با تا کردن نوار برای تشکیل یک سیم پیچ، هفت نوار باند به دست میآید. بین یک میله و دیگری سه LED باقی می گذاریم (برای جلوگیری از استرس بیش از حد بر روی نوار).
ارتفاع میله به طول کل بستگی دارد. سیستم عامل آن را تنها با استفاده از LED های مورد نیاز تنظیم می کند. در مورد ما از یک نوار استاندارد 5 متری و 160 LED استفاده می کنیم: بنابراین شش منحنی با سه LED خواهیم داشت (18 LED استفاده نمی شود) تا هر کدام هفت میله LED 20 داشته باشیم. دو دیود در انتهای نوار بلا استفاده باقی می مانند که در شمارش در نظر گرفته می شود.
با این ترتیب، میله های زوج در یک آیه کار می کنند و میله های فرد در دیگری: این توسط سیستم عامل مدیریت می شود.
سپر طیف
تراشه عجیب و غریب MSGEQ7 توجه چندین شرکت را به خود جلب کرده است. بنابراین، Bliptronics و Sparkfun یک Spectrum Shield ایجاد کردهاند: یک محافظ برای آردوینو، نصب دو تراشه و دو جک استریو: یکی برای دریافت سیگنال ورودی و دیگری برای خروجی عبور.
دو MSGEQ7 کانالهای سیگنال استریو را کنترل میکنند که از پایه آنالوگ A0 و A1 توسط آردوینو خوانده میشوند. Reset و Strobe MSGEQ7 به ترتیب به D5 و D4 آردوینو متصل هستند.
سپر دارای دکمه ای برای تنظیم مجدد آردوینو است که از طریق کانکتورهای جانبی متصل شده است، در حالی که یک منطقه بزرگ Breadboard به شما امکان می دهد هر جزء جانبی را اضافه کنید.
برای این شیلد به کتابخانه خاصی نیاز ندارید: با اعمال Reset و Strobe ترتیب سطوح ورودی آنالوگ آردوینو را در یک حلقه بی پایان خواهید داشت. چرخه ای که بردار هفت مقدار را تغذیه می کند، می توانید داده ها را به نمایش گرافیکی منتقل کنید.
برای جزئیات بیشتر: تجزیه و تحلیل طیف بزرگ با آردوینو
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
Let’s put together a pixel strip with an HL1606, an Arduino UNO and the Spectrum Shield to build a seven bands “large” Spectrum Analyzer of simple construction.
The Strip used uses the HL1606 controller to allow direct management of each of the LEDs. The chip runs two RGB groups and has 4-pin for input/output. The serial communication protocol allows input to output passage whenever the chip receives new data. Data move from one module to another thanks to a clock provided on the control line. Every strip can be composed of a variable number of modules up to a theoretical maximum determined only by the speed with which we want to change the LEDs status.
Each chip continues in the pass through without displaying received data, until the latch pin (L-s) status changes . Then it writes the value from it’s communication registry in registry piloting the six channels.
For the HL1606, data is a bitmap (a one byte word for each RGB LEDS) corresponding to each of the three LEDs, managed according to a truth table having two bits for each LED. The chip does not have autonomous blending management (PWM), but it uses a SI line to give the automatic blending frequency, which is available as a stand-alone function.
The second key component of this project is a MSGEQ7 chip. The chip is designed for seven-band equalizers, for displaying the peak level of each of the bands. With just eight pins it has a “clever” mechanism: this chip offers, on a single pin, a voltage level that is equal to the peak level of one of the seven frequencies managed.
The transition from one frequency to another is managed via a strobe pin, which increments a multiplexer including all seven Bandpass Filters with peak detectors.
Basically, on the same pin on can be read a sequence the seven peak levels for the seven bands centered on 63, 160, 400, 1,000, 2,500, 6,250 and 16,000 Hz.
If we add an Arduino UNO, we have everything we need to read the seven values on different frequency bands, and create a representation of the same on a series of bars, in fact our giant Spectrum analyzer.
Creating seven bands without cutting the led strip