مدارهای ساده آردوینو برای مبتدیان. مدارهای ساده در Arduino برای طرح های مبتدی در Arduino

تاخیر در آردوینو نقش بسیار مهمی دارد. بدون آنها ، حتی ساده ترین نمونه Blink ، که پس از یک دوره زمانی مشخص ، یک LED را چشمک می زند ، نمی تواند کار کند. اما بیشتر برنامه نویسان تازه کار در مورد تأخیر زمان کمی می دانند و فقط از تأخیر آردوینو بدون اطلاع از عوارض جانبی این دستور استفاده می کنند. در این مقاله ، من در مورد توابع زمان بندی و نحوه استفاده از آنها در Arduino IDE به تفصیل صحبت خواهم کرد.

چندین دستور مختلف در آردوینو وجود دارد که وظیفه کار با زمان و مکث را بر عهده دارند:

  • تاخیر انداختن()
  • delayMicroseconds()
  • millis ()
  • micros()

آنها از نظر دقت متفاوت هستند و ویژگی های خاص خود را دارند که باید هنگام نوشتن کد مورد توجه قرار گیرند.

با استفاده از تابع تاخیر آردوینو

نحو

تاخیر آردوینو ساده ترین دستور است و اغلب توسط مبتدیان استفاده می شود. در اصل، تاخیری است که برنامه را برای تعداد میلی ثانیه های مشخص شده در پرانتز متوقف می کند. (در یک ثانیه 1000 میلی ثانیه وجود دارد.) حداکثر مقدار می تواند 4294967295 میلی ثانیه باشد که تقریباً برابر با 50 روز است. بیایید به یک مثال ساده نگاه کنیم که به وضوح نحوه عملکرد این دستور را نشان می دهد.

