هفته گذشته، با ساختار اصلی یک برنامه آردوینو آشنا شدیم و نگاهی دقیقتر به مثال «چشمک زدن» انداختیم. امیدواریم از این فرصت استفاده کرده باشید و کد را آزمایش کنید و زمان بندی را تنظیم کنید. این بار، از ابتدا چیزی می نویسیم. در واقع یک چراغ راهنمایی بسازیم.
به غیر از آردوینو اصلی، به موارد زیر نیاز دارید:
- یک LED قرمز، زرد و سبز.
- یک تخته نان.
- 3 برابر مقاومت مناسب برای ال ای دی هایی که دارید (احتمالا 220 اهم خوب است).
- سیم های اتصال.
- یک سوئیچ دکمه ای
- یک مقاومت با ارزش بالا (10k).
توجه : این آخرین مجموعه از آموزشهای سطح مبتدی برای آردوینو، پلتفرم نمونهسازی الکترونیک منبع باز است. در اینجا لیستی از مقالات قبلی این مجموعه آمده است:
- آردوینو چیست و با آن چه می توان کرد ؟
- کیت استارت آردوینو چیست و شامل چه مواردی است؟
- اجزای جالب بیشتر برای خرید با کیت استارت
- شروع کار با کیت استارت آردوینو – نصب درایورها و راه اندازی برد و پورت
- نگاهی دقیق تر به ساختار یک برنامه آردوینو و نمونه برنامه Blink
همچنین ممکن است بخواهید Fritzing را دانلود و نصب کنید ، ابزاری که من برای ترسیم نمودارهای سیم کشی این پروژه ها استفاده کردم.
سیم کشی
در اینجا یک شماتیک سریع است که در فریتزینگ ساخته ام. بسیار ساده است - فقط سه LED با مقاومت به سه پایه ورودی مجزا متصل شده و همه به زمین متصل هستند.
برنامه نويسي
ما با تعریف متغیرها شروع می کنیم تا بتوانیم چراغ ها را با نام به جای عدد نشان دهیم. یک پروژه جدید آردوینو را شروع کنید و با این خطوط شروع کنید:
int red = 13; int yellow = 12; int green = 11
void setup(){ pinMode(red,OUTPUT); pinMode (زرد، OUTPUT)؛ pinMode (سبز، OUTPUT)؛ }
آن آسان بود. حالا برای بخش دشوار - منطق واقعی یک چراغ راهنمایی. من قصد دارم یک عملکرد جداگانه برای تغییر چراغ ها ایجاد کنم و بعداً خواهید دید که چرا.
هنگامی که برای اولین بار برنامه نویسی را شروع می کنید، خود کد بسیار ابتدایی است - این کشف جزئیات منطقی است که بزرگترین مشکل را ایجاد می کند. کلید یک برنامه نویس خوب این است که بتوانید به هر فرآیندی نگاه کنید و آن را به مراحل اساسی آن تقسیم کنید.
void loop(){ changeLights(); تاخیر (15000); } void changeLights(){ // سبز خاموش، زرد به مدت 3 ثانیه digitalWrite(green,HIGH); DigitalWrite (زرد، LOW)؛ تاخیر (3000); // زرد را خاموش کنید، سپس به مدت 5 ثانیه قرمز را روشن کنید DigitalWrite(زرد، LOW); دیجیتال رایت (قرمز، بالا)؛ تاخیر (5000); // قرمز و زرد به مدت 2 ثانیه روشن است (قرمز از قبل روشن است) digitalWrite(زرد،بالا); تاخیر (2000); // قرمز و زرد را خاموش کنید، سپس DigitalWrite سبز را روشن کنید (زرد، LOW); digitalWrite (قرمز، LOW)؛ digitalWrite (سبز، HIGH)؛ }
انجام شده! حالا آپلود و اجرا کنید. شما باید یک چراغ راهنمایی فعال داشته باشید که هر 15 ثانیه یکبار تغییر کند. با این حال، من فکر می کنم در حال حاضر کمی ابتدایی است، بنابراین بیایید یک دکمه فشاری برای عابران پیاده اضافه کنیم تا هر زمان که دوست داشتند نور را تغییر دهند. به نمودار مدار به روز شده زیر مراجعه کنید:
متوجه خواهید شد که سوئیچ یک مقاومت 10k با امپدانس بالا به آن متصل است و ممکن است تعجب کنید که چرا. به این مقاومت pull down می گویند. درک این مفهوم در ابتدا دشوار است، اما من را تحمل کنید.
سوئیچ یا به جریان اجازه می دهد یا نمی دهد. این به اندازه کافی ساده به نظر می رسد، اما در یک مدار منطقی، جریان باید همیشه در حالت زیاد یا پایین در جریان باشد (به یاد داشته باشید - 0 یا 1، زیاد یا کم). ممکن است فرض کنید که یک کلید فشاری که در واقع فشار داده نمیشود، در حالت پایین تعریف میشود، اما در واقع گفته میشود که «شناور» است، زیرا اصلاً جریانی کشیده نمیشود.
در این حالت شناور، این امکان وجود دارد که یک قرائت اشتباه رخ دهد زیرا با تداخل الکتریکی در نوسان است. به عبارت دیگر، یک سوئیچ شناور نه قرائت قابل اعتماد بالا و نه حالت پایین را ارائه می دهد. هنگامی که سوئیچ بسته می شود، یک مقاومت کششی مقدار کمی از جریان را حفظ می کند و در نتیجه از خواندن دقیق وضعیت پایین اطمینان حاصل می کند. در مدارهای منطقی دیگر، ممکن است به جای آن یک مقاومت کششی پیدا کنید - این کار بر اساس همان اصل عمل می کند، اما برعکس، اطمینان حاصل کنید که گیت منطقی خاص به طور پیش فرض روی مقدار زیاد است.