فهرست مطالب:
- مرحله 1: مدولاسیون عرض پالس برای ترکیب رنگها
- مرحله 2: صحبت با Shift Registers و LED ها
- مرحله 3: شماتیک
- مرحله 4: کد منبع C ++
- مرحله 5: ابزار کامل شده
- مرحله 6: برنامه: مانیتور بار CPU برای لینوکس با استفاده از Perl
- مرحله 7: برنامه: صحبت با سایر ماژول ها با استفاده از I²C
- مرحله 8: برنامه: "مکعب بازی":-)
- مرحله 9: نمایش تصاویر / انیمیشن ها در ماتریس - هک سریع
- مرحله 10: کنترل تعاملی انیمیشن های ذخیره شده
- مرحله 11: نمایش ویدئوی زنده
- مرحله 12: نور بیشتر تقریباً رایگان
تصویری: صفحه نمایش LED 64 پیکسل RGB - یک کلون آردوینو دیگر: 12 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:58
این صفحه نمایش بر اساس ماتریس LED 8x8 RGB طراحی شده است. برای اهداف آزمایش ، با استفاده از 4 رجیستر شیفت به یک برد استاندارد آردوینو (Diecimila) متصل شد. پس از به کار انداختن آن ، آن را روی یک PCB تخته ای جا به جا کردم. شیفت رجیسترها 8 بیت عرض دارند و به راحتی با پروتکل SPI ارتباط برقرار می کنند. مدولاسیون عرض پالس برای ترکیب رنگها استفاده می شود ، بعداً بیشتر. بخشی از RAM MCU به عنوان فریم بافر برای نگه داشتن تصویر استفاده می شود. RAM ویدیو با یک روال وقفه در پس زمینه تجزیه می شود ، بنابراین کاربر می تواند کارهای مفید دیگری مانند صحبت با رایانه ، دکمه های خواندن و پتانسیومترها را انجام دهد. اطلاعات بیشتر در مورد "آردوینو": www.arduino.cc
مرحله 1: مدولاسیون عرض پالس برای ترکیب رنگها
مدول عرض پالس - چه چیزی؟ مدولاسیون عرض پالس اساساً قدرت تغذیه یک دستگاه برقی را به سرعت روشن و خاموش می کند. توان قابل استفاده از میانگین ریاضی تابع موج مربع در فاصله یک دوره بدست می آید. هر چه مدت عملکرد در موقعیت ON باقی بماند ، قدرت بیشتری دریافت می کنید. PWM همانند دیمر روی چراغ های AC بر روشنایی LED ها تأثیر می گذارد. وظیفه پیش رو این است که به طور جداگانه روشنایی 64 RGB LED (= 192 LED تک!) را به روشی ارزان و آسان کنترل کنید ، بنابراین می توانید کل را بدست آورید طیف رنگ ها ترجیحاً نباید سوسو زدن یا سایر اثرات مزاحم وجود داشته باشد. درک غیر خطی روشنایی که توسط چشم انسان نمایش داده می شود در اینجا مورد توجه قرار نمی گیرد (به عنوان مثال تفاوت بین 10 تا 20 درصد روشنایی "بزرگتر" از بین 90 تا 100 درصد به نظر می رسد). تصویر (1) اصل کار را نشان می دهد الگوریتم PWM بگویید که کد برای روشنایی LED مقدار 7 (0 ، 0) داده شده است. علاوه بر این می داند که حداکثر N مرحله در روشنایی وجود دارد. کد N حلقه ها را برای همه سطوح روشنایی ممکن و همه حلقه های لازم برای سرویس دهی به تک تک LED ها در همه ردیف ها اجرا می کند. در صورتی که شمارنده حلقه x در حلقه روشنایی کوچکتر از 7 باشد ، LED روشن می شود. اگر بزرگتر از 7 باشد ، LED خاموش می شود. با انجام این کار بسیار سریع برای همه LED ها ، سطح روشنایی و رنگ های اصلی (RGB) ، هر LED را می توان به صورت جداگانه تنظیم کرد تا رنگ مورد نظر را نشان دهد. اندازه گیری با یک اسیلوسکوپ نشان داده است که کد بازخوانی صفحه نمایش حدود 50 زمان CPU را می گیرد. بقیه را می توان برای برقراری ارتباط سریال با رایانه ، خواندن دکمه ها ، صحبت با خواننده RFID ، ارسال I استفاده کرد2داده C به ماژول های دیگر…
مرحله 2: صحبت با Shift Registers و LED ها
شیفت رجیستر دستگاهی است که امکان بارگیری داده ها به صورت سریال و خروجی موازی را فراهم می کند. عملیات مخالف نیز با تراشه مناسب امکان پذیر است. در وب سایت arduino یک آموزش خوب در مورد شیفت رجیسترها وجود دارد. LED ها توسط رجیسترهای شیفت 8 بیتی از نوع 74HC595 هدایت می شوند. هر پورت می تواند حدود 25 میلی آمپر جریان را منبع یا غرق کند. جریان کلی هر تراشه غرق شده یا منبع نباید از 70 میلی آمپر تجاوز کند. این تراشه ها بسیار ارزان هستند ، بنابراین بیش از 40 سنت برای هر قطعه پرداخت نکنید. از آنجا که LED ها دارای ویژگی جریان / ولتاژ نمایی هستند ، باید مقاومتهای محدود کننده جریان وجود داشته باشد. با استفاده از قانون اهم: R = (V - Vf) / IR = مقاومت محدود کننده ، V = 5V ، Vf = ولتاژ جلو LED ، I = جریان مورد نظر LED های قرمز دارای ولتاژ رو به جلو در حدود 1.8V ، محدوده آبی و سبز از 2.5V تا 3.5V. از یک مولتی متر ساده برای تعیین آن استفاده کنید. برای تولید مثل مناسب رنگ باید چند نکته را در نظر گرفت: حساسیت طیفی چشم انسان (قرمز/آبی: بد ، سبز: خوب) ، کارایی LED در طول موج و جریان مشخص. در عمل فرد به سادگی 3 پتانسیومتر می گیرد و آنها را تنظیم می کند تا زمانی که LED نور سفید مناسب را نشان دهد. البته نباید از حداکثر جریان LED تجاوز کرد. آنچه در اینجا نیز اهمیت دارد این است که شیفت رجیستر که ردیف ها را هدایت می کند باید جریان LED های 3x8 را تامین کند ، بنابراین بهتر است جریان را زیاد بالا نبرید. من با محدود کردن مقاومتهای 270 اهم برای همه LED ها موفق بودم ، البته این بستگی به نوع ماتریس LED دارد. رجیسترهای تغییر با سریال SPI ارتباط دارند. SPI = رابط جانبی سریال (تصویر (1)). برعکس پورت های سریال در رایانه های شخصی (ناهمزمان ، بدون سیگنال ساعت) ، SPI به یک خط ساعت (SRCLK) نیاز دارد. سپس یک خط سیگنال به دستگاه می گوید که داده ها معتبر هستند (انتخاب تراشه / latch / RCLK). در نهایت دو خط داده وجود دارد ، یکی MOSI (master out slave in) و دیگری MISO (master in slave out) نامیده می شود. SPI برای رابط مدارهای مجتمع ، مانند I استفاده می شود2C. این پروژه به MOSI ، SRCLK و RCLK نیاز دارد. علاوه بر این از خط فعال سازی (G) نیز استفاده می شود. یک چرخه SPI با کشیدن خط RCLK به LOW آغاز می شود (تصویر (2)). MCU داده های خود را بر روی خط MOSI ارسال می کند. حالت منطقی آن با ثبت تغییر در لبه صعودی خط SRCLK نمونه برداری می شود. چرخه با کشیدن خط RCLK به بالا خاتمه می یابد. اکنون داده ها در خروجی ها موجود است.
مرحله 3: شماتیک
تصویر (1) نحوه سیم کشی shift shift ها را نشان می دهد. آنها زنجیر دیزی هستند ، بنابراین داده ها را می توان به این زنجیره و همچنین از طریق آن منتقل کرد. بنابراین افزودن رجیسترهای شیفت بیشتر آسان است.
تصویر (2) بقیه شماتیک را با MCU ، اتصالات ، کوارتز نشان می دهد … فایل پیوست PDF شامل کل آثار ، بهترین برای چاپ است.
مرحله 4: کد منبع C ++
در C/C ++ معمولاً باید قبل از کدگذاری توابع را نمونه سازی کرد. } Arduino IDE نیازی به این مرحله ندارد ، زیرا نمونه های اولیه عملکردها به طور خودکار تولید می شوند. بنابراین نمونه های اولیه عملکرد در کد نشان داده شده در اینجا نشان داده نمی شوند. تصویر (1): setup () functionImage (2): تابع spi_transfer () با استفاده از سخت افزار SPI تراشه ATmega168 (سریعتر اجرا می شود) تصویر (3): کد فریم بافر با استفاده از وقفه سرریز timer1. قطعاتی از کد که برای مبتدیان ظاهری کمی مرموز دارند ، به عنوان مثال while (! (SPSR & (1 << SPIF))))}} مستقیماً از ثبت MCU استفاده کنید. این مثال با کلمات: "در حالی که SPIF-bit در SPSR ثبت شده هیچ کاری انجام نمی دهد". من فقط می خواهم تأکید کنم که برای پروژه های استاندارد ، واقعاً لازم نیست که به این موارد بسیار نزدیک به سخت افزار بپردازیم. مبتدیان نباید از این موضوع بترسند.
مرحله 5: ابزار کامل شده
پس از حل همه مشکلات و اجرای کد ، من فقط مجبور شدم یک طرح PCB ایجاد کنم و آن را به یک خانه زیبا ارسال کنم. بسیار تمیزتر به نظر می رسد:-) تصویر (1): برد کنترل کننده کامل جمعیت تصویر (2): قسمت جلویی PCBI برهنه تصویر (2): سمت عقب کانکتورهایی وجود دارد که PORTC و PORTD تراشه ATmega168/328 و 5V/GND را خراب می کند به این پورت ها شامل خطوط سریال RX ، TX ، I است2خطوط C ، خطوط دیجیتال ورودی/خروجی و 7 خط ADC. این برای جمع آوری سپرها در پشت تخته در نظر گرفته شده است. فاصله برای استفاده از ورق ورق (0.1 اینچ) مناسب است. بوت لودر را می توان با استفاده از سربرگ ICSP چشمک زد (با USBtinyISP adafruit کار می کند). به محض انجام این کار ، فقط از یک آداپتور سریال استاندارد FTDI USB/TTL یا مشابه آن استفاده کنید. من همچنین یک جامپر بازنشانی غیرفعال غیرفعال را اضافه کرده ام. من همچنین یک اسکریپت Perl کوچک تهیه کرده ام (به وبلاگ من مراجعه کنید) ، که تنظیم مجدد خودکار را با کابل های FTDI انجام می دهد که معمولاً از جعبه کار نمی کند (خط RTS در مقابل خط DTR). این روی لینوکس کار می کند ، شاید در MAC. تخته های چاپی و چند DIY KIT در وبلاگ من موجود است. لحیم کاری SMD مورد نیاز است! برای اطلاع از دستورالعمل های ساخت و منابع ماتریس های LED به فایل های PDF مراجعه کنید.
مرحله 6: برنامه: مانیتور بار CPU برای لینوکس با استفاده از Perl
این یک مانیتور بار بسیار اساسی با طرح سابقه است. این بر اساس یک اسکریپت Perl است که "میانگین بار" سیستم را هر 1 ثانیه با استفاده از iostat جمع آوری می کند. داده ها در یک آرایه ذخیره می شوند که با هر بار به روزرسانی تغییر می کند. داده های جدید در بالای لیست اضافه می شود ، قدیمی ترین ورودی حذف می شود. اطلاعات بیشتر و بارگیری (کد…) در وبلاگ من موجود است.
مرحله 7: برنامه: صحبت با سایر ماژول ها با استفاده از I²C
این فقط اثبات اصل است و تا کنون ساده ترین راه حل برای این کار نیست. با استفاده از I2C امکان آدرس دهی مستقیم تا 127 برد "slave" را فراهم می کند. در اینجا صفحه سمت راست ویدئو "master" است (که همه انتقال ها را آغاز می کند) ، صفحه چپ برده است (منتظر داده ها). من2C به 2 خط سیگنال و خطوط برق معمولی (+، -، SDA ، SCL) نیاز دارد. از آنجا که یک اتوبوس است ، همه دستگاهها به طور موازی به آن متصل می شوند.
مرحله 8: برنامه: "مکعب بازی":-)
فقط یک فکر عجیب و غریب است. این مورد همچنین در محوطه چوبی نشان داده شده در صفحه معرفی قرار می گیرد. در پشت آن 5 دکمه وجود دارد که ممکن است برای انجام یک بازی ساده استفاده شود.
مرحله 9: نمایش تصاویر / انیمیشن ها در ماتریس - هک سریع
بنابراین فقط 8x8 پیکسل و چند رنگ در دسترس است. ابتدا از چیزی مانند Gimp برای کاهش تصویر مورد علاقه خود به دقیقا 8x8 پیکسل و ذخیره آن به عنوان فرمت خام ".ppm" (نه ASCII) استفاده کنید. PPM به آسانی قابل خواندن و پردازش با یک اسکریپت Perl است. استفاده از ImageMagick و ابزار خط فرمان "تبدیل" به درستی کار نمی کند. کد arduino جدید را بارگذاری کنید ، سپس از اسکریپت Perl برای بارگذاری در کنترلر استفاده کنید. این لرزش تنها ناهماهنگی تازه سازی LED و نرخ فریم دوربین من است. پس از کمی به روزرسانی کد ، بسیار سریع اجرا می شود. همانطور که می بینید ، تمام تصاویر بصورت زنده به صورت سریال منتقل می شوند. انیمیشن های طولانی تر را می توان در EEPROM خارجی ذخیره کرد ، همانطور که در صفحات مختلف spok-pov انجام می شود.
مرحله 10: کنترل تعاملی انیمیشن های ذخیره شده
چرا اجازه دهید میکروکنترلر از همه چیز لذت ببرد؟ فرقه آردوینو همه چیز درباره محاسبات فیزیکی و تعامل است ، بنابراین فقط یک پتانسیومتر اضافه کنید و کنترل را در دست بگیرید! استفاده از یکی از 8 ورودی مبدل آنالوگ به دیجیتال کار را بسیار ساده کرده است.
مرحله 11: نمایش ویدئوی زنده
استفاده از یک اسکریپت Perl و چند ماژول نمایش ویدیوهای شبه زنده را در سیستم های X11 بسیار آسان می کند. این برنامه بر روی لینوکس کدگذاری شده است و ممکن است بر روی MAC ها نیز کار کند. این چنین عمل می کند: تکرار
مرحله 12: نور بیشتر تقریباً رایگان
تنها با دو مرحله می توان میزان روشنایی را تا حد زیادی افزایش داد. مقاومتهای 270Ω را با مقاومت 169Ω تعویض کرده و یک رجیستر شیفت 74HC595 دیگر را روی IC5 قرار دهید.
توصیه شده:
دمای صفحه نمایش آردوینو بر روی صفحه نمایش LED TM1637: 7 مرحله
دمای صفحه نمایش آردوینو در نمایشگر LED TM1637: در این آموزش نحوه نمایش دما با استفاده از LED Display TM1637 و سنسور DHT11 و Visuino را یاد می گیریم. فیلم را تماشا کنید
نحوه ساخت ساعت بیدرنگ با استفاده از صفحه نمایش Arduino و TFT - Arduino Mega RTC با صفحه نمایش TFT 3.5 اینچی: 4 مرحله
نحوه ساختن ساعت بیدرنگ با استفاده از صفحه نمایش Arduino و TFT | Arduino Mega RTC با صفحه نمایش TFT 3.5 اینچی: از کانال یوتیوب من دیدن کنید. مقدمه:- در این پست قصد دارم "ساعت واقعی" را با استفاده از LCD لمسی 3.5 اینچی TFT ، Arduino Mega بسازم. ماژول 2560 و DS3231 RTC…. قبل از شروع… ویدیو را از کانال YouTube من بررسی کنید .. توجه:- اگر از Arduin استفاده می کنید
نمایش درجه حرارت در ماژول صفحه نمایش LED P10 با استفاده از آردوینو: 3 مرحله (همراه با تصاویر)
نمایش درجه حرارت در ماژول صفحه نمایش LED P10 با استفاده از آردوینو: در آموزش قبلی نحوه نمایش متن بر روی ماژول نقطه صفحه نمایش LED P10 با استفاده از Arduino و DMD Connector توضیح داده شده است ، که می توانید اینجا را بررسی کنید. در این آموزش ما یک پروژه ساده با استفاده از ماژول P10 به عنوان صفحه نمایش
پروژه امتیاز صفحه با صفحه نمایش LED P10 با استفاده از DMD: 6 مرحله (همراه با تصاویر)
پروژه امتیاز صفحه با صفحه نمایش LED P10 با استفاده از DMD: اغلب ما در یک استادیوم فوتبال ملاقات می کنیم. یک تخته LED غول پیکر وجود دارد که به عنوان یک صفحه امتیاز عمل می کند. همچنین در سایر رشته های ورزشی ، اغلب ما صفحه امتیاز صفحه نمایش LED را می شناسیم. اگرچه امکان پذیر نیست ، اما زمینه ای نیز وجود دارد که ما هنوز
نمایش متن در صفحه نمایش LED P10 با استفاده از آردوینو: 5 مرحله (همراه با تصاویر)
نمایش متن در صفحه نمایش P10 LED با استفاده از آردوینو: صفحه نمایش داتماتریکس یا بیشتر به عنوان Running Text در مغازه ها اغلب به عنوان وسیله ای برای تبلیغ محصولات خود یافت می شود ، در استفاده کاربردی و انعطاف پذیر است که فعالان تجاری را تشویق می کند از آن به عنوان توصیه تبلیغاتی استفاده کنند. اکنون استفاده از نقطه