Void setup() (pinMode(13، OUTPUT)؛ ) void loop() (digitalWrite(13، HIGH)؛ // ارسال یک سیگنال بالا به پین ​​13 delay(10000)؛ // مکث 10000ms یا 10 ثانیه digitalWrite13، LOW) ; // ارسال یک سیگنال کم به پین ​​13 delay(10000); // مکث 10000ms یا 10 ثانیه)

در روش برپاییما مشخص می کنیم که از پایه 13 به عنوان خروجی استفاده شود. در قسمت اصلی برنامه ابتدا یک سیگنال بالا به پین ​​ارسال می شود سپس 10 ثانیه تاخیر ایجاد می کنیم. به نظر می رسد در این مدت برنامه به حالت تعلیق درآمده است. سپس یک سیگنال کم داده می شود و دوباره یک تاخیر وجود دارد و همه چیز دوباره شروع می شود. در نتیجه، دریافتیم که پین ​​به طور متناوب با 5 ولت یا 0 تامین می شود.

شما باید به وضوح درک کنید که در طول مکث با استفاده از تاخیر، کار برنامه به حالت تعلیق در می آید، برنامه هیچ داده ای از سنسورها دریافت نمی کند. این بزرگترین نقطه ضعف استفاده از عملکرد تاخیر آردوینو است. با استفاده از وقفه ها می توانید این محدودیت را دور بزنید، اما در مقاله ای جداگانه در مورد این موضوع صحبت خواهیم کرد.

نمونه تأخیر با LED چشمک زن

یک مدار مثال برای نشان دادن نحوه عملکرد تابع تاخیر.
شما می توانید یک مدار با LED و یک مقاومت بسازید. سپس ما یک مثال استاندارد خواهیم داشت - چشمک زدن به یک LED. برای انجام این کار ، باید یک LED را با یک تماس مثبت به پین ​​وصل کنید ، که ما به عنوان خروجی تعیین کردیم. ما پای آزاد LED را از طریق مقاومت تقریباً 220 اهم به زمین وصل می کنیم (کمی بیشتر امکان پذیر است). می توانید قطبیت را با نگاه کردن به خودی آن تعیین کنید. فنجان بزرگ داخل آن به منهای وصل شده است و پای کوچک آن به علاوه. اگر LED شما جدید است ، می توانید قطبیت را با طول سرب تعیین کنید: پای بلند به علاوه ، پای کوتاه منهای است.

تابع delayMicroseconds

این تابع یک آنالوگ کامل تاخیر است، با این تفاوت که واحدهای اندازه گیری آن میلی ثانیه نیست، بلکه میکروثانیه است (در 1 ثانیه 1،000،000 میکروثانیه وجود دارد). حداکثر مقدار 16383 خواهد بود که برابر با 16 میلی ثانیه است. وضوح 4 است ، یعنی این تعداد همیشه چند برابر خواهد بود. یک نمونه نمونه به شکل زیر است:

DigitalWrite (2، HIGH); // ارسال سیگنال بالا به پین ​​2 تأخیر میکروس ثانیه (16383) ؛ // مکث 16383 µs digitalWrite(2, LOW); // ارسال یک سیگنال کم به پین ​​2 delayMicroseconds(16383); // مکث 16383 میکروثانیه

مشکل delayMicroseconds دقیقاً مانند تاخیر است - این توابع برنامه را کاملاً "آویزان" می کنند و به معنای واقعی کلمه برای مدتی منجمد می شود. در این زمان، کار با پورت ها، خواندن اطلاعات از حسگرها و انجام عملیات ریاضی غیرممکن است. این گزینه برای چراغ های چشمک زن مناسب است، اما کاربران با تجربه از آن برای پروژه های بزرگ استفاده نمی کنند، زیرا چنین خرابی هایی در آنجا مورد نیاز نیست. بنابراین، استفاده از توابع شرح داده شده در زیر بسیار بهتر است.

عملکرد Millis به جای تاخیر

تابع millis() به شما این امکان را می دهد که بدون تأخیر در آردوینو تاخیر انجام دهید و در نتیجه کاستی های روش های قبلی را دور بزنید. حداکثر مقدار پارامتر میلیس همان مقدار تابع تاخیر است (4294967295ms یا 50 روز).

با استفاده از millis، اجرای کل طرح را متوقف نمی‌کنیم، بلکه به سادگی نشان می‌دهیم که آردوینو چه مدت باید دقیقاً بلوک کدی را که می‌خواهیم مکث کنیم، به سادگی دور بزند. بر خلاف delay millis، هیچ چیزی را به خودی خود متوقف نمی کند. این دستور به سادگی از تایمر داخلی میکروکنترلر تعداد میلی ثانیه هایی را که از شروع کار گذشته است به ما برمی گرداند. با هر بار تماس به حلقه، ما خودمان مدت زمانی را که از آخرین فراخوانی کدمان گذشته است اندازه می گیریم و اگر اختلاف زمانی کمتر از مکث مورد نظر باشد، کد را نادیده می گیریم. به محض اینکه تفاوت بیشتر از مکث لازم شد، کد را اجرا می کنیم، زمان فعلی را با استفاده از همان میلیس دریافت می کنیم و آن را به خاطر می آوریم - این زمان نقطه شروع جدید خواهد بود. در چرخه بعدی، شمارش معکوس قبلاً از نقطه جدید خواهد بود و ما دوباره کد را نادیده می گیریم تا زمانی که اختلاف جدید بین میلیس و مقدار ذخیره شده قبلی ما دوباره به مکث مورد نظر برسد.

تاخیر بدون تاخیر با استفاده از millis به کد بیشتری نیاز دارد، اما با کمک آن می توانید یک LED را چشمک بزنید و یک طرح را بدون توقف سیستم متوقف کنید.

در اینجا یک مثال است که به وضوح کار تیم را نشان می دهد:

زمان‌بندی طولانی بدون امضا؛ // متغیر برای ذخیره نقطه مرجع void setup() ( Serial.begin(9600); ) void loop() ( /* در این مرحله اجرای آنالوگ delay() آغاز می شود. تفاوت بین لحظه فعلی و لحظه را محاسبه کنید نقطه مرجع قبلا ذخیره شده است. اگر تفاوت از مقدار دلخواه بیشتر بود، کد را اجرا کنید. اگر نه، هیچ کاری نکنید */ if (millis() - timing > 10000)( // به جای 10000، مقدار مکث مورد نیاز زمان بندی را جایگزین کنید. = millis(); Serial.println ("10 ثانیه") ; ) )

ابتدا متغیر زمان بندی را معرفی می کنیم که تعداد میلی ثانیه ها را ذخیره می کند. به طور پیش فرض، مقدار متغیر 0 است. در قسمت اصلی برنامه، شرایط را بررسی می کنیم: اگر تعداد میلی ثانیه از شروع میکروکنترلر منهای عدد نوشته شده در متغیر زمان بندی بیشتر از 10000 باشد، آنگاه عمل خروجی پیام به مانیتور پورت انجام می شود و مقدار زمان جاری روی متغیر نوشته می شود. در نتیجه عملکرد برنامه هر 10 ثانیه پیام 10 ثانیه بر روی پورت مانیتور نمایش داده می شود. این روش به شما امکان می دهد بدون معطلی LED را چشمک بزنید.

عملکرد میکرو به جای تاخیر

این تابع همچنین می تواند بدون استفاده از دستور delay یک تاخیر انجام دهد. دقیقاً مانند میلی‌ها کار می‌کند، اما میکروثانیه‌ها را به جای میلی‌ثانیه با وضوح 4 میکروثانیه می‌شمرد. حداکثر مقدار آن 4294967295 میکروثانیه یا 70 دقیقه است. اگر سرریز شود، مقدار به سادگی به 0 بازنشانی می شود، آن را فراموش نکنید.

خلاصه

پلتفرم آردوینو راه های مختلفی را برای پیاده سازی تاخیر در پروژه در اختیار ما قرار می دهد. با استفاده از تاخیر، می توانید به سرعت اجرای یک طرح را متوقف کنید، اما در عین حال عملکرد میکروکنترلر را مسدود خواهید کرد. استفاده از دستور millis به شما این امکان را می دهد که بدون تاخیر در آردوینو این کار را انجام دهید، اما این کار به برنامه نویسی کمی بیشتر نیاز دارد. بسته به پیچیدگی پروژه خود بهترین روش را انتخاب کنید. قاعدتا در اسکچ های ساده و با تاخیر کمتر از 10 ثانیه از تاخیر استفاده می شود. اگر منطق عملیاتی پیچیده تر است و نیاز به تاخیر زیاد است، بهتر است به جای تاخیر از میلیس استفاده کنید.

" دوره آموزشی "آردوینو برای مبتدیان" را ارائه می دهد. این مجموعه از 10 درس و همچنین مطالب اضافی تشکیل شده است. دروس شامل دستورالعمل های متنی، عکس ها و فیلم های آموزشی است. در هر درس فهرستی از اجزای مورد نیاز، فهرست برنامه و نمودار اتصال را خواهید یافت. هنگامی که این 10 درس اساسی را کامل کردید، می توانید به سراغ مدل های جالب تر و ساخت ربات های مبتنی بر آردوینو بروید. این دوره مختص افراد مبتدی است و برای شروع آن نیازی به اطلاعات اضافی از مهندسی برق یا رباتیک نیست.

اطلاعات مختصری در مورد آردوینو

آردوینو چیست؟

آردوینو (Arduino) یک پلت فرم محاسباتی سخت افزاری است که اجزای اصلی آن یک برد ورودی-خروجی و یک محیط توسعه است. آردوینو را می توان برای ایجاد اشیاء تعاملی مستقل یا اتصال به نرم افزارهای در حال اجرا بر روی رایانه استفاده کرد. آردوینو یک کامپیوتر تک بردی است.

آردوینو و ربات ها چگونه به هم متصل می شوند؟

پاسخ بسیار ساده است - آردوینو اغلب به عنوان استفاده می شود مغز ربات

مزیت بردهای آردوینو نسبت به پلتفرم های مشابه قیمت نسبتا پایین و توزیع تقریباً گسترده آنها در بین آماتورها و متخصصان رباتیک و مهندسی برق است. پس از ورود به آردوینو، پشتیبانی به هر زبانی و افراد همفکری خواهید یافت که به سوالات شما پاسخ می‌دهند و در مورد پیشرفت‌های شما صحبت می‌کنند.

درس 1. چراغ چشمک زن در آردوینو

در درس اول یاد خواهید گرفت که چگونه یک LED را به آردوینو متصل کنید و آن را کنترل کنید تا چشمک بزند. این ساده ترین و ابتدایی ترین مدل است.

دیود ساطع نور- یک وسیله نیمه هادی که با عبور جریان الکتریکی از آن در جهت جلو، تشعشع نوری ایجاد می کند.

درس 2. اتصال دکمه در آردوینو

در این آموزش نحوه اتصال دکمه و LED به آردوینو را خواهید آموخت.

هنگامی که دکمه فشار داده می شود، LED روشن می شود و با فشار دادن دکمه، روشن نمی شود. این هم مدل پایه

درس 3. اتصال پتانسیومتر در آردوینو

در این آموزش یاد می گیرید که چگونه یک پتانسیلومتر را به آردوینو وصل کنید.

پتانسیومتر- این مقاومت با مقاومت قابل تنظیمپتانسیلومترها به عنوان تنظیم کننده پارامترهای مختلف استفاده می شوند - حجم صدا ، قدرت ، ولتاژ و غیره.این نیز یکی از طرح های اساسی است. در مدل ما از چرخاندن دستگیره پتانسیومترروشنایی LED بستگی دارد.

درس 4. کنترل سروو در آردوینو

در این آموزش یاد خواهید گرفت که چگونه یک سروو را به یک آردوینو وصل کنید.

سرووحرکتی است که با تنظیم زاویه چرخش ، موقعیت شافت را می توان کنترل کرد.

از Servos برای شبیه سازی حرکات مختلف مکانیکی روبات ها استفاده می شود.

درس 5. ال ای دی سه رنگ در آردوینو

در این آموزش یاد می گیرید که چگونه یک رنگ سه رنگ را به یک آردوینو متصل کنید.

ال ای دی سه رنگ(rgb led) - این سه LED با رنگ های مختلف در یک محفظه هستند. آنها یا با یک برد مدار چاپی کوچک عرضه می شوند که مقاومت ها روی آن قرار دارند، یا بدون مقاومت داخلی. درس هر دو گزینه را پوشش می دهد.

درس 6. عنصر پیزوالکتریک در آردوینو

در این درس یاد خواهید گرفت که چگونه یک عنصر پیزو را به آردوینو متصل کنید.

عنصر پیزو- یک مبدل الکترومکانیکی که ترجمه می کندولتاژ الکتریکی به ارتعاش غشا این ارتعاشات صدا ایجاد می کند.

در مدل ما فرکانس صدا با تنظیم پارامترهای مناسب در برنامه قابل تنظیم است.

درس 7. Photoresistor در Arduino

در این درس از دوره ما، نحوه اتصال یک مقاومت نوری به آردوینو را خواهید آموخت.

مقاومت نوری- مقاومتی که مقاومت آن به روشنایی نوری که بر روی آن می تابید بستگی دارد.

در مدل ما، LED فقط در صورتی روشن می شود که روشنایی نور بالای مقاومت نوری کمتر از مقدار مشخصی باشد؛ این روشنایی را می توان در برنامه تنظیم کرد.

درس 8. سنسور حرکت (PIR) در آردوینو. ارسال خودکار ایمیل

در این درس از دوره ما، نحوه اتصال سنسور حرکت (PIR) به آردوینو و همچنین سازماندهی ارسال خودکار ایمیل را خواهید آموخت.

سنسور حرکت (PIR)- حسگر مادون قرمز برای تشخیص حرکت یا حضور افراد یا حیوانات.

در مدل ما، هنگام دریافت سیگنال در مورد حرکت انسان از یک سنسور PIR، آردوینو دستوری برای ارسال ایمیل به رایانه می‌فرستد و نامه به صورت خودکار ارسال می‌شود.

درس 9. اتصال سنسور دما و رطوبت DHT11 یا DHT22

در این درس ما، نحوه اتصال سنسور دما و رطوبت DHT11 یا DHT22 را به آردوینو و همچنین با تفاوت‌های ویژگی‌های آنها آشنا می‌شوید.

سنسور دما و رطوبتیک سنسور دیجیتال کامپوزیت متشکل از یک حسگر خازنی رطوبت و یک ترمیستور برای اندازه گیری دما است.

در مدل ما، آردوینو قرائت سنسورها را می خواند و خوانش ها را روی صفحه کامپیوتر نمایش می دهد.

درس 10. اتصال صفحه کلید ماتریسی

در این درس از دوره ما، نحوه اتصال صفحه کلید ماتریسی به برد آردوینو و همچنین با مدارهای مختلف جالب آشنا خواهید شد.

صفحه کلید ماتریسیبرای ساده کردن اتصال تعداد زیادی دکمه اختراع شده است. چنین دستگاه هایی در همه جا یافت می شوند - در صفحه کلید کامپیوتر، ماشین حساب، و غیره.

درس 11. اتصال ماژول ساعت بیدرنگ DS3231

در آخرین درس دوره ما، نحوه اتصال یک ماژول ساعت بلادرنگ را از خانواده یاد خواهید گرفت
DS به برد آردوینو، و همچنین با مدارهای مختلف جالب آشنا شوید.

ماژول ساعت زمان واقعی- این یک مدار الکترونیکی است که برای ثبت داده های زمان سنجی (زمان فعلی، تاریخ، روز هفته و غیره) طراحی شده است و سیستمی متشکل از یک منبع برق مستقل و یک دستگاه ضبط است.

کاربرد. قاب های آماده و ربات های آردوینو


شما می توانید یادگیری آردوینو را نه تنها از خود برد، بلکه با خرید یک ربات آماده و تمام عیار مبتنی بر این برد - ربات عنکبوتی، ماشین ربات، ربات لاک پشت و غیره آغاز کنید. چنینمسیر همچنین برای کسانی که علاقه خاصی به مدارهای الکتریکی ندارند نیز مناسب است.

با خرید یک مدل ربات کار، i.e. در واقع، یک اسباب بازی آماده با فناوری پیشرفته می تواند علاقه به طراحی مستقل و رباتیک را بیدار کند. باز بودن پلت فرم آردوینو به شما این امکان را می دهد که اسباب بازی های جدیدی از همان اجزا بسازید.

گزینه دیگر خرید یک قاب یا بدنه ربات است: یک پلت فرم روی چرخ یا یک مسیر، یک انسان نما، یک عنکبوت و غیره. در این صورت باید خودتان پر کردن ربات را انجام دهید.

کاربرد. دایرکتوری موبایل


– دستیار توسعه دهندگان الگوریتم های پلتفرم آردوینو که هدف آن این است که به کاربر نهایی این فرصت را بدهد که مجموعه ای از دستورات تلفن همراه (کتاب مرجع) داشته باشد.

برنامه شامل 3 بخش اصلی است:

  • اپراتورها؛
  • داده ها؛
  • کارکرد.

آردوینو را از کجا بخریم


کیت های آردوینو

دوره با دروس تکمیلی به روز می شود. ما را دنبال کنید

امروز در مورد استفاده از کارت های SD و micro SD در آردوینو صحبت خواهیم کرد. نحوه اتصال کارت های SD به آردوینو، نحوه نوشتن و خواندن اطلاعات را خواهیم فهمید. استفاده از حافظه اضافی می تواند در بسیاری از پروژه ها بسیار مفید باشد. اگر نمی دانید پین های SPI، I2C و آنالوگ چیست، به شما توصیه می کنم درس های گذشته را تماشا کنید و این رابط های ارتباطی آردوینو را درک کنید.

در این آموزش در مورد ارتباط بی سیم بین دو برد آردوینو صحبت خواهیم کرد. این می تواند برای انتقال دستورات از یک آردوینو به آردوینو دیگر یا تبادل اطلاعات بین کارهای DIY شما بسیار مفید باشد. امکان انتقال داده های بی سیم فرصت های جدیدی را در ایجاد پروژه های شما باز می کند.

در این آموزش با اتوبوس I2C آشنا می شویم. I2C یک اتوبوس ارتباطی است که فقط از دو خط استفاده می کند. با استفاده از این رابط، آردوینو می تواند با بسیاری از دستگاه ها از طریق دو سیم ارتباط برقرار کند. امروز نحوه اتصال سنسورها به آردوینو از طریق گذرگاه I2C، نحوه دسترسی به یک دستگاه خاص و نحوه دریافت اطلاعات از این دستگاه ها را خواهیم فهمید.

در این آموزش در مورد رابط ارتباطی سریال آردوینو صحبت خواهیم کرد. ما قبلاً از این رابط در درس های قبلی استفاده کرده ایم، زمانی که مقادیر را از حسگرها روی صفحه رایانه نمایش می دهیم. امروز نگاهی دقیق تر به نحوه عملکرد این اتصال خواهیم داشت و همچنین نحوه استفاده از داده های منتقل شده به مانیتور پورت رایانه را با استفاده از Processing خواهیم آموخت.

امروز در مورد ترانزیستورها و بارهای اتصال به آردوینو صحبت خواهیم کرد. خود آردوینو نمی تواند از یک پین ولتاژ بالاتر از 5 ولت و جریان بالاتر از 40 میلی آمپر تولید کند. این برای سنسورها و ال ای دی ها کافی است، اما اگر بخواهیم دستگاه هایی را به هم وصل کنیم که نیاز به جریان بیشتری دارند، باید از ترانزیستور یا رله استفاده کنیم.

در این درس در مورد اصول طراحی مدار که در آردوینو اعمال می شود صحبت خواهیم کرد. و بیایید، البته، با قانون اهم شروع کنیم، زیرا این اساس همه مدارها است. همچنین در این درس در مورد مقاومت، مقاومت های بالا و بالا، محاسبه جریان و ولتاژ صحبت خواهیم کرد.

در این مقاله تصمیم گرفتم یک راهنمای کامل گام به گام برای مبتدیان آردوینو تهیه کنم. ما به این خواهیم پرداخت که آردوینو چیست، چه چیزی برای شروع یادگیری نیاز دارید، کجا دانلود کنید و چگونه محیط برنامه نویسی را نصب و پیکربندی کنید، چگونه کار می کند و چگونه از زبان برنامه نویسی استفاده کنید، و بسیاری موارد دیگر که برای ایجاد یک برنامه کامل ضروری است. دستگاه های پیچیده بر اساس خانواده این میکروکنترلرها.

در اینجا سعی می کنم یک حداقل فشرده ارائه دهم تا اصول کار با آردوینو را درک کنید. برای غوطه ور شدن کاملتر در دنیای میکروکنترلرهای قابل برنامه ریزی به قسمت ها و مقالات دیگر این سایت توجه کنید. من پیوندهایی به سایر مطالب در این سایت برای مطالعه دقیق برخی از جنبه ها خواهم گذاشت.

آردوینو چیست و برای چیست؟

آردوینو یک کیت ساخت و ساز الکترونیکی است که به هر کسی اجازه می دهد تا انواع دستگاه های الکترومکانیکی بسازد. آردوینو از نرم افزار و سخت افزار تشکیل شده است. بخش نرم افزار شامل یک محیط توسعه (برنامه ای برای نوشتن و اشکال زدایی سیستم عامل)، بسیاری از کتابخانه های آماده و راحت و یک زبان برنامه نویسی ساده شده است. این سخت افزار شامل خط بزرگی از میکروکنترلرها و ماژول های آماده برای آنها می باشد. به لطف این، کار با آردوینو بسیار آسان است!

با کمک آردوینو می توانید برنامه نویسی، مهندسی برق و مکانیک را یاد بگیرید. اما این فقط یک سازنده آموزشی نیست. بر اساس آن، می توانید دستگاه های بسیار مفیدی بسازید.
شروع از چراغ های چشمک زن ساده، ایستگاه های هواشناسی، سیستم های اتوماسیون و پایان دادن به سیستم های خانه هوشمند، ماشین های CNC و وسایل نقلیه هوایی بدون سرنشین. امکانات حتی با تخیل شما محدود نمی شود، زیرا تعداد زیادی دستورالعمل و ایده برای اجرا وجود دارد.

کیت استارت آردوینو

برای شروع یادگیری آردوینو، باید خود برد میکروکنترلر و قطعات اضافی را خریداری کنید. بهترین کار خرید کیت استارت آردوینو است، اما می توانید هر چیزی را که نیاز دارید انتخاب کنید. من توصیه می کنم یک مجموعه را انتخاب کنید زیرا آسان تر و اغلب ارزان تر است. در اینجا پیوندهایی به بهترین مجموعه ها و بخش های فردی وجود دارد که قطعاً باید مطالعه کنید:

کیت اصلی آردوینو برای مبتدیان:خرید کنید
مجموعه بزرگ برای آموزش و اولین پروژه ها:خرید کنید
مجموعه ای از سنسورها و ماژول های اضافی:خرید کنید
Arduino Uno ابتدایی ترین و راحت ترین مدل از این خط است:خرید کنید
تخته نان بدون لحیم برای یادگیری آسان و نمونه سازی:خرید کنید
مجموعه ای از سیم ها با اتصال دهنده های مناسب:خرید کنید
مجموعه LED:خرید کنید
کیت مقاومت:خرید کنید
دکمه ها:خرید کنید
پتانسیومترها:خرید کنید

محیط توسعه آردوینو IDE

برای نوشتن، اشکال زدایی و دانلود سیستم عامل، باید Arduino IDE را دانلود و نصب کنید. این یک برنامه بسیار ساده و راحت است. در وب سایت خود من قبلاً روند دانلود، نصب و پیکربندی محیط توسعه را شرح داده ام. بنابراین، در اینجا من به سادگی پیوندهایی را به آخرین نسخه برنامه و به آن می گذارم

نسخه پنجره ها Mac OS X لینوکس
1.8.2

زبان برنامه نویسی آردوینو

هنگامی که یک برد میکروکنترلر در دست دارید و یک محیط توسعه بر روی رایانه خود نصب شده است، می توانید شروع به نوشتن اولین طرح ها (سیستم افزار) خود کنید. برای این کار باید با زبان برنامه نویسی آشنا شوید.

برنامه نویسی آردوینو از نسخه ساده شده زبان C++ با توابع از پیش تعریف شده استفاده می کند. مانند سایر زبان های برنامه نویسی C مانند، قوانینی برای نوشتن کد وجود دارد. در اینجا اساسی ترین آنها وجود دارد:

  • هر دستورالعمل باید با یک نقطه ویرگول (;) دنبال شود.
  • قبل از اعلان یک تابع، باید نوع داده ای را که توسط تابع برگردانده شده است مشخص کنید، یا اگر تابع مقداری را برنگرداند، void شود.
  • همچنین لازم است قبل از اعلام یک متغیر، نوع داده را مشخص کنید.
  • نظرات مشخص شده اند: // درون خطی و /* بلوک */

شما می توانید اطلاعات بیشتری در مورد انواع داده ها، توابع، متغیرها، عملگرها و ساختارهای زبان در صفحه در شما لازم نیست همه این اطلاعات را به خاطر بسپارید و به خاطر بسپارید. همیشه می توانید به کتاب مرجع بروید و به نحو یک تابع خاص نگاه کنید.

تمام سفت‌افزار آردوینو باید حداقل دارای ۲ عملکرد باشد. اینها setup() و loop() هستند.

عملکرد راه اندازی

برای اینکه همه چیز کار کند، باید یک طرح بنویسیم. اجازه دهید پس از فشار دادن دکمه، LED روشن شود و پس از فشار بعدی خاموش شود. این اولین طرح ما است:

// متغیرهای دارای پین های دستگاه های متصل int switchPin = 8; int ledPin = 11; // متغیرهایی برای ذخیره وضعیت دکمه و LED boolean lastButton = LOW; دکمه جریان بولی = LOW; بولی ledOn = نادرست; void setup() (pinMode(switchPin, INPUT)؛ pinMode(ledPin, OUTPUT)؛ ) // تابعی برای debounse boolean debounse(boolean last) (Bolean current = digitalRead(switchPin); if(last!= current) ( تاخیر ( 5؛ جریان = digitalRead(switchPin)؛ ) جریان برگشتی؛ ) void loop() (currentButton = debounse(lastButton)؛ if(lastButton == LOW && currentButton == HIGH) (ledOn = !ledOn;) lastButton = currentButton; digitalWrite (ledPin، ledOn)؛

// متغیرها با پین های دستگاه های متصل

int switchPin = 8 ;

int ledPin = 11 ;

// متغیرهایی برای ذخیره وضعیت دکمه و LED

بولی lastButton = LOW ;

جریان بولی دکمه = LOW ;

بولی ledOn = نادرست ;

void setup() (

pinMode (SwitchPin، INPUT)؛

pinMode (ledPin، OUTPUT)؛

// تابع برای debouncing

دبونس بولی (آخرین بولی) (

جریان بولی = DigitalRead(SwitchPin);

اگر (آخرین != فعلی) (

تاخیر (5);

جریان = DigitalRead (SwitchPin)؛

جریان برگشتی؛

حلقه خالی() (

currentButton = debounse(lastButton);

اگر (آخرین دکمه == کم و دکمه فعلی == بالا) (

ledOn = ! ledOn ;

lastButton = currentButton ;

digitalWrite (ledPin، ledOn)؛

در این طرح، من یک تابع debounse اضافی برای سرکوب جهش تماس ایجاد کردم. اطلاعاتی در مورد پرش مخاطب در وب سایت من وجود دارد. حتما این مطالب را بررسی کنید.

PWM آردوینو

مدولاسیون عرض پالس (PWM) فرآیند کنترل ولتاژ با استفاده از چرخه وظیفه یک سیگنال است. یعنی با استفاده از PWM می‌توانیم بار را به آرامی کنترل کنیم. به عنوان مثال، شما می توانید به آرامی روشنایی یک LED را تغییر دهید، اما این تغییر در روشنایی نه با کاهش ولتاژ، بلکه با افزایش فواصل سیگنال پایین به دست می آید. اصل عملکرد PWM در این نمودار نشان داده شده است:

وقتی PWM را روی LED اعمال می کنیم، به سرعت شروع به روشن شدن و خاموش شدن می کند. چشم انسان قادر به دیدن آن نیست زیرا فرکانس بسیار زیاد است. اما هنگام فیلمبرداری، به احتمال زیاد لحظاتی را خواهید دید که LED روشن نمی شود. این به شرطی اتفاق می افتد که نرخ فریم دوربین مضربی از فرکانس PWM نباشد.

آردوینو دارای تعدیل کننده عرض پالس داخلی است. شما می توانید از PWM فقط روی آن پین هایی استفاده کنید که توسط میکروکنترلر پشتیبانی می شوند. به عنوان مثال، Arduino Uno و Nano دارای 6 پایه PWM هستند: این پایه‌ها D3، D5، D6، D9، D10 و D11 هستند. ممکن است پین ها در سایر تخته ها متفاوت باشند. می توانید شرح تابلویی را که به آن علاقه دارید بیابید

برای استفاده از PWM در آردوینو تابعی وجود دارد که عدد پین و مقدار PWM را از 0 تا 255 به عنوان آرگومان می گیرد. بیایید به عنوان مثال یک طرح ساده بنویسیم. بیایید LED را به آرامی روشن کنیم، یک ثانیه صبر کنیم و به همان آرامی محو شوند، و به همین ترتیب بی نهایت ادامه دهیم. در اینجا مثالی از استفاده از این تابع آورده شده است:

// LED به پین ​​11 int ledPin = 11 متصل است. void setup() (pinMode(ledPin, OUTPUT); ) void loop() (برای (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i)؛ تاخیر(5)؛ )

// LED متصل به پین ​​11

int ledPin = 11 ;

void setup() (

pinMode (ledPin، OUTPUT)؛

حلقه خالی() (

برای (int i = 0 ; i< 255 ; i ++ ) {

analogWrite (ledPin، i)؛

تاخیر (5);

تاخیر (1000);

برای (int i = 255; i > 0; i -- ) (

این شبیه ساز در مرورگر کروم بهترین عملکرد را دارد
بیایید نگاهی دقیق تر به آردوینو بیندازیم.

آردوینو کامپیوتر بزرگی نیست که بتوان آن را به مدارهای خارجی متصل کرد. Arduino Uno از Atmega 328P استفاده می کند
این بزرگترین تراشه روی برد است. این تراشه برنامه هایی را اجرا می کند که در حافظه آن ذخیره شده اند. می توانید برنامه را از طریق usb با استفاده از Arduino IDE دانلود کنید. پورت USB نیز برق آردوینو را تامین می کند.

یک کانکتور برق جداگانه وجود دارد. این برد دارای دو پایه با برچسب 5 ولت و 3.3 ولت است که برای تغذیه دستگاه های مختلف مورد نیاز است. همچنین پین هایی با علامت GND پیدا خواهید کرد، این پین های زمین هستند (زمین 0 ولت است). پلتفرم آردوینو همچنین دارای 14 پین دیجیتال با برچسب 0 تا 13 است که به گره های خارجی متصل می شوند و دارای دو حالت بالا یا پایین (روشن یا خاموش) هستند. این مخاطبین می توانند به عنوان خروجی یا ورودی کار کنند، یعنی. آنها می توانند برخی از داده ها را انتقال دهند و دستگاه های خارجی را کنترل کنند یا داده ها را از دستگاه ها دریافت کنند. پین های بعدی روی برد دارای برچسب A0-A5 هستند. اینها ورودی های آنالوگ هستند که می توانند داده ها را از سنسورهای مختلف دریافت کنند. این به ویژه هنگامی که شما نیاز به اندازه گیری محدوده خاصی مانند دما دارید راحت است. ورودی های آنالوگ دارای عملکردهای اضافی هستند که می توانند به طور جداگانه فعال شوند.

نحوه استفاده از برد توسعه

تخته نان برای اتصال موقت قطعات، بررسی نحوه عملکرد دستگاه، قبل از اینکه همه چیز را به هم لحیم کنید، مورد نیاز است.
تمام نمونه‌های زیر بر روی یک تخته نان مونتاژ شده‌اند تا بتوانید به سرعت تغییراتی در مدار ایجاد کنید و از قطعات بدون زحمت لحیم کاری استفاده کنید.

تخته نان دارای ردیف هایی از سوراخ است که می توانید قطعات و سیم ها را داخل آن قرار دهید. برخی از این سوراخ ها به صورت الکتریکی به یکدیگر متصل می شوند.

دو ردیف بالا و پایین به صورت ردیفی در طول کل تخته به هم متصل می شوند. از این ردیف ها برای تامین برق مدار استفاده می شود. می تواند 5 ولت یا 3.3 ولت باشد، اما در هر صورت، اولین کاری که باید انجام دهید این است که 5 ولت و GND را همانطور که در تصویر نشان داده شده است به برد برد متصل کنید. گاهی ممکن است این اتصالات ردیفی در وسط برد خراب شود، سپس در صورت نیاز می توانید آنها را مانند تصویر وصل کنید.








سوراخ های باقی مانده که در وسط تخته قرار دارند به گروه های پنج سوراخی گروه بندی می شوند. از آنها برای اتصال قطعات مدار استفاده می شود.


اولین چیزی که به میکروکنترلر خود وصل می کنیم یک LED است. نمودار اتصال برق در تصویر نشان داده شده است.

چرا در مدار به مقاومت نیاز است؟ در این حالت، جریان عبوری از LED را محدود می کند. هر LED برای جریان خاصی طراحی شده است و اگر این جریان بیشتر باشد، LED از کار می افتد. با استفاده از قانون اهم می توانید مقدار مقاومت را دریابید. برای کسانی که نمی دانند یا فراموش کرده اند، قانون اهم می گوید که یک رابطه خطی بین جریان و ولتاژ وجود دارد. یعنی هر چه ولتاژ بیشتری به مقاومت وارد کنیم جریان بیشتری از آن عبور می کند.
V=I*R
جایی که V- ولتاژ در سراسر مقاومت
من- جریان از طریق مقاومت
آر- مقاومت که باید پیدا شود.
ابتدا باید ولتاژ مقاومت را دریابیم. اکثر ال ای دی های 3 یا 5 میلی متری که استفاده می کنید دارای ولتاژ کاری 3 ولت هستند. این بدان معنی است که ما باید 5-3 = 2 ولت را در مقاومت خاموش کنیم.

سپس جریان عبوری از مقاومت را محاسبه می کنیم.
اکثر ال ای دی های 3 و 5 میلی متری با روشنایی کامل در 20 میلی آمپر می درخشند. جریانی بیشتر از این می‌تواند آن‌ها را غیرفعال کند، در حالی که جریانی با شدت کمتر، روشنایی آن‌ها را بدون ایجاد آسیب کاهش می‌دهد.

بنابراین، ما می خواهیم LED را به مدار 5 ولت وصل کنیم تا جریان 20 میلی آمپر را حمل کند. از آنجا که تمام قطعات در یک مدار گنجانده شده اند ، مقاومت نیز دارای جریان 20 میلی آمپر خواهد بود.
ما گرفتیم
2 ولت = 20 میلی آمپر * R
2V = 0.02A * R
R = 100 اهم

100 اهم حداقل مقاومت است ، بهتر است کمی بیشتر استفاده کنید ، زیرا LED ها در خصوصیات تنوع دارند.
در این مثال از مقاومت 220 اهم استفاده می شود. فقط به این دلیل که نویسنده تعداد زیادی از آنها را دارد: چشمک :.

LED را در وسط صفحه قرار دهید تا سرب طولانی آن به یکی از مقاومتهای مقاومت وصل شود. انتهای دوم مقاومت را به 5 ولت وصل کنید و سرب دوم LED را به GND وصل کنید. LED باید روشن شود.

لطفاً توجه داشته باشید که در نحوه اتصال LED تفاوت وجود دارد. جریان جریان از ترمینال طولانی تر به سمت کوتاه تر. در نمودار می توانید تصور کنید که جریان در جهت هدایت مثلث جریان می یابد. سعی کنید وارونه LED را پایین بیاورید و خواهید دید که روشن نمی شود.

اما نحوه اتصال مقاومت به هیچ وجه فرقی نمی کند. می توانید آن را روشن کنید یا سعی کنید آن را به یک پین متفاوت از LED وصل کنید ، این کار در عملکرد مدار تأثیر نمی گذارد. هنوز جریان را از طریق LED محدود می کند.

آناتومی طرح آردوینو.

برنامه هایی برای Arduino Sketch نامیده می شود. آنها از دو کارکرد اصلی تشکیل شده اند. تابع برپاییو عملکرد حلقه
در داخل این عملکرد تمام تنظیمات اساسی را تنظیم می کنید. کدام پین ها به عنوان ورودی یا خروجی کار می کنند ، که کتابخانه ها برای اتصال ، متغیرها را اولیه می کنند. تابع برپایی()هنگامی که اجرای برنامه شروع می شود ، فقط یک بار در طول طرح اجرا می شود.
این کارکرد اصلی است که پس از آن اجرا می شود برپایی(). در واقع ، این خود برنامه است. این عملکرد تا زمانی که برق را خاموش نکنید ، به طور نامحدود اجرا می شود.

LED چشمک زن آردوینو



در این مثال یک مدار LED را به یکی از پایه های دیجیتال آردوینو وصل می کنیم و با استفاده از یک برنامه آن را روشن و خاموش می کنیم و همچنین چندین عملکرد مفید را یاد خواهید گرفت.

این تابع در برپایی()بخشی از برنامه است و برای مقداردهی اولیه پین ​​هایی که به عنوان ورودی استفاده خواهید کرد، خدمت می کند (ورودی)یا خروج (خروجی). تا زمانی که آن را به ترتیب روی پین تنظیم نکنید، قادر به خواندن یا نوشتن اطلاعات از پین نخواهید بود pinMode. این تابع دو آرگومان دارد: شماره پینشماره پینی است که از آن استفاده خواهید کرد.

حالت-تنظیم می کند که پین ​​چگونه کار کند. در ورودی (ورودی)یا خروج (خروجی). برای روشن کردن LED باید سیگنال بدهیم از جانبآردوینو. برای این کار پین خروجی را پیکربندی می کنیم.
- این تابع برای تنظیم وضعیت استفاده می شود (حالت)پینا (شماره پین). دو حالت اصلی وجود دارد (در واقع 3 تای آنها)، یکی این است بالا، 5 ولت روی پین وجود خواهد داشت، این چیز دیگری است کمو پین 0 ولت خواهد بود. این بدان معناست که برای روشن کردن LED باید پین متصل به LED را در سطح بالایی قرار دهیم بالا.

تاخیر انداختن. برای به تاخیر انداختن عملکرد برنامه برای یک دوره مشخص شده در msec عمل می کند.
در زیر کدی وجود دارد که باعث چشمک زدن LED می شود.
//LED Blink int ledPin = 7;//Pin Arduino که LED به آن متصل است void setup() (pinMode(ledPin, OUTPUT);// تنظیم پین به عنوان OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// تأخیر LED را روشن کنید (1000)؛// تأخیر 1000 میلی‌ثانیه (1 ثانیه) DigitalWrite (ledPin, LOW);//تأخیر LED را خاموش کنید (1000)؛//1 ثانیه صبر کنید)

توضیحات کوچک در مورد کد
خطوطی که با "//" شروع می شوند کامنت هستند و توسط آردوینو نادیده گرفته می شوند.
تمام دستورات با نقطه ویرگول به پایان می رسند، اگر آنها را فراموش کنید، یک پیام خطا دریافت خواهید کرد.

ledPinیک متغیر است. از متغیرها در برنامه ها برای ذخیره مقادیر استفاده می شود. در این مثال، متغیر ledPinمقدار به 7 اختصاص داده شده است، این شماره پین ​​آردوینو است. زمانی که برنامه آردوینو با خطی با متغیر مواجه می شود ledPin، از مقداری که قبلاً تعیین کردیم استفاده می کند.
پس ثبت کن pinMode (ledPin، OUTPUT)مشابه ضبط pinMode (7، OUTPUT).
اما در حالت اول فقط باید متغیر را تغییر دهید و در هر خطی که از آن استفاده می شود تغییر می کند و در حالت دوم برای تغییر متغیر باید در هر دستور به صورت دستی تغییراتی ایجاد کنید.

خط اول نوع متغیر را نشان می دهد. هنگام برنامه نویسی آردوینو، مهم است که همیشه نوع متغیرها را اعلام کنید. در حال حاضر برای شما کافی است که این را بدانید INTاعداد منفی و مثبت را اعلام می کند.
در زیر یک شبیه سازی از طرح ارائه شده است. برای مشاهده عملکرد مدار روی start کلیک کنید.

همانطور که انتظار می رفت، LED خاموش می شود و پس از یک ثانیه روشن می شود. سعی کنید تاخیر را تغییر دهید تا ببینید چگونه کار می کند.

کنترل چندین LED

در این مثال، نحوه کنترل چندین LED را یاد خواهید گرفت. برای این کار 3 ال ای دی دیگر روی برد نصب کرده و مطابق شکل زیر به مقاومت ها و پین های آردوینو متصل کنید.

برای روشن و خاموش کردن تک تک LED ها باید برنامه ای شبیه به این بنویسید:
//چند LED چشمک زدن int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() (//تنظیم پین ها به صورت OUTPUT pinMode(led1Pin, OUTPUT)؛ pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH );//تاخیر LED را روشن کنید(1000);//تأخیر 1 ثانیه دیجیتالنوشتن(led1Pin, LOW);//تاخیر LED را خاموش کنید(1000);//تاخیر 1 ثانیه //همین کار را برای 3 ثانیه دیگر انجام دهید LEDها DigitalWrite(led2Pin , HIGH);//روشن کردن تاخیر LED(1000);//تاخیر 1 ثانیه دیجیتالنوشتن(led2Pin, LOW);//خاموش کردن تاخیر LED(1000);//تاخیر 1 ثانیه DigitalWrite(led3Pin, HIGH )//روشن کردن تاخیر LED(1000)؛// تاخیر 1 ثانیه دیجیتالنوشتن(led3Pin, LOW);//خاموش تاخیر LED(1000)؛//تاخیر 1 ثانیه DigitalWrite(led4Pin, HIGH);//روشن تأخیر LED (1000);// تأخیر 1 ثانیه دیجیتالنوشتن (led4Pin، LOW);//خاموش کردن تأخیر LED (1000);//تأخیر 1 ثانیه)

این برنامه عالی کار خواهد کرد، اما منطقی ترین راه حل نیست. کد باید تغییر کند. برای اینکه برنامه بارها و بارها کار کند، از ساختاری به نام استفاده می کنیم.
حلقه ها زمانی مفید هستند که نیاز دارید یک عمل را چندین بار تکرار کنید. در کد بالا خطوط را تکرار می کنیم

DigitalWrite (led4Pin، HIGH)؛ تاخیر (1000); digitalWrite (led4Pin، LOW)؛ تاخیر (1000);
کد طرح کامل در پیوست (دانلود: 1260)

تنظیم روشنایی LED

گاهی اوقات باید روشنایی LED های برنامه را تغییر دهید. این را می توان با استفاده از دستور انجام داد analogWrite() . این دستور LED را آنقدر سریع روشن و خاموش می کند که چشم نمی تواند سوسو زدن را ببیند. اگر LED نیمی از زمان روشن و نیمی از زمان خاموش شود، از نظر بصری به نظر می رسد که با نیمی از روشنایی خود می درخشد. به این مدولاسیون عرض پالس (به انگلیسی PWM یا PWM) گفته می شود. Shim اغلب استفاده می شود، زیرا می توان از آن برای کنترل یک جزء "آنالوگ" با استفاده از یک کد دیجیتال استفاده کرد. همه پین ​​های آردوینو برای این اهداف مناسب نیستند. فقط آن دسته از نتایجی که چنین تعیینی نزدیک به آنها انجام می شود " ~ ". آن را در کنار پین های 3،5،6،9،10،11 خواهید دید.
یکی از LED های خود را به یکی از پایه های PWM وصل کنید (برای نویسنده این پایه 9 است). اکنون طرح LED چشمک زن را اجرا کنید، اما ابتدا دستور را تغییر دهید digitalWrite()بر analogWrite(). analogWrite()دارای دو آرگومان است: اولی عدد پین و دومی مقدار PWM (0-255)، در رابطه با LED ها این روشنایی آنها خواهد بود و برای موتورهای الکتریکی سرعت چرخش. در زیر یک کد نمونه برای روشنایی های مختلف LED آورده شده است.
//تغییر روشنایی LED int ledPin = 9;//یک LED به این پین void setup() متصل است ( pinMode(ledPin, OUTPUT);// مقداردهی اولیه پین ​​به خروجی ) void loop() ( analogWrite( ledPin، 255);// روشنایی کامل (255/255 = 1) تأخیر(1000);//مکث 1 ثانیه دیجیتالWrite(ledPin، LOW);//تخفیف LED تأخیر(1000);//مکث 1 ثانیه analogWrite( ledPin، 191);//روشنایی با 3/4 (191/255 ~= 0.75) تأخیر (1000);//مکث 1 ثانیه دیجیتال نوشتن (ledPin، LOW);//خاموش کردن تأخیر LED (1000)؛// مکث 1 ثانیه آنالوگWrite(ledPin، 127)؛ //نصف روشنایی (127/255 ~= 0.5) تأخیر (1000);//مکث 1 ثانیه DigitalWrite (ledPin، LOW);//خاموش کردن تأخیر LED (1000);/ /مکث 1 ثانیه آنالوگWrite(ledPin، 63)؛ //یک چهارم روشنایی (63/255 ~= 0.25) تأخیر (1000);//مکث 1 ثانیه دیجیتالنوشتن (ledPin، LOW);//تاخیر LED را خاموش کنید (1000) ;//مکث 1 ثانیه)

سعی کنید مقدار PWM را در دستور تغییر دهید analogWrite()برای دیدن این که چگونه این بر روشنایی تأثیر می گذارد.
در مرحله بعد، یاد خواهید گرفت که چگونه روشنایی را به آرامی از کامل به صفر تنظیم کنید. البته می توانید یک کد را 255 بار کپی کنید
آنالوگ نویس (لدپین ، روشنایی) ؛ تاخیر(5);// روشنایی تاخیر کوتاه = روشنایی + 1;
اما ، شما می فهمید ، این عملی نخواهد بود. بهترین راه برای انجام این کار استفاده از حلقه FOR است که قبلا استفاده کردیم.
مثال زیر از دو حلقه استفاده می کند، یکی برای کاهش روشنایی از 255 به 0
برای (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); )
تاخیر (5)برای کاهش سرعت محو شدن روشنایی استفاده می شود 5*256=1280ms=1.28s)
خط اول از " روشنایی-" تا هر بار که حلقه تکرار می شود مقدار روشنایی 1 کاهش یابد. توجه داشته باشید که حلقه تا زمانی اجرا می شود که روشنایی >=0.تعویض علامت > روی علامت >= ما 0 را در محدوده روشنایی قرار دادیم. این طرح در زیر مدل شده است. //به آرامی روشنایی را تغییر دهید ledPin = 9;//یک LED به این پین void setup() متصل است (pinMode(ledPin, OUTPUT);// مقدار دهی اولیه پین ​​خروجی) void loop() ( //به آرامی افزایش روشنایی (0 تا 255) برای (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); ) delay(1000);//1 ثانیه صبر کنید //به آرامی روشنایی را کاهش دهید (255 تا 0) برای (روشنایی int = 255 ؛ روشنایی> = 0 ؛ روشنایی-) (آنالوگ (لدپین ، روشنایی) ؛ تأخیر (5) ؛) تأخیر (1000) ؛ // صبر 1 ثانیه))
خیلی قابل مشاهده نیست، اما ایده واضح است.

RGB LED و آردوینو

LED RGB در واقع سه LED رنگی مختلف در یک بسته است.

با درج LED های مختلف با روشنایی های مختلف ، می توانید آنها را برای ایجاد رنگ های مختلف ترکیب کنید. برای Arduino ، جایی که تعداد میزان روشنایی 256 است ، 256^3 = 16581375 رنگ ممکن را دریافت خواهید کرد. در واقعیت ، البته ، تعداد کمتری از آنها وجود خواهد داشت.
LED مورد استفاده ما کاتد رایج است. آن ها هر سه LED از نظر ساختاری توسط کاتدها به یک ترمینال متصل می شوند. این پایه را به پایه GND وصل می کنیم. پین های باقیمانده ، از طریق محدود کننده مقاومت ، باید به پین ​​های PWM وصل شوند. نویسنده از پین های 9-11 استفاده کرده است. از این طریق امکان کنترل هر LED به طور جداگانه امکان پذیر است. طرح اول نحوه روشن کردن هر LED را به صورت جداگانه نشان می دهد.



//RGB LED - تست //پین اتصالات int red = 9; int green = 10; int blue = 11; void setup())( pinMode(قرمز، OUTPUT)؛ pinMode(آبی، OUTPUT)؛ pinMode(سبز، OUTPUT)؛ ) void loop())( //روشن/خاموش LED قرمز دیجیتالWrite(قرمز، HIGH); تأخیر (500)؛ دیجیتالنوشتن (قرمز، کم)، تأخیر (500)؛ //روشن/خاموش کردن LED سبز DigitalWrite(سبز، HIGH)؛ تأخیر (500)؛ DigitalWrite (سبز، LOW)؛ تأخیر (500)؛ // روشن/خاموش کردن LED LED DigitalWrite (آبی ، بالا) ؛ تأخیر (500) ؛ DigitalWrite (آبی ، کم) ؛ تأخیر (500) ؛)

مثال زیر از دستورات استفاده می کند analogWrite()و برای به دست آوردن مقادیر مختلف روشنایی تصادفی برای LED ها. خواهید دید که رنگهای مختلف به طور تصادفی در حال تغییر هستند.
// RGB LED - رنگ های تصادفی // اتصالات پین int قرمز = 9 ؛ int green = 10; int blue = 11; void setup())( pinMode(قرمز، OUTPUT)؛ pinMode(آبی، OUTPUT)؛ pinMode(سبز، OUTPUT)؛ ) void loop())( //انتخاب یک آنالوگ رنگ تصادفیWrite(قرمز، تصادفی(256)); آنالوگ (آبی ، تصادفی (256)) ؛ آنالوگ (سبز ، تصادفی (256)) ؛ تأخیر (1000) ؛ // یک ثانیه صبر کنید)

تصادفی (256)-یک عدد تصادفی را در محدوده 0 تا 255 جمع می کند.
در فایل پیوست طرحی است که انتقال رنگ صاف از قرمز به سبز و سپس آبی، قرمز، سبز و غیره را نشان می دهد. (دانلود: 348)
طرح مثال کار می کند، اما تعداد زیادی کد تکراری وجود دارد. می توانید کد را با نوشتن تابع کمکی خود که به آرامی از یک رنگ به رنگ دیگر تغییر می کند، ساده کنید.
در اینجا به چه شکل خواهد بود: (دانلود: 385)
بیایید به تعریف تابع تکه تکه نگاه کنیم. تابع فراخوانی می شود محو کنندهو دو استدلال دارد. هر آرگومان با کاما از هم جدا می شود و دارای یک نوع اعلام شده در خط اول تعریف تابع است: خالی کننده خالی (int color1، int color2). می بینید که هر دو آرگومان به صورت اعلام شده اند بین المللی، و به آنها اسامی داده می شود رنگ 1و رنگ2به عنوان متغیرهای شرط برای تعریف یک تابع. خالیبه این معنی که تابع هیچ مقداری را بر نمی گرداند، فقط دستورات را اجرا می کند. اگر بخواهید تابعی بنویسید که حاصل ضرب را برمی گرداند، به شکل زیر خواهد بود:
ضرب‌کننده بین‌المللی (int number1، int number2) (محصول int = عدد1*شماره2؛ محصول برگشتی؛ )
توجه کنید که چگونه Type را اعلام کردیم بین المللیبه عنوان یک نوع بازگشتی در عوض
خالی.
در داخل تابع دستوراتی وجود دارد که قبلاً در طرح قبلی استفاده کرده اید، فقط شماره پین ​​ها با آنها جایگزین شده اند. رنگ 1و رنگ2. تابع فراخوانی می شود محو کننده، آرگومان های آن به صورت محاسبه می شود رنگ 1 = قرمزو رنگ 2 = سبز. آرشیو شامل یک طرح کامل با استفاده از توابع است (دانلود: 288)

دکمه

طرح بعدی از دکمه‌ای استفاده می‌کند که مخاطبین معمولاً باز هستند، بدون قفل.


به این معنی که در حالی که دکمه فشار داده نمی شود، جریانی از آن عبور نمی کند و پس از رها شدن، دکمه به حالت اولیه خود باز می گردد.
علاوه بر دکمه، مدار از یک مقاومت استفاده می کند. در این مورد، جریان را محدود نمی کند، بلکه دکمه را به 0 ولت (GND) می کشد. آن ها تا زمانی که دکمه فشار داده نشود، پین آردوینو که به آن متصل است کم می شود. مقاومت مورد استفاده در مدار 10 کیلو اهم است.


//تعیین زمان فشار دادن دکمه int buttonPin = 7; void setup())(pinMode(buttonPin, INPUT);//initialize pin to input Serial.begin(9600);//initialize port serial) void loop())( if (digitalRead(buttonPin)==HIGH )(//اگر دکمه فشار داده شد Serial.println("فشرده")؛ // نمایش "فشرده شده") else (Serial.println("فشرده نشده"); // در غیر این صورت "فشرده نشده") )
چندین دستور جدید در این طرح وجود دارد.
-این دستور مقادیر زیاد و پایین خروجی را که آزمایش می کنیم می گیرد. این خروجی ابتدا باید به عنوان ورودی در تنظیم () تنظیم شود.
; //where buttonPin شماره پینی است که دکمه در آن متصل است.
پورت سریال به آردوینو این امکان را می دهد که در زمانی که خود کنترلر برنامه را اجرا می کند، به رایانه پیام ارسال کند. این برای اشکال زدایی یک برنامه، ارسال پیام به دستگاه ها یا برنامه های دیگر مفید است. برای فعال کردن انتقال داده از طریق یک پورت سریال (همچنین UART یا USART نامیده می شود)، باید آن را در setup () مقداردهی اولیه کنید.

Serial.begin()تنها یک آرگومان دارد - این سرعت انتقال داده بین آردوینو و کامپیوتر است.
طرح از دستوری برای نمایش یک پیام بر روی صفحه در Arduino IDE (ابزارها >> مانیتور سریال) استفاده می کند.
- طراحی به شما اجازه می دهد تا با ترکیب چندین چک در یک مکان، پیشرفت اجرای برنامه را کنترل کنید.
اگر digitalRead HIGH برگرداند، کلمه "pressed" روی مانیتور نمایش داده می شود. در غیر این صورت (در غیر این صورت) کلمه "رها شده" روی مانیتور نمایش داده می شود. اکنون می توانید با فشار دادن یک دکمه LED را روشن و خاموش کنید.
// تشخیص فشار دادن دکمه با خروجی LED دکمه intPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//این بار پین دکمه را به صورت INPUT pinMode(ledPin, OUTPUT) تنظیم می کنیم؛ Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin )= =HIGH)(digitalWrite(ledPin,HIGH)؛ Serial.println("فشرده شده")؛ ) else (digitalWrite(ledPin,LOW); Serial.println("فشرده نشده")؛ )

ورودی آنالوگ.

آنالوگ خواندنبه شما امکان می دهد داده ها را از یکی از پین های آنالوگ آردوینو بخوانید و مقداری را در محدوده 0 (0 ولت) تا 1023 (5 ولت) نمایش می دهد. اگر ولتاژ ورودی آنالوگ 2.5 ولت باشد، 2.5 / 5 * 1023 = 512 چاپ می شود.
آنالوگ خواندنفقط یک آرگومان دارد - این شماره ورودی آنالوگ (A0-A5) است. طرح زیر کد خواندن ولتاژ از پتانسیومتر را نشان می دهد. برای انجام این کار، یک مقاومت متغیر، پایانه های بیرونی را به پایه های 5 ولت و GND و ترمینال میانی را به ورودی A0 وصل کنید.

کد زیر را اجرا کنید و در مانیتور سریال ببینید که چگونه مقادیر بسته به چرخش دستگیره مقاومت تغییر می کند.
//ورودی آنالوگ int potPin = A0;//پایه مرکزی پتانسیومتر به این پین void setup()) وصل شده است( //پین آنالوگ به طور پیش فرض به عنوان ورودی گنجانده شده است، بنابراین نیازی به مقداردهی اولیه نیست Serial.begin(9600 ) ) void loop())( int potVal = analogRead(potPin);//potVal عددی بین 0 تا 1023 است Serial.println(potVal); )
طرح زیر طرح کلیک دکمه و طرح کنترل روشنایی LED را ترکیب می کند. LED از روی دکمه روشن می شود و روشنایی توسط یک پتانسیومتر کنترل می شود.
//تشخیص فشار دکمه با خروجی LED و شدت متغیر int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT)؛ pinMode(ledPin, OUTPUT)؛ Serial.begin(9600)؛ ) void loop())( if (digitalRead(buttonPin)==HIGH)(//اگر دکمه فشار داده شود int analogVal = analogRead(potPin)؛ int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);// روشن کردن led با شدت تنظیم شده توسط pot Serial.println("pressed"); ) else (digitalWrite(ledPin، LOW);//اگر دکمه فشار داده نشد خاموش شود. Serial.println("فشرده نشده")؛ )

تحویل محصولات جدید خانگی به اداره پست

مجموعه ای از محصولات جدید خانگی را از طریق ایمیل دریافت کنید. بدون هرزنامه، فقط ایده های مفید!