سلام خدمت مهندسین عزیز
این آموزش راه اندازی LED با آردوینو به صورت کامل یاد میدیم ، آموزش ما شامل یک آموزش ساده برای روشن و خاموش کردن ال ای دی نیست هرآنچه که در آینده برای برنامه نویسی در بازار کار نیاز دارید یاد خواهید گرفت.
مواردی که در این آموزش یاد میگیرید :
- LED چشمک زن با آردوینو
- رقص نور با آردوینو
- تغییر شدت نور LED با آردوینو
این آموزش بسیار مناسب افراد تازه کار و کسانی است که وارد بازار کار تابلو های تبلیغاتی میخواهند بشوند .
اگر در خیابان ها دیده باشید تابلو های ثابت مغازه ها جدا از چشمک زدن ال ای دی ها از رقص نور برخوردار هستند همچنین میبینید که نور تابلو ها به آرامی کم میشوند تا خاموش شوند یا به آرامی نورشان زیاد میشود تا کامل روشن شود.
راه اندازی ال ای دی چشمک زن با آردوینو
اولین قدم برای ساخت هر پروژه بستن مدار پروژه است که معمولا از روی یک نقشه ، که در زبان مهندسی بهش شماتیک میگیم انجام میشه ، در عکس زیر شماتیک LED چشمک زن با آردوینو R3 UNO می بینید ، مدار دقیقا از روی شکل ببندید البته با هر آردوینو دیگه میشود
البته عکس بالا شماتیک علمی نیست و بیشتر جنبه آموزشی دارد شما در پایین شماتیک علمی مدار را مشاهده میکنید :
در تصویر بالا میبینم که پاییه منفی led قرمز به زمین مدار خورده یا سیم منفی و پایه مثبت به یک مقاومت 220 اهم متصل شده که پاییه دیگر مقاومت به یک پایه خروجی آردوینو متصل شده.
با این کار وقتی که آردوینو پین 13 روشن میکنه ولتاژ 5 ولتی که خارج میشه اول به مقاومت میرسد و مقاومت جریان کنترل کرده تا ال ای دی دچار سوختگی نشود.
حالا میتونیم بریم سراغ کد ال ای دی چشمک زن با آردوینو ، برنامه خود اردوینو باز میکنید و یک پروژه جدید میسازید ما تمام کد مورد نیاز برای شما پایین آموز قرار دادیم تا راحت دانلود کنید و استفاده کنید ، ولی در ادامه آموزش خط به خط کد ها را توضیح میدهیم.
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
در کد های بالا از دستوراتی استفاده شده که در ادامه تک به تک خط ها توضیح میدم
pinMode(13, OUTPUT);
در این دستور میگیم پین شماره 13 آردوینو برای خروجی است یعنی قرار ولتاژ 5 ولت یا صفر ولت به ما بدهد
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
در دستور بالا میگیم همون پین شماره 13 ولتاژ خروجی دهد (HIGH) یا در خط پایین میگیم ولتاژ خروجی ندهد (LOW)
delay(1000);
معنی این دستور این است که آردوینو 1000 میلی ثانیه یا 1 ثانیه صبر کند بعد خط بعدی اجرا کند .
اگر توجه کنید این دستور بین دستور های خاموش روشن کردن LED است ،چرا؟
به دلیل اینکه میکروکنترل روی آردوینو با فرکانس 16 میلیون بار بر ثانیه در حال اجرا برنامه است و این سرعت انقدر زیاده که ما خاموش و روشن شدن LED نمیتونیم ببینم . به همین دلیل بعد از هر بار تغییر وضعیت 1 ثانیه صبر میکنیم تا چشم ما تغییر انجام شده را ببیند.
و چون ما دستورات را در void loop نوشتیم تا ابد این کد ها از بالا تا پیین اجرا میشود و دوباره از اول این اتفاق می افتد. خیلی سریع بریم سراغ پروژه بعدی.
راه اندازی رقص نور با آردوینو
برای این پروژه هم مثل پروژه قبل اول میریم سراغ بستن مدار همون مدار میبندیم ولی این دفعه تعداد بیشتری از LED ها رو به پاییه ها وصل میکنیم دیگه شماتیک علمی براتون نمیزارم میتونید در ادامه عکس شبیه سازی بسته شده مدار ببنید.
در تصویر بالا مشاهده میکنید که ال ای دی قرمز ها طبق شکل قبلی بسته شده ولی با این تفاوت که تعداد 5 عدد از پایه 0 تا 4 آردوینو پشت هم اتصال پیدا کرده.
مخصوصا از پایه های مختلف استفاده کردیم که شما با همه پایه ها آشنا بشید ، بریم سراغ کد های این پروژه و دیگه نیاز به توضیح خط به خط نیست چون همون کد های بالا استفاده کردیم و فقط تکرار کردیم ولی تمامی کد های استفاده نشده توضیح خواهیم داد.
int led1 = 0;
int led2 = 1;
int led3 = 2;
int led4 = 3;
int led5 = 4;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(80); // wait for 1/2 a second
digitalWrite(led1, LOW); // turn the LED off by making the voltage LOW
digitalWrite(led2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(80); // wait for 1/2 a second
digitalWrite(led2, LOW); // turn the LED off by making the voltage LOW
digitalWrite(led3, HIGH); // turn the LED on (HIGH is the voltage level)
delay(80); // wait for 1/2 a second
digitalWrite(led3, LOW); // turn the LED off by making the voltage LOW
digitalWrite(led4, HIGH); // turn the LED on (HIGH is the voltage level)
delay(80); // wait for 1/2 a second
digitalWrite(led4, LOW); // turn the LED off by making the voltage LOW
digitalWrite(led5, HIGH); // turn the LED on (HIGH is the voltage level)
delay(80); // wait for 1/2 a second
digitalWrite(led5, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
این دفعه فقط خط کد زیر اضافی شده که میتونستیم مثل روش قبل استفاده نکنیم.
int led5 = 4;
با این کار ما یک متغییر به نام LED1 تا LED5 تعریف کردیم شماره پایه ای که LED ها بهش وصل هستند داخلش ریختیم تا در پروژه به جای استفاده از شماره پایه از نام این متغیر استفاده کنیم ، حالا سوال پیش میاد چرا ؟
پروژه ساده تر باشه و در صورت جابجایی پایه ها به صورت فیزیکی در پروژه نیاز نباشه در تمام کد های پروژه تغییر ایجاد کنیم این موضوع در پروژه های بزرگ که کد نویسی زیادی دارد خیلی مهم است.
همین طور که می بینید در کد ها به جای عدد 4 نوشته شده led5
pinMode(led5, OUTPUT);
حالا شما با تغییر زمان تغییر delay(80) سرعت رقص نورتون کنترل کنید همچنین میتونید باخلاقیت خودتون با جابجا کردن ترتیب خاموش و روشن شدن LED ها رقص نو های مختلف بسازی.
تغییر شدت نور LED با آردوینو
در این پروژه با مفهوم PWM آشنا میشید که در آموزش دیگر به طور کامل توضیح داده شده و میتونید به اون آموزش مراجعه کنید .
برای بستن مدار این پروژه باید دقت کنیم که LED به پایه هایی وصل شود که خروجی PWM به ما میدهد ، ما پایه 9 انتخاب کردیم شما هر پایه ای که کنارش روی برد علامت ~ داره یعنی خروجی PWM میده و میتونید استفاده کنید. عکس شبیه سازی مدار ئر زیر می بینید.
مدار دقیقا شبیه پروژه اول بسته شده با این تفاوت که فقط از پین شماره 9 استفاده شده که پین خروجی PWM در میکروکنترل ATMEGA328 که روی آردوینو استفاده شده هست ، در بخش زیر کد هارو میبینید که یک مقدار پیچیده تر شده که در ادامه توضیح میدیم.
int led = 9; // the PWM pin the LED is attached to
int x = 0; // how bright the LED is
int z = 5; // how many points to fade the LED by
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
analogWrite(led, x);
if ( x < 255)
{
x = x + z;
}
else
{
x = 0;
}
delay(300);
}
در کد های بالا یک دستور جدید استفاده شده و مابقی مبانی پایه برنامه نویسی که در آموز دیگر توضیح دادیم ، دستور جدید پایه 9 که پایه متصل به led است را به اندازه مقداری که در x است روشن میکند ، همانطورکه در آموز PWM مطالعه کردید این مقدار بین 0 تا 255 میباشد .
analogWrite(led, x);
شرط که در کد ها استفاده شده برسی میکند این میزار کمتر از 255 باشد و اگر میزان زیر این عدد بود با هر بار اجرا برنامه 5 واحد به مقدار شدت نور اضافی میکنید.
if ( x <= 255)
{
x = x + z;
}
نکته مهم اینه که برای کاهش شد نور میتوانید همین روند برعکس کنید و به جای اضافی کردن به متغیر که 0 شروع شده از آن کم کنید و از 255 شروع کنید تا اول LED کامل روشن باشه و آرام آرام خاموش شود.
در قسمت بعدی در صورتی که به 255 رسیدیم و شرط اول اجرا نشد متغییر ها را به حالت اول در میاریم تا دوباره برنامه از اول به درستی اجرا شود.
else
{
x = 0;
}
در آخر هم یک تاخیر 300 میلی ثانیه استفاده میکنیم تا چشم انسان به راحتی این تغییر حس کند، با کم زیاد کردن این عدد سرعت روشن شدن led میتونید کنترل کنید.
در مباحث گفته شده در این پروژه شما می توانید به جای led حتی ار رله استفاده کنید تا ریسه ها نوری که با برق شهر روشن میشود کنترل کنید.
امیدوارم از آموزش لذت برده باشید، اگر سوالی داشتید یاقسمتی نا مفهوم بود براتون در قسمت دیدگاه های همین مقاله بنویسید برامون تا در کمترین زمان ممکن مشکلتون حل کنیم .
باکس دانلود
راهنمای دانلود :
- برای دانلود فایل های پیوستی ابتدا در حساب کاربری خود ورود یا ثبت نام کنید.
- در صورت عدم دانلود فایل پیوست شده می توانید در قسمت گزارش خرابی لینک دلیل عدم دانلود را شرح دهید و از ما امتیاز دریافت کنید .
- تمامی فایل های پیوست شده متعلق به سایت ربات افزار می باشد و نشر آن به هر نحوه، قانونی و شرعی اشکال دارد.
_______ _______