استفاده از پتانسیومتر در پروژههای الکترونیکی بسیار متنوع و نیازمند درک صحیحی از عملکرد آن است. در این پروژه با استفاده از چند ال ای دی و یک پتانسیومتر الگوی سادهای برای تغییر سرعت ال ای دی طراحی کنید. این آموزش برای مبتدیان و کسانی که به تازگی برنامه نویسی با بردهای آردوینو را شروع کرده اند مناسب است و با کمترین تجهیزات میتوانید برنامه نویسی کرده و این پروژه را اجرا کنید. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
تغییر سرعت LED با پتانسیومتر
در این پروژه توسط برد آردوینو نانو (انتخاب نوع برد کاملا دلخواه است) و ۵ عدد ال ای دی و پتانسیومتر ۱۰ کیلو یک الگو برای تغییر سرعت ال ای دی ها طراحی میکنیم. به این صورت که با چرخش پتانسیومتر در جهت ساعتگرد سرعت ال ای دی ها کاهش و با چرخش پتانسیومتر در جهت پادساعتگرد سرعت ال ای دی ها افزایش مییابد. پتانسیومتر یک نوع مقاومت متغیر قابل تنظیم است و مقدار مقاومت با چرخش شافت پتانسیومتر در جهت ساعتگرد و پادساعتگرد تغییر میکند. پتانسیومتر از سه پایه VCC GND OUT تشکیل شده است. از قابلیت های خاص آن میتوان به انتخاب دلخواه افزایش و کاهش مقاومت اشاره کرد. به این صورت که اگر پایه سمت راست را به عنوان ۵ ولت در نظر بگیرید با چرخش در جهت ساعتگرد و راست مقاومت افزایش پیدا میکند و بالعکس. پایه وسط پایه مقاومت متغیر است و برای اتصال به بردهای میکروکنترلر مانند Arduino, Nodemcu , Wemos d1 mini از پایه های ADC آنالوگ Analog استفاده میکند.
در این آموزش از ال ای دی دو پایه اوال Oval استفاده میکنیم. برخلاف دیگر مدلها، ال ای دی Oval از کیفیت و شدت نور بسیار بیشتری برخوردار است. ولتاژ مورد نیاز برای ال ای دی ۲٫۸ تا ۳ ولت و جریان مصرفی ۱۵ تا ۲۰ میلی آمپر است. در این آموزش از ۵ ال ای دی Oval در رنگ های مختلف استفاده شده است. ال ای دی دارای دو پایه است. پایه بلند پایه مثبت است و به پایههای دیجیتال برد آردوینو متصل میشود. پایه کوتاه تر پایه منفی GND است و به GND آردوینو متصل میشود.
برد آردوینو نانو Nano
برد آردوینو نانو NANO، یک برد کامل با ابعاد کوچک در حدود ۱۸ * ۴۵ میلی متر و مناسب پروژه های DIY است. آردوینو نانو NANO دارای ۸ عدد پایه آنالوگ و ۱۲ پایه دیجیتال است. با توجه به ابعاد بسیار مناسب آن از جمله بردهای پرطرفدار به شمار میآید. آردوینو نانو NANO دارای میکروکنترلر ATMEGA328 است و بر اساس AVR طراحی شده است. ولتاژ مورد نیاز جهت راه اندازی آردوینو نانو ۵ ولت DC است. حافظه فلش مموری Flash برابر با ۳۲KB که ۲KB آن توسط بوت لودر BootLoader مصرف میشود. همچنین حافظه SRAM برابر با ۲KB و حافظه EEPROM برابر با ۱KB است. سرعت پردازش فرکانس در برد آردوینو نانو ۱۶MHz از این رو سرعت پردازش دیتا بالا خواهد بود. برد آردوینو نانو NANO دارای ۸ پایه آنالوگ Analog و ۲۲ پایه دیجیتال است که ۶ تای آن پایه PWM میباشد. همین مورد برد آردوینو نانو NANO را با دیگر بردهای آردوینو Arduino متفاوت کرده است. جریان هر یک از پین های آردوینو در حدود ۴۰میلی آمپر است که باید در هنگام اتصال سنسور به پایه های جریان پایه ها از این مقدار بیشتر نشود. آموزش معرفی و راه اندازی برد آردوینو نانو بخش اول
اتصالات پروژه آردوینو
در مرحله اول جهت سهولت در اتصالات از یک برد بورد Breadboard استفاده میکنیم. تمامی ال ای دی ها را بر روی برد بورد قرار دهید. پایه های کوتاه ال ای دی ها را به پایه منفی که با رنگ آبی بر روی برد بورد مشخص شده است، قرار دهید. پایه های بلند تمامی ال ای دی ها را به ترتیب به پایه های دیجیتال برد آردوینو اتصال دهید.
- پایه بلند ال ای دی آبی را به پایه D2 آردوینو نانو Nano اتصال دهید.
- پایه بلند ال ای دی سبز را به پایه D3 آردوینو نانو Nano اتصال دهید.
- پایه بلند ال ای دی قرمز را به پایه D4 آردوینو نانو Nano اتصال دهید.
- پایه بلند ال ای دی زرد را به پایه D5 آردوینو نانو Nano اتصال دهید.
- پایه بلند ال ای دی سفید را به پایه D6 آردوینو نانو Nano اتصال دهید.
ولوم دارای سه پایه است. پایه اول و سوم را به دلخواه به GND و VCC آردوینو متصل کرده و پایه وسط مقاومت متغیر را به پایه شماره A0 آنالوگ اتصال دهید.
کد آردینو Arduino
برای اجرای این پروژه به نرم افزار آردوینو نیاز داریم. نرم افزار آردوینو از طریق سایت آردوینو Arduino قابل دریافت و دانلود است و نیازی به کرک ندارد. از طریق لینک زیر نرم افزار را دانلود کرده و سپس یک تب جدید در نرم افزار باز کنید. در صورتیکه تا به حال با نرم افزار آردوینو کار نکرده اید. در ابتدا پست زیر را مطالعه کرده و سپس مراحل بعدی را اجرا کنید. آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE
int potentiometer = 0; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { digitalWrite(0, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(0, LOW); delay (15); digitalWrite(1, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(1, LOW); delay (15); digitalWrite(2, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(2, LOW); delay (15); digitalWrite(3, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(3, LOW); delay (15); digitalWrite(4, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(4, LOW); delay (15); digitalWrite(5, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(5, LOW); delay (15); digitalWrite(6, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(6, LOW); delay (15); }
کد را کپی و به نرم افزار آردوینو انتقال دهید. در این آموزش از برد آردوینو نانو استفاده شده است. پس از منو Tools نوع برد را Arduino NANO انتخاب کرده و سپس برد را به سیستم متصل کنید تا پورت شناسایی شود. سپس در تنظیمات مربوط به Arduino Nano گزینه Processor را بر روی Atmega328P Old Bootloader قرار دهید.
دو گزینه در نرم افزار برای Verify و Uplaod کد وجود دارد که در سمت چپ نرم افزار با آیکون مشخص شده است. کد را کامپایل کنید. پس از انجام اتصالات، پتانسیومتر را در جهت ساعتگرد و پادساعتگرد بچرخانید. در صورتیکه شافت پتانسیومتر در جهت منفی چرخانده شود، سرعت ال ای دی ها کاهش یافته و با کمترین سرعت ممکن روشن میشوند. در این حالت سطح ولتاژ به عدد صفر رسیده و مقدار ADC به ۰ نزدیک میشود. سپس پتانسیومتر را در جهت برعکس بچرخانید. سرعت روشن و خاموش شدن به بالاترین مقدار رسیده و به اصطلاح مقدار ADC به ۱۰۲۴ نزدیک شده و ولتاژ به ۵ ولت میرسید.
تحلیل کد آردوینو
در مرحله اول ورودی و خروجی ها را مشخص میکنیم. ولوم یا همان پتانسیومتر در نقش فرمانده، ورودی است و ال ای دی ها خروجی هستند. برای ورودی مقدار اولیه ۰ را تعریف کرده و یک اسم برای متغیر ولوم به دلخواه تعریف کنید. من از Potentiometer در این کد استفاده کرده ام. سپس آن ها را در کدنویسی تعریف میکنیم:
int potentiometer = 0; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT);
در مرحله بعدی در حلقه Loop شرط برنامه را مینویسیم. کافیست در ذهن خود تعریف کنید که با چرخش ولوم قرار است تمامی ال ای دی ها به ترتیب روشن و خاموش شوند و سرعت تغییر را مشخص کینم. از دستور برنامه نویسی DigitalWrite برای HIGH و LOW کردن پایه های دیجیتال در برنامه استفاده میشود.
به این صورت که زمانی که بخواهیم ال ای دی روشن شود:
digitalWrite(6, HIGH);
و سپس برای خاموش شدن از دستور زیر استفاده میشود.
digitalWrite(6, LOW);
از دستور AnalogRead برای ذخیره دیتای دریافتی از سنسور آنالوگ و پایه ADC استفاده میشود که در این برنامه این نقش بر عهده پتانسیومتر است.
potentiometer = analogRead(0);
نقش اصلی در این برنامه بر عهده تایع زمانی Delay است. به اینصورت که هر بار مقدار قبلی را در خود ذخیره کرده و با دیتای دریافتی جدید از سنسور پتانسیومتر و جمع زمانی ۲۵ میلی ثانیه دیتا را تغییر می دهد. در مرحله اول مقدار اولیه صفر است و با چرخش شافت پتانسیومتر مقدار جدید با عدد ۲۵ میلی ثانیه جمع شده و تغییرات را بر روی خروجی دوم نمایش میدهد. به همین ترتیب میتوانید چندین ال ای دی تعریف کرده و کد را تعمیم دهید.
digitalWrite(0, HIGH); potentiometer = analogRead(0); delay( potentiometer + 25); digitalWrite(0, LOW); delay (15); digitalWrite(1, HIGH);
جمع بندی لیدی پای
اجرای این پروژه و کدنویسی حرفه ای آن بدون نوشتن جزییات اضافی برای مبتدیان بسیار مناسب است. با اجرای این آموزش کار با سه دستور برنامه نویسی DigitalWrite, AnalogRead و delay را یاد خواهید گرفت و میتوانید کد برنامه را به هر تعداد ال ای دی تعمیم دهید. نوع برد آردوینو مورد استفاده مهم نیست و بایستی تنظیمات را انجام دهید. در صورتیکه کیت آردوینو نانو را تهیه کرده اید، از مقاومت ۲۲۰ اهم در بین راه هر ال ای دی Oval استفاده کنید تا جریان مصرفی را مدیریت کنید. جهت آشنایی با مقاومت آموزش کاربرد مقاومت در بردهای آردوینو Arduino و روش استفاده را مطالعه کنید. در صورت استفاده از سری بردهای ESP8266 به جای اعداد ۲ تا ۶ از D2 تا … استفاده کنید.
وسایل مورد نیاز
مقاومت
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام من اینو با برد UNO خواستم درست کنم ولی پایه VCC نداره نمیدونم باید جاش به کدوم پایه وصل کنم و اینکه پایه منفی LED ها باید با پتانسیوتر به یک GND وصل شه؟
با سلام
پایه VCC همان پایه ۳٫۳ و ۵ ولت است. برای پایه های GND میتوانید اشتراک بگیرید و برای راحتی کار از برد بورد استفاده کنید. تمامی پایه های GND را در یک ردیف برد بورد قرار داده و در نهایت یک سیم را به GND آردوینو وصل کنید.
خدا صبرت بده
ببخشید این آموزش رو برد unoهم کار میکنه دیگ؟
با سلام
بله امکان پذیر است. کافی است در منو Tools نوع برد را آردوینو Arduino Genuino انتخاب کنید و سپس پورت را مشخص کنید.
سلام،من میخوام از پتانسیومتر۲.۲کیلواهم،نمدونم از این کوچیکا استفاده کنم اونوقت این برنامه ای که شما دادین با پتانسیومتر من هم همخونی میکنه؟یا یه جاهایی باید تغییر بدیم؟
با سلام
تفاوتی در مدل پتانسیومتر ندارد. میتوانید از تمامی مدل ها استفاده کنید.
ببشخید من پتانسیومترم از این کوچیکا هس دقیق نمیدونم۲.۲هس فک کنم اونوقت جایی تو برنامه نویسی یا چیزی که نباید تغییر بدم مشکلی ایجاد نمیکنه که؟
با سلام
خیر نیازی به تغییر برنامه نیست.
سلام
خیلی خوبه بود این آموزش و در عین سادگی پر از نکته ی آردوینوبود و نتیجش هم شد روی میزم که هر روز جلوم باشه و به عنوان لایت با ولوم ازش استفاده کنم/
خیلی خیلی ممنونم
با سلام
کاربر گرامی از توجه شما ممنونم و امیدوارم مفید واقع شده باشد.
سلام من میخواستم اینو یه برد Esp8266 nodemcu وصل کنم و پایه بلند رو به gnd و کوتاه رو به d1 وصل کردم با همین کد که گفتید اما روشن نمیشود کد:
void setup() {
pinMode(1, OUTPUT);
}
void loop() {
digitalWrite(1, HIGH);
}
در کمپایل هیچ ارروری دریافت نمی کنم اما ال ای دی روشن نمی شود
با سلام
جهت استفاده با برد nodemcu در کدها پایه دیجیتال را D1 قرار دهید. این مورد در هر پکیج از eSP8266 متفاوت است.
سلام روزتون بخیر
این خطا بعد از کامپایل کد برای من مشخص میشه
مشکل کجاس ممنون
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xca
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xca
با سلام
برد توسط سیستم شناسایی نشده است. لطفا وضعیت برد را از منو tools بررسی و اعلام کنید.
سلام نمی شد به جای این همه کد از حلقه whileو for استفاده کرد؟ مثال :
int potentiometer = 0;
int number_led=5;
void setup(){
number_led += 2;
for(int i=2;i<number_led;i++){
pinMode(i,OUTPUT); }}
void loop(){
for (int i=0;i<number_led;i++){
digitalWrite(i, HIGH);
potentiometer = analogRead(A0);
delay( potentiometer + 25);
digitalWrite(i, LOW);
delay (15); }}
سلام
قطعا روش های بسیار زیادی برای برنامه نویسی وجود دارد که تمامی این مراحل قابل اجرا است. از اینکه اطلاعات خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.
سلام خانم بلورچیان
واقعا صبر و حوصله شما در پاسخ گویی به سوالات دوستان مثال زدنی هست
موفق باشید