جلسه یازدهم : میکروسوئیچ

به نام خدا
سلام به دوستان

راستش قصد داشتم جلسه بعد برم سراغ سروو . ولی یه کم فکر کردم دیدم هنوز پروژه بیس زیاد داریم که بهتره اول اونا رو بگم بعد بریم سراغ سروو و ادامه ماجرا.
یه روند جدید: اول هر کاری که میشه با پین های دیجتال آردوینو کرد رو یاد میگیریم بعد میریم سراغ آنالوگ ها.
تا الان هر پروژه ای که انجام دادیم از پین های دیجیتال آردوینو به صورت خروجی استفاده کردیم. مثلا موقعی که یه LED ساده روشن کردیم، یا موقعی که RGB LED روشن کردیم و یا تو پروژه آخر یعنی موتور DC. همه جا پین دیجیتال خروجی بود یعنی ما ( آردوینو ) به فلان پایه دستور می دادیم 0 شو، یا 1 شو یا در مواقع pwm عدد متغیر می دادیم( انشاءالله که یادتونه).

الان نه! می خوایم از پایه دیجیتال بخونیم. فرض کنید یه سنسور دیجیتال داریم مثلا تشخیص حرکت . روش کار این سنسور دیجیتال اینطوریه که اگه کسی از جلوش رد بشه 1 رو بر میگردونه و در حالت عادی هم روی پایه سیگنالش 0 می افته. حالا این سنسور با این شرح عملکرد تو محیط قرار گرفته. اگه بخوایم داده سنسور رو با استفاده از آردوینو بخونیم مسلما باید بریم سراغ پین های دیجیتال ( چون سنسور دیجیتاله) و پین دیجیتال رو به عنوان ورودی استفاده کنیم . حالا این که اصن چرا اصرار دارم ورودی باشه؟
ببینید وقتی می خواستیم یه LED رو روشن کنیم ما دستور می دادیم که روش بشه در نتیجه فرمان دهنده ما بودیم. الان داستان کاملا برعکسه. الان سنسور داره دستور میده . وقتی روی پایه سیگنالش عدد 1 بیفته یعنی داره خبر میده که یکی از جلوش رد شده. بنابراین ما در نقش پذیرنده فرمان هستیم و به همین علت ساده پین دیجیتال متصل به سنسور از نوع ورودی تعریف میشه.

حالا تو این جلسه به جای این که از سنسور به عنوان تولید کننده پالس دیجیتال استفاده کنیم از سوئیچ استفاده می کنیم. سوئیچ ها خیلی متنوع هستن چند نمونش رو ببینید:
tact-switch-500x500push-switches-250x250

ولی ما از هیچ کدوم اینا استفاده نمی کنیم. از این ماژول استفاده می کنیم.
5-Way_Tactile_Switch-500x5005-Way_Tactile_Switch_2-500x500

سوئیچ های معمولی فقط بهت میگن فشار داده شدن یا نه ولی این سوئیچ علاوه بر اون قابلیت بهت میگه در کدوم جهت فشار داد شده. اگه به عکس پشت ماژول نگاه کنین علاوه بر پایه VCC (پایه ولتاژ) و GND (زمین) 5 تا پایه دیگه هم بیرون کشیده شده که به این صورتن:
Right (راست)، Down (پایین)، Left (چپ)، Center (مرکز) و Up (بالا).
حالا اگه کلید به سمت بالا فشار داده بشه پایه منطق پایه Up یک میشه ( از نظر ولتاژی یعنی ولتاژ این پایه ماژول 5 ولت میشه ) ، اگه کلید به سمت چپ فشار داده بشه پایه منطق پایه Left یک میشه و الی آخر.

برای اتصال این ماژول به آردوینو باید علاوه بر اتصال VCC و GND ، بقیه پین ها رو به 5 تا پین دیجیتال وصل کنیم.
اگه یادتون باشه (آیا؟) جلسه های قبل برای اتصال LED و موتور با یه سوال بزرگ مواجه می شدیم و سوال این بود که آیا به هر پین دیجیتالی می تونیم وصل کنیم؟ اونجا متناسب با پروژه جواب فرق داشت یا آره بود یا نه بود. اما تو مقوله استفاده از پین دیجیتال به عنوان ورودی هیچ استثنایی وجود نداره و از هر پین دیجیتالی میشه استفاده کرد بنابراین راحت باشید.

