راه اندازی واحدPWM ماژول ESP32 و شرح خط به خط برنامه LED RGB
برای دیدن آموزش جلسه اول(معرفی-نرم افزار) کلیک کنید.
برای دیدن آموزش جلسه دوم(اردوینو-Arduino )کلیک کنید.
برای دیدن آموزش جلسه سوم(پروگرام کردن یک برنامه ساده) کلیک کنید.
برای دیدن آموزش جلسه چهارم(برنامه چشمک زن ال ای دی - GPIO) کلیک کنید.
برای دیدن آموزش جلسه پنجم(راه اندازی کلید ورودی) کلیک کنید.
برای دیدن آموزش جلسه ششم(راه اندازی ADC) کلیک کنید.
برای دیدن آموزش جلسه هفتم(راه اندازی DAC) کلیک کنید.
در این مرحله قصد داریم تا نحوه راه اندازی و برنامه نویسی واحد PWM را آموزش دهیم و سپس با استفاده از این امکان ماژولر، یک LED RGB را به ماژول متصل و با استفاده از ماژول طیف متنوعی از رنگ ها را با این LED ها بسازیم.
مانند جلسات قبل یک پروژه ایجاد می کنیم و کد های مربوط به برنامه را در آن می نویسیم.برنامه این جلسه به همراه توضیحات در ادامه این مطلب آمده است.
در این بخش پایه هایی که قرار است به عنوان پایه PWM استفاده شوند را مشخص می نماییم.
در این پروژه پایه GPIO32 که پایه شماره 8 ماژول می باشد به عنوان خروجی LED قرمز و پایه GPIO33 که پایه شماره 9 ماژول می باشد به عنوان خروجی LED سبز و پایه GPIO25 که پایه شماره 10 ماژول می باشد به عنوان خروجی LED آبی در نظر گرفته شده اند.
در این خط از برنامه یک آرایه سه عضوی مشخص شده است که عضو اول که مربوط به رنگ قرمز است مقدار یک و عضو دوم که مربوط به رنگ سبز است مقدار 2 و عضو سوم که مربوط به رنگ آبی است مقدار 3 می گیرند.
در صورتیکه LED RGB استفاده شده به صورت آند مشترک بود مقدار این متغیر را true و در صورتیکه به صورت کاتد مشترک بسته شده بود مقدار متغیر را false در نظر می گیریم
متغیر مربوط به رنگ می باشد که مقدار 0 تا 255 را می توان به آن داد.
سه متغیر تعریف شده که هر کدام از آنها اولین حرف رنگ مرتبط با خود می باشند.
متغیر مربوط به brightness می باشد .
به هر کدام از پایه ها یک مقدار نسبت می دهیم که نمایانگر شماره کانال می باشد
طریقه استفاده از تابع ledcSetup به این صورت است که آرگومان اول شماره کانال، آرگومان دوم فرکانس کاری PWM و آرگومان سوم رزولوشن PWM می باشد که مقدار channels اعداد بین 0 تا 15 می تواند قرار گیرد و مقدار رزولوشن را می توان بین 1 تا 16 بیت در نظر گرفت
کانال یک که به مربوط به رنگ قرمز می باشد را با فرکانس PWM=12 KHz و رزولوشن 8 بیتی تنظیم می نماید
کانال یک که به مربوط به رنگ سبز می باشد را با فرکانس PWM=12 KHz و رزولوشن 8 بیتی تنظیم می نماید
کانال یک که به مربوط به رنگ آبی می باشد را با فرکانس PWM=12 KHz و رزولوشن 8 بیتی تنظیم می نماید
عبارت داخل دابل کوتیشن در سریال مانیتور نمایش داده می شود
مقادیر مربوط به هر سه رنگ را با عدد 255 مقدار دهی می کند بعد از اجرای این خطوط باید هر سه رنگ بصورت کامل روشن شده باشند در صورتی که LED ها روشن نشدن وضعیت سیم بندی آنها از نظر کاتد یا آند مشترک بررسی شوند.
یک تاخیر 2 ثانیه ای ایجاد می کند
عبارت داخل دابل کوتیشن در سریال مانیتور نمایش داده می شود
مقادیر مربوط به هر سه رنگ را با عدد 0 مقدار دهی می کند بعد از اجرای این خطوط باید هر سه رنگ بصورت کامل خاموش شده باشند
یک تاخیر 2 ثانیه ای ایجاد می کند
عبارت داخل دابل کوتیشن در سریال مانیتور نمایش داده می شود
در این حلقه مقدار متغیر color با هربار اجرا حلقه یکی اضافه می شود تا به 255 برسد و از حلقه خارج شود
با استفاده از این تابع و مقدار متغیر color درجه رنگ که بین 0 تا 360 درجه است به مقدارهای مناسب برای LED RGB تبدیل می شود
مقادیر بدست آمده پس از اجرای تابع مربوط به RGB بر روی پایه های مربوط به هر رنگ قرار می گیرند
یک تاخیر 100 میلی ثانیه ایجاد می شود
Hue یک مقدار بین 0 تا 360 (درجه) می باشد که مشخص می نماید موقعیت رنگ انتخاب شده در نوار رنگی مشخص شده در شکل زیر کجاست
برای کسب اطلاعات بیشتردر مورد Hue می توانید به آدرس زیر مراجعه نمایید:
https://en.wikipedia.org/wiki/File:HueScale.svg
تابع زیر وظیفه دارد تا مقادیر دریافتی از حلقه که بین 0 تا 255 می باشد را به سه رنگ قرمز و سبز و آبی با مقادیر مختلف تبدیل نماید تا طیف کامل رنگ ایجاد شود.
در تصویرزیر شماتیک مدار مشخص شده است:
جهت دانلود برنامه و فایل شماتیک بر روی لینک های زیر کلیک نمایید:
شادیتان مستدام، سلامتیتان پایدار
محمد هادی دشتی