پتانسیومتر یا همان مقاومت متغیر، قطعهای الکترونیکی است. در زندگی روزمره یکی از پرکاربردترین لوازم است. از یک ولوم صدای رادیو گرفته تا ولوم تنظیم برودت به صورت دیجیتالی، در تمامی این موارد مقاومت متغییر در حال انجام وظیفه است. بسته به ظرفیت اهمی، کاربرد آن و دامنه ایجاد تغییرات آن هم متفاوت خواهد بود. یکی از مهمترین پتانسیومترها یا ولومها، ماژول ولوم کشویی یا Slide Potentiometer است. در ادامه آموزش های ماژول ولوم کشویی Slide Pot به بخش سوم رسیدیم. در این آموزش توسط ماژول ولوم کشویی Slide Pot آرایه های دات ماتریس Dot Matrix را کنترل خواهیم کرد. در ادامه این آموزش جذاب با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
پیش نیاز آموزش
آموزش کار با ماژول ولوم کشویی ۱۰ کیلو اهم Slide Potentiometer و آردوینو بخش اول
آموزش کار با ماژول ولوم کشویی ۱۰ کیلو اهم Slide Potentiometer و آردوینو بخش اول
۱ – دات ماتریس Dot Matrix
ماژول دات ماتریس ۸*۸ Dot Matrix
دات ماتریس Dot Matrix استفاده شده در این پروژه از تراشه MAX7219 تشکیل شده است. دارای ۶۴ آرایه میباشد. نمایشگرهای دات ماتریس Dot matrix همانند سون سگمنت از شبکه ی LED ها تشکیل شده است. این شبکه از LED به صورت آند مشترک یعنی اتصال کلیهی پایههای مثبت و کاند مشترک یعنی اتصال پایههای منفی وجود دارند. ولتاژ مورد نیاز برای راه اندازی ماژول دات ماتریس ۵ ولت DC است. ماژول دات ماترس از ۵ پایه تشکیل شده است. برای اطلاعات بیشتر به آموزش ساخت تابلو روان متحرک با آردوینو مراجعه کنید.
ماژول ولوم کشویی Slide Potentiometer
ماژول ولوم کشویی Slide Potentiometer شامل یک مقاومت متغیر خطی با حداکثر ۱۰ کیلو اهم است. ساختار ماژول ولوم همانند یک کلید کشویی است. هنگامی که اسلاید کشویی ماژول ولوم را از یک طرف به طرف دیگر میکشید، ولتاژ از ۰ ولت تا ولتاژ Vcc تعیین شده، تغییر خواهد کرد. ماژول ولوم کشویی Slide Pot دارای خروجی آنالوگ دو کاناله بین ۰ تا Vcc است. ولوم قرار گرفته بر روی ماژول حدودا در طول ۶٫۵ سانتیمتر جا به جا شده و روان حرکت خواهد کرد. نوع ماژول به صورت خطی Linear است. ولتاژ کاری ولوم کشویی ۳٫۳ تا ۵ ولت DC است. این ماژول قابلیت راه اندازی با آردوینو Arduino، MCU و AVR را خواهد داشت. ماژول ولوم کشویی دارای ۶ پایه است. دارای ۲ پایه Vcc و ۲ GND و دو کانال OTA و OTB است.
اتصالات
- پایه CLK ماژول دات ماتریس Dot Matrix را به پایه ۱۱ دیجیتال آردوینو Arduino اتصال دهید.
- پایه CS ماژول دات ماتریس Dot Matrix را به پایه ۱۰ دیجیتال آردوینو Arduino اتصال دهید.
- پایه DIN ماژول دات ماتریس Dot Matrix را به پایه ۱۲ دیجیتال آردوینو Arduino اتصال دهید.
- پایه OTA ماژول ولوم کشویی Slide Pot را به پایه A0 آنالوگ آردوینو Arduino اتصال دهید.
۲ – کتابخانه دات ماتریس آردوینو
فراخوانی کتابخانه
در این پروژه از کتابخانه Ledcontrol جهت کنترل آرایه های دات ماتریس استفاده میکنیم:
کتابخانه Ledcontrol
کتابخانه Ledcontrol برای تراشه های MAX7219 و MAX7221 استفاده میشود. از این کتابخانه جهت کنترل ۶۴ آرایه از دات ماتریس، سون سگمنت ۷ و ۸ دیجیت استفاده میشود. نمونه کد فراخوانی کتابخانه Ledcontrol در زیر قرار گرفته شده است:
/* * Now we create a new LedControl. * We use pins 12,11 and 10 on the Arduino for the SPI interface * Pin 12 is connected to the DATA IN-pin of the first MAX7221 * Pin 11 is connected to the CLK-pin of the first MAX7221 * Pin 10 is connected to the LOAD(/CS)-pin of the first MAX7221 * There will only be a single MAX7221 attached to the arduino */ LedControl lc1=LedControl(12,11,10,1);
نحوه ی معرفی پین ها در کتابخانه Ledcontrol
به طور یک تابع برای فراخوانی کتابخانه Ledcontrol وجود دارد که در آن پایه های Data, Clk, Cs و تعداد ماژول های مورد استفاده، درج شده است. این تابع به صورت زیر در کد برنامه تعریف میشود:
LedControl(dataPin,clockPin,csPin,numDevices)
که به ترتیب تعریف پایه به صورت زیر است:
* Params : * int dataPin The pin on the Arduino where data gets shifted out * int clockPin The pin for the clock * int csPin The pin for selecting the device when data is to be sent * int numDevices The maximum number of devices that can be controlled */ LedControl(int dataPin, int clkPin, int csPin, int numDevices);
نکته مهم
دقت داشته باشید برای تعریف بیش از ۱ دات ماتریس در کتابخانه باید تغییراتی اعمال کنید. بسته به تعداد ماژول های مورد استفاده باید از چند تابع Ledcontrol در کد برنامه استفاده کنید. دقت داشته باشید باید پین های متفاوتی از آردوینو را به آن اختصاص دهید.
۳ – کدنویسی دات ماتریس آردوینو
کد آردوینو Arduino
#include "LedControl.h" const int potInPin = A0; // تعریف پایه ماژول ولوم int rawSensorValue = 0; // خواندن دیتا از سنسور int correctedValue = 0; // خواندن دیتا آرایه ها بین ۰ تا ۶۳ LedControl lc = LedControl(12, 11, 10, 1); // تعریف تابع کتابخانه ledcontrol // تعریف آرایه ۱ تا ۶۴ byte ledstates[64][8] = { {۰x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //1 {۰x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //2 {۰x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //3 {۰xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //4 {۰x1F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //5 {۰x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //6 {۰x7F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //7 {۰xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //8 {۰xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0}, //9 {۰xFF,0x3,0x0,0x0,0x0,0x0,0x0,0x0}, //10 {۰xFF,0x7,0x0,0x0,0x0,0x0,0x0,0x0}, //11 {۰xFF,0xF,0x0,0x0,0x0,0x0,0x0,0x0}, //12 {۰xFF,0x1F,0x0,0x0,0x0,0x0,0x0,0x0}, //13 {۰xFF,0x3F,0x0,0x0,0x0,0x0,0x0,0x0}, //14 {۰xFF,0x7F,0x0,0x0,0x0,0x0,0x0,0x0}, //15 {۰xFF,0xFF,0x0,0x0,0x0,0x0,0x0,0x0}, //16 {۰xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0}, //17 {۰xFF,0xFF,0x3,0x0,0x0,0x0,0x0,0x0}, //18 {۰xFF,0xFF,0x7,0x0,0x0,0x0,0x0,0x0}, //19 {۰xFF,0xFF,0xF,0x0,0x0,0x0,0x0,0x0}, //20 {۰xFF,0xFF,0x1F,0x0,0x0,0x0,0x0,0x0}, //21 {۰xFF,0xFF,0x3F,0x0,0x0,0x0,0x0,0x0}, //22 {۰xFF,0xFF,0x7F,0x0,0x0,0x0,0x0,0x0}, //23 {۰xFF,0xFF,0xFF,0x0,0x0,0x0,0x0,0x0}, //24 {۰xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0}, //25 {۰xFF,0xFF,0xFF,0x3,0x0,0x0,0x0,0x0}, //26 {۰xFF,0xFF,0xFF,0x7,0x0,0x0,0x0,0x0}, //27 {۰xFF,0xFF,0xFF,0xF,0x0,0x0,0x0,0x0}, //28 {۰xFF,0xFF,0xFF,0x1F,0x0,0x0,0x0,0x0}, //29 {۰xFF,0xFF,0xFF,0x3F,0x0,0x0,0x0,0x0}, //30 {۰xFF,0xFF,0xFF,0x7F,0x0,0x0,0x0,0x0}, //31 {۰xFF,0xFF,0xFF,0xFF,0x0,0x0,0x0,0x0}, //32 {۰xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0}, //33 {۰xFF,0xFF,0xFF,0xFF,0x3,0x0,0x0,0x0}, //34 {۰xFF,0xFF,0xFF,0xFF,0x7,0x0,0x0,0x0}, //35 {۰xFF,0xFF,0xFF,0xFF,0xF,0x0,0x0,0x0}, //36 {۰xFF,0xFF,0xFF,0xFF,0x1F,0x0,0x0,0x0}, //37 {۰xFF,0xFF,0xFF,0xFF,0x3F,0x0,0x0,0x0}, //38 {۰xFF,0xFF,0xFF,0xFF,0x7F,0x0,0x0,0x0}, //39 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x0,0x0,0x0}, //40 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0}, //41 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x3,0x0,0x0}, //42 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x7,0x0,0x0}, //43 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xF,0x0,0x0}, //44 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0,0x0}, //45 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0,0x0}, //46 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0,0x0}, //47 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0,0x0}, //48 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1,0x0}, //49 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3,0x0}, //50 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7,0x0}, //51 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF,0x0}, //52 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0}, //53 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0}, //54 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0}, //55 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0}, //56 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1}, //57 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3}, //58 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7}, //59 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF}, //60 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F}, //61 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F}, //62 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F}, //63 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, //64 }; void setup() { Serial.begin(9600); // بادریت lc.shutdown(0, false); // فعال شدن تابع ledcontrol lc.setIntensity(0, 8); lc.clearDisplay(0); } void loop() { rawSensorValue = analogRead(potInPin); // خواندن دیتا از سنسور correctedValue = map(rawSensorValue, 0, 1023, 0, 63); // تغییر آرایه ها با جا به جایی ماژول اسلاید Serial.println(correctedValue); for (int y = 0; y < 8; y++) { // تعریف حلقه For برای جا به جایی آرایه ها lc.setRow(0, y, ledstates[correctedValue][y]); } }
کد را از طریق کلید میانبری که برای انتقال کدها در نظر گرفته شده است، به نرم افزار آردوینو Arduino انتقال دهید.
۴ – تحلیل کد دات ماتریس آردوینو
تحلیل کد آردوینو Arduino
فراخوانی کتابخانه
#include "LedControl.h"
تعریف پایه ماژول ولوم کشویی
const int potInPin = A0; // تعریف پایه ماژول ولوم
تعریف تابع کتابخانه Ledcontrol
LedControl lc = LedControl(12, 11, 10, 1); // تعریف تابع کتابخانه ledcontrol
تعریف ۶۴ آرایه Array
byte ledstates[64][8] = { {۰x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //1 {۰x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //2 {۰x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //3 {۰xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //4 {۰x1F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //5 {۰x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //6 {۰x7F,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //7 {۰xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //8 {۰xFF,0x1,0x0,0x0,0x0,0x0,0x0,0x0}, //9 {۰xFF,0x3,0x0,0x0,0x0,0x0,0x0,0x0}, //10 {۰xFF,0x7,0x0,0x0,0x0,0x0,0x0,0x0}, //11 {۰xFF,0xF,0x0,0x0,0x0,0x0,0x0,0x0}, //12 {۰xFF,0x1F,0x0,0x0,0x0,0x0,0x0,0x0}, //13 {۰xFF,0x3F,0x0,0x0,0x0,0x0,0x0,0x0}, //14 {۰xFF,0x7F,0x0,0x0,0x0,0x0,0x0,0x0}, //15 {۰xFF,0xFF,0x0,0x0,0x0,0x0,0x0,0x0}, //16 {۰xFF,0xFF,0x1,0x0,0x0,0x0,0x0,0x0}, //17 {۰xFF,0xFF,0x3,0x0,0x0,0x0,0x0,0x0}, //18 {۰xFF,0xFF,0x7,0x0,0x0,0x0,0x0,0x0}, //19 {۰xFF,0xFF,0xF,0x0,0x0,0x0,0x0,0x0}, //20 {۰xFF,0xFF,0x1F,0x0,0x0,0x0,0x0,0x0}, //21 {۰xFF,0xFF,0x3F,0x0,0x0,0x0,0x0,0x0}, //22 {۰xFF,0xFF,0x7F,0x0,0x0,0x0,0x0,0x0}, //23 {۰xFF,0xFF,0xFF,0x0,0x0,0x0,0x0,0x0}, //24 {۰xFF,0xFF,0xFF,0x1,0x0,0x0,0x0,0x0}, //25 {۰xFF,0xFF,0xFF,0x3,0x0,0x0,0x0,0x0}, //26 {۰xFF,0xFF,0xFF,0x7,0x0,0x0,0x0,0x0}, //27 {۰xFF,0xFF,0xFF,0xF,0x0,0x0,0x0,0x0}, //28 {۰xFF,0xFF,0xFF,0x1F,0x0,0x0,0x0,0x0}, //29 {۰xFF,0xFF,0xFF,0x3F,0x0,0x0,0x0,0x0}, //30 {۰xFF,0xFF,0xFF,0x7F,0x0,0x0,0x0,0x0}, //31 {۰xFF,0xFF,0xFF,0xFF,0x0,0x0,0x0,0x0}, //32 {۰xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0,0x0}, //33 {۰xFF,0xFF,0xFF,0xFF,0x3,0x0,0x0,0x0}, //34 {۰xFF,0xFF,0xFF,0xFF,0x7,0x0,0x0,0x0}, //35 {۰xFF,0xFF,0xFF,0xFF,0xF,0x0,0x0,0x0}, //36 {۰xFF,0xFF,0xFF,0xFF,0x1F,0x0,0x0,0x0}, //37 {۰xFF,0xFF,0xFF,0xFF,0x3F,0x0,0x0,0x0}, //38 {۰xFF,0xFF,0xFF,0xFF,0x7F,0x0,0x0,0x0}, //39 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x0,0x0,0x0}, //40 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x1,0x0,0x0}, //41 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x3,0x0,0x0}, //42 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x7,0x0,0x0}, //43 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xF,0x0,0x0}, //44 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0,0x0}, //45 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0,0x0}, //46 {۰xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0,0x0}, //47 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0,0x0}, //48 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1,0x0}, //49 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3,0x0}, //50 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7,0x0}, //51 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF,0x0}, //52 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0}, //53 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0}, //54 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0}, //55 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0}, //56 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1}, //57 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3}, //58 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7}, //59 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF}, //60 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F}, //61 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F}, //62 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F}, //63 {۰xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, //64 };
تابع فراخوانی کتابخانه ledcontrol
lc.shutdown(0, false); // فعال شدن تابع ledcontrol lc.setIntensity(0, 8); lc.clearDisplay(0);
خواندن دیتا سنسور و دات ماتریس
rawSensorValue = analogRead(potInPin); // خواندن دیتا از سنسور correctedValue = map(rawSensorValue, 0, 1023, 0, 63); // تغییر آرایه ها با جا به جایی ماژول اسلاید
تعریف حلقه برای جا به جایی آرایه ها
for (int y = 0; y < 8; y++) { // تعریف حلقه For برای جا به جایی آرایه ها lc.setRow(0, y, ledstates[correctedValue][y]);
وسایل مورد نیاز
برد آردوینو Arduino UNO به همراه کیس مخصوص شفاف
ماژول دات ماتریس ۸×۸ با تراشه MAX7219 و رابط SPI
ماژول ولوم کشویی ۱۰ کیلو اهم دو کانال ۱۰K Slide Pot
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک و دانشجوکیت و digispark و daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
روش دور زدن فیلترینگ تلگرام در اردوینو یا nodemcu به چه صورت هست؟
ایا کتابخانه ای برای اینکار وجود دارد؟
ویا در نود رد اینکار امکان پذیر هست؟
سلام
در خصوص nodemcu سوال خود را در پست مربوطه مطرح نمایید.
آموزش مدیریت منزل از هر مکان با ربات تلگرام و برد NodeMCU
بله با نود رد امکان پذیر است.
سلام
به نظر من ماژول Slide pot از نظر ظاهری واقعا جذابه و با توجه به دو کاناله بودنش بسیار پرکاربرده
من به پیشنهاد شما این کالا را از دانشجوکیت خریدم و واقعا از کار کردن باهاش لذت میبرم
سلام
از دقت نظر شما ممنونم.
موفق باشید.
سلام
آیا امکان استفاده از ولوم هست؟ در دو کانال مجزا
سلام
بله امکان پذیر است. برای دو کاناله بودن باید در کدها تغییرات لازم را اعمال کنید.