بنابراین اتصال ماژول به آردوینو به صورت زیر خواهد بود:
tactile

5 تا پین دیجیتال استفاده شده در این مدار می تونن هر 5 پین دیجیتال دلخواهی باشن.
مدار رو بستید؟
تمام؟
خب میریم سراغ کد نویسی
نرم افزار آردوینو رو باز کنید تا شروع کنیم.
پروژه ما اینه: هر جهتی که سوئیچ فشار داده شد تو کنسول آردوینو اون جهت نوشته بشه، مثلا اگه کلید به سمت پایین فشار داده شد تو کنسول نوشته بشه Down.
قدم اول نوشتن هدر برنامه هست:
ببینید تو هدر برنامه صرفا معرفی می کنیم، حالا این معرفی میتونه پین های مورد استفاده باشه، می تونه کتابخونه های مورد استفاده باشه و یا متغیرهایی که در طول برنامه قراره روشون کار کنیم. تو این پروژه ما از هیچ کتابخونه خاصی استفاده نمی کنیم بنابراین فقط پین هایی رو که استفاده کردیم براشون اسم انتخاب می کنیم(همون معرفی)
مثلا شماره پینی که به پین راست ماژول سوئیچ وصل شده پین شماره 6 آردوینو هست. تو هدر برنامه اسم این پین رو right_pin گذاشتیم. با این کار تا آخر برنامه هر بار با این پین کار داشته باشیم از اسم right_pin استفاده می کنیم. در مورد 4 پین دیجیتال دیگه هم همین قانون حاکمه.

2015-12-16_13-38-43

مرحله بعد تابع setup هست. قرارمون این بود که هر چی کانفیگ داریم رو بزاریم تو این تابع. الان چند تا کانفیگ داریم یا به زبون دیگه چیا رو باید کانفیگ کنیم؟
چون قراره خروجی کار رو تو کنسول ببینیم یکی از کانفیگ ها تنظیم نرخ داده (Baude Rate) هست که روی 9600 تنظیمش می کنیم.
از طرف دیگه داریم 5 تا پین دیجیتال رو استفاده می کنیم که طبق قوانین مطرح شده تو جلسات قبل لازمه ورودی بودنشون تو تابع setup بیان بشه.
بنابراین دو تا کانفیگ لازم داریم که به صورت زیر کد نویسی می کنیم:
2015-12-16_13-42-48

و اما تابع loop:
خب روند کار تو این تابع اینطوری هست که اول مقدار پایه دیجیتال رو می خونیم و توی یه متغیر نگهش می داریم .اگه مقدار 1 بود ( که یعنی کلید فشار داده شده) کامند مناسب اون رو تو کنسول چاپ می کنیم. من کد برای یه پین رو می نویسم که به صورت زیر میشه:
2015-12-16_13-53-21
کد رو با 4 قسمت مختلف از هم جدا کردم که تک به تک میریم جلو:

1.هر خطی که با دو تا اسلش شروع بشه (//) جزء دستور و خط برنامه به حساب نمیاد و اصطلاحا بهش میگن کامنت (بعدا خودمون هم کامنت میزاریم)
2.روند رو یادتونه؟ گفتم اول پایه دیجیتال آردوینو رو می خونیم. تو این خط برنامه دقیقا داریم همین کار رو می کنیم. به کمک دستور digitalRead مقدار پین دیجیتال رو می خونیم. همونطور که میبیند این دستور یه ورودی داره که همون پین دیجتالی هست که قراره خونده بشه. الان تو ورودی تابع right_pin نوشته شده که اسم دیگه همون پین دیجیتال شماره 6 هست. مقدار خونده شده توسط دستور digitalRead (که یا 0 هست یا 1) درون متغیر right_value ریخته شده.
3.قدم بعد باید چک کنیم داده خونده شده از پین دیجیتال 1 بوده یا نه؟ هر جا شرطی ایجاد میشه یعنی تابع if : الان تو تابع if گفتیم اگه مقدار متغیر right_value ( که همون داده پین دیجیتال رو داره) مساوی با 1 بود (یعنی کلید به سمت راست فشار داده شده بود) بیا کل دستورهای بین دو آکولاد رو اجرا کن.
2015-12-16_14-06-23
4.در صورتی که کلید به سمت راست فشار داده شده باشه بنابراین برنامه وارد این تابع if میشه و با دستور Serial.println ما کلمه Right رو توی کنسول چاپ می کنیم و تمام.

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

جلسه سوم : سخت افزار آردوینو

به نام خدا موضوع این جلسه، آموزش سخت افزار آردوینو هست که بیس آموزش، آردوینو UNO است.

ArduinoUno_R3_Front (1)

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

1
USB connector(قسمت زرد رنگ):
با این پورت آردوینو با کابل USB به کامپیوتر وصل می شه. حالا چه احتیاجی به این کابل USB وجود داره؟
1. تامین ولتاژ مصرفی آردوینو، به زبان ساده تر یعنی روشن کردن آردوینو.
2.پروگرام کردن آردوینو با همین کابل انجام میشه یعنی فقط کافیه کد رو داشته باشیم کابل USB رو وصل می کنیم و آپلود می کنیم.
3.ارتباط سریال بین کامپیوتر و آردوینو (این قسمت مربوط به بخش برنامه نویسی است که در جلسات آینده مورد بحث قرار می گیرد.)

سوکت آداپتور (قسمت صورتی رنگ) :
هروسیله ای برای روشن شدن به ولتاژ یا به اصلاح عامیانه تر برق احتیاج داره. آردوینو هم از این قاعده جدا نیست. برای روشن کردن آردوینو چند تا راه داریم. اولین راه همون کابل USB بود. حالا فرض کنید یه مدار با آردوینو بستیم که قراره توی یه مطب یا توی بانک ازش استفاده بشه. اگه قرار باشه تنها راه روشن کرد آردوینو کابل USB باشه، باید همه جا دنبال خودمون لپتاپ هم ببریم که منطقی نیست. حالا اومدن توی بردهای آردوینو یه سوکت قرار دادن که میشه به اون سوئیچ آداپتور وصل کرد و با همون ولتاژ مصرفی آردوینو فراهم میشه.
آداپتور-مودم-12-ولت-2-آمپر-شارژر-منبع-تغذیه-12v-2a-آداپتور-مودم-آدپتور-سوئیچ-هاب-آداپتور-هارد-آداپتور-12-اداپتور آداپتور ها ولتاژها وجریان های متفاوتی دارن. حواستون باشه اینطوریا هم نیست که هر ولتاژی دوست داشته باشیم به آردوینو بدیم. معمولا آداپتورهای 5 ولت یا 9 ولت به آردوینو وصل کنید. شدیدا پیشنهاد میکنیم که 12 ولت به آردوینو وصل نکنید چون در طولانی مدت مجبور می شید باهاش خداحافظی کنید.
حالا اومدیم یه بنده خدایی پیدا شد می خواست مدارشو برداره ببره وسط صحرا باهاش کار کنه و لپتاپ هم نتونه ببره. وسط صحرا ؟ پریز برق واسه آداپتور ؟راه حل: پایه vin (در مورد این پایه بعدا توضیح داده میشه).

منبع تغذیه (قسمت نارنجی رنگ):

Untitled
برای توضیح پین های این قسمت با مثال میریم جلو. فرض کنید دو تا سنسور داریم یکی دما یکی فشار. سنسور دما 5 ولت و سنسور فشار 3.3 ولت برای روشن شدن احتیاج دارن(همون VCC). از کجا ولتاژ بیاریم؟
اگه با avr کار کنیم باید دوتا رگولاتور 5 ولت و3.3 ولت بزاریم تا از خروجی این رگولاتورها به سنسورها ولتاژ بدیم ( اگه ولتاژ بیشتر از حد تحملشون بهشون داده بشه می سوزن).

حالا اگه با آردوینو کار کنیم این دوتا رگولاتوری که ازشون حرف زدیم به صورت پیش فرض روی خود برد قرار گرفته و خروجی 5 ولت و 3.3 ولت آماده و حاضر وجود دارن. یعنی اگه شما با یکی از راه های قبلی (کابل USB یا آداپتور) خود آردینو رو روشن کرده باشین روی این دو تا پایه ولتاژهای 5 ولت و 3.3 ولت آماده استفاده هستن (شک دارید ولتمتر بزارید).
علاوه بر این، دو تا پایه زمین (GND) هم داره. برای روشن شدن سنسور علاوه بر ولتاژ دادن باید پایه گراند هم متصل باشه در غیر این صورت با وجود وصل بودن vcc سنسور روشن نمیشه.

تا الان تکلیف 4 تا پایه روشن شد حالا میریم سراغ پایه Vin. تو قسمت سوکت آداپتور یه اشاره کوچیکی کردیم. فرض کنید یه پروژه داریم که باید دمای هوای صحرا در طول یک روز اندازه گیری بشه و به ایستگاهی در فاصله یک کیلومتری فرستاده بشه. پس باید به مدت یک روز آردوینو و سنسور دما و فرستنده بی سیم توی صحرا کار گذاشته بشن. وسط صحرا نمی تونیم با آداپتور آردوینو رو روشن کنیم (پریز برق نداریم خب) میریم سراغ کابل USB. برای استفاده از کابل باید لپتاپ ما بتونه به مدت یک روز شارژ نگه داره! عملا با دو روش قبلی کاری از پیش نمیبریم.
یعنی پروژه کنسل ؟ خیر میریم سراغ پایه Vin. میشه با باتری هم آردوینو رو روشن کرد . باتری دو تا خروجی داره : ولتاژ و زمین. کافیه خروجی ولتاژ باتری به پایه Vin و گراندش به گراند آردوینو وصل بشه. البته مثل آداپتور اینجا هم مجاز نیستیم هر ولتاژی بهش بدیم. سایت سازنده خودش پیشنهاد کرده ماکزیمم 12 ولت بهش بدید ( زیر 5 ولت هم قاعدتا نباید بهش ولتاژ داد).
البته پایه Vin یه کاربرد دیگه هم داره. وقتی ولتاژ آردوینو با آداپتور فراهم بشه روی این پایه همون ولتاژ آداپتور میوفته یعنی اگه آداپتور 9 ولت وصل کرده باشید روی این پایه ولتاژی حدود 9 ولت میوفته. زمانی هم که آردوینو با کابل USB روشن بشه روی پایه Vin تقریبا 5 ولت میوفته.

و اما پایه IOREF. سطح منطقی ای که برد باهاش کار میکنه روی این پایه میفته. مثلا آردوینو UNO روی پین های ورودی خروجیش با سطح منطقی 5 ولت کار میکنه ولی آردوینو DUE با ولتاژ 3.3 ولت کار می کنه.

در مورد پایه ریست پایان همین جلسه در قسمت کلید ریست توضیح میدیم.

ورودی و خروجی های دیجیتال (قسمت سبز رنگ):

Untitled
قبل از این که وارد موضوع اصلی بشیم شاید یه عده معنی دیجیتال و آنالوگ رو ندونن .اون دوستان برن اینجا یه دوری بزنن و بیان.
آردوینو 14 تا پین دیجیتال داره از D0 تا D13. این پین ها هم به عنوان ورودی هم به عنوان خروجی تعریف میشن. یه موقع دنبال این هستیم که رله خاموش روشن کنیم پس پین به عنوان خروجی در نظر گرفته میشه. بعضی موقع ها یه سنسور دیجیتال داریم (مثل سنسور تشخیص حرکت) در این شرایط پین به عنوان ورودی تعریف میشه.
یه نکته ظریفی این وسط وجود داره. درسته موتورها هم با پایه های دیجیتال کار میکنن ولی هر پایه آردوینو فقط 40 میلی آمپر جریان داره پس عملا موتور راه انداختن با آردوینو به تنهایی کار جالبی نیست و باعث سوختنش می شه.نه تنها موتور، هر سنسوری که جریانی بیشتر از تحمل آردوینو بکشه باعث سوختنش میشه. روی هر پین آردوینو هم PULL UP داخلی وجود داره که اگه پایه به عنوان ورودی در نظر گرفته بشه با برنامه نویسی میتونیم ازش استفاده کنیم.
بعضی از این 14 تا پین آردوینو علاوه بر دیجیتال بودن ویژه گی های دیگه ای هم دارن که توضیحشون همینجاست و جلسه های بعدی روی هر کدوم ازاونها پروژه انجام میدیم.
1- پایه های سریال (Rx & Tx) : پایه های D0 و D1 آردوینو به صورت پیش فرض به عنوان پایه های ارتباط سریال در نظر گرفته شدن. پروگرام کردن آردوینو از طریق کامپیوتر هم از طریق همین 2 تا پین صورت میگیره. طوری که وقتی آردوینو در حال پروگرام شدنه این دو تا پایه که به دو تا led وصل هستن شروع به چشمک زدن می کنن. خیلی کم پیش میاد از این دو تا پایه به عنوان پین های دیجیتال در حین انجام پروژه استفاده بشه. مثلا فرض کنید بیایم به پایه های D0و D1 رله وصل کنیم و با کد نویسی اون ها رو خاموش و روشن کنیم، در حین مسیر آپلود کردن کد تو نرم افزار آردوینو یه ارور میده چرا که پین هایی که برای پروگرام کردن لازم داره ما بهشون رله وصل کردیم و استفاده شدن. بنابراین اول رله ها رو جدا می کنیم بعد پروگرام می کینم و دوباره رله ها رو وصل می کنیم. خب چه کاریه؟ از اول به دو تا پین دیگه وصل می کردیم تا این مکافات کندن و وصل کردن رو نداشته باشیم.
حالا اومدیم و مجبور شدیم با ماژولی(مثل بلوتوث) کار کنیم که ار تباطش با آردوینو از نوع TTL بود، یعنی مجبور بودیم از پایه های Rx و Txاستفاه کینم. واقعا باید برای هر بار کد آپلود کردن دائم سیم جدا کنیم و وصل کنیم؟ جواب منفیه
شما میتونید به صورت نرم افزاری پین های ارتباط سریال رو اضافه کنید. البته نمیتونید از هر پین دلخواهی هم استفاده کنید. بسته به اینکه روی کدوم نوع آردوینو کار می کنید این پین ها متفاوت هستن. به این ترفند SoftwareSerial میگن که در آینده نزدیک روش مانور خواهیم داد.

2- اینتراپت (وقفه):
اول بخونید ببینید اینتراپت چیه.
در مورد کیس خاص ما یعنی آردوینو UNO دو تا وقفه خارجی روی پین های D2و D3 وجود داره که میشه با برنامه نویسی ازاونها استفاده کرد. روال کلی وقفه اینطوریه که وقتی روی پین D2 سیگنال بیفته (به عبارتی trigger بشه) میکرو دست از اجرای هر کاری بکشه و بره یه عملیات مخصوص وقفه انجام بده(اصطلاحا میگن تابع  وقفه رو انجام بده). برای مثال فرض کنید کد اصلی روی میکرو شمارش اعداد باشه، حالا ما یه وقفه تعریف کنیم که اگه پایه D2 توسط یه رله خارجی تحریک شد پیغام “Relay ” رو چاپ کنه روی lcd. برنامه رو استارت می کنیم. میکرو شروع میکنه به شمارش 1 ، 2 ،3 و همینطوری میره جلو روی عدد 8 رله را روشن میکنیم بنابراین در اون لحظه پایه D2 تحریک شده وتابع مربوط به وقفه باید انجام باشه بنابراین در عدد 8 متوقف میشه میره پیغام “Relay ” رو روی lcd نشون میده و بر میگرده در ادامه شروع میکنه 9 ،10 ،11 و….
شکل کلی یک پالس به صورت زیره:

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

3- 6 تا پین از 14 پین دیجیتال آردوینو UNO به صورت PWM هم کار میکنن. پین های 3، 5، 6، 9، 10 و 11. وقتی از PWM صحبت می کنیم یاد راه اندازی موتورهای DC می افتیم. ما میتونیم با استفاده از مد کاری PWM به موتورهای DC سرعت چرخش متفاوتی بدیم. با نحوه عملکرد این مد توجلسات آینده با جزئیات بیشتر و دقیق تر آشنا میشیم.

4- هر سنسوری برای برقراری ارتباط با پردازنده از یه پروتکل استفاده میکنه. بعضی ها از SPI و بعضی ها از I2C استفاده می کنن (البته یه سری از سنسورها هم ساده تر ازاین حرفا راه اندازی میشن که بعدا می بینیم). روی برد آردوینو برای هر کدوم از این دوتا پروتکل ارتباطی، پین های مشخصی در نظر گرفته شده.
اول در مورد ارتباط I2C حرف میزنیم. کلا اگه بخواهیم تشخیص بدیم سنسوری که قراره باهاش کار کنیم I2C هست یا نه کافیه به پین هاش نگاه کنیم اگه SCL و SDA داشت زدیم وسط خال. قدم بعد از تشخیص پروتکل ارتباطی سنسور، اینه که وصلش کنیم به آردوینو. برای آردوینو UNO از پین های آنالوگ A4 و A5(تو همین جلسه میگیم کجاس) استفاده میکنیم ولی بقیه مدل های آردوینو دقیقا پین هایی به اسم های SCL و SDA دارن. در آینده نزدیک با راه اندازی یه سنسور I2C کامل متوجه میشید داستان از چه قراره.

میایم سراغ SPI .برای تشخیص سنسور SPI دنبال دو تا پین تابلو برگردین: MOSI و MISO. روی برد آردوینو پین های دیجیتال 10 و 11 و 12 و 13 مخصوص پروتکل SPI هستن. ما گفتیم دنبال دوتا پین بگردین الان 4 تا پین باید وصل کنیم چی شد؟ MOSI و MISO پین هایی بود که با دیدنشوم مطمئن می شدیم سنسور از نوع SPI هست ولی در حقیقت این روش ارتباطی با 4 تا سیم داده رد و بدل میکنه به خاطر همین ما هم 4 تا پین معرفی کردیم.

5- پین دیجیتال شماره 13. این پین تو آردوینو خاصه چرا که یه led بهش وصله. گهگاهی توی پروژه هایی که داریم انجام میدیم لازمه برای آلارم یا حتی چک کردن یه LED رو روشن خاموش کنیم. مثلا فرض کنید یا سنسور تشخیص حرکت داریم و هدف اینه که به محض تشخیص هر نوع حرکتی یه آلارم به ما بده. میتونیم از این led داخلی استفاده کنیم تا به محض تشخیص جا به جایی این led روشن بشه.

پین AREF در قسمت آنالوگ توضیح داده خواهد شد.

• ورودی آنالوگ (قسمت آبی رنگ):
Untitled
6 پین بالا ورودیهای آنالوگ برد آردوینو است که با نام های A0 تا A5 مشخص شده اند. بعضی سنسورها مثل فوتوسل انالوگ هستن یعنی داده هاشون به صورت پیوسته تغییر میکنه. بدون شک نمیشه داده این سنسورها رو با پایه دیجیتال خوند پس میایم سراغ پایه آنالوگ.  خروجی سنسور وارد یه مبدل آنالوگ به دیجیتال (ADC) ده بیتی میشه و عددی بین 0 تا 1023 به عنوان داده سنسور مورد استفاده قرار می گیره. این در شرایطی هست که سنسور با ولتاژ 5 ولت کار کنه ( یعنی ماکزیم ولتاژ قابل تحمل اون 5 ولت باشه). وقتی ولتاژ قابل تحمل سنسور پایین تر باشه(مثلا 3.3 ولت) لازمه اون ولتاژ به پایه AREF هم داده بشه تا ولتاژ ورودی مرجع آنالوگ به 3.3 ولت تبدیل بشه. با اینکار رزولوشن تبدیل آنالوگ به دیجیتال بالاتر میره.

حالا یه بنده خدایی پیدا شده توی پروژش اصلا سنسور آنالوگ نداره ولی 15 تا سنسور دیجیتال باید راه بندازه. بالاتر گفتیم که کلا 14تا پین دیجیتال داریم که پین 0 و 1 هم عملا قابل استفاده نیست. بنابراین فقط 12 تا پین دیجیتال باقی میمونه در حالی که ما 15 تا سنسور داریم. یا باید بریم سراغ یه آردوینو دیگه که تعداد پایه هاش بیشتر باشه یا از یه تریک جدید استفاده کنیم . تریک جدید اینه که اون 6 تا پایه آنالوگ میتونن به عنوان دیجیتال هم استفاده بشن. یعنی چی؟
یعنی ما میتونیم به پایه A0 بگیم پایه شماره 14 دیجیتال و تا آخر به A5 بگیم پایه دیجیتال 19. با این کار دقیقا 20 تا پایه دیجیتال داریم که با کم کردن پایه 0 و 1 (به خاطر آپلود کردن کد) عملا 18 تا پایه دیجیتال داریم (هورا شدیم).

کلید ریست (قسمت آبی رنگ):

Untitled

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