#بسم_رب_ایستادگی
خواندن مقدار دیجیتال توسط آردوینو
جلسه سوم:خواندن مقدار دیجیتال
در این مبحث از آردوینو ما می خواهیم یک کلید را به آردوینو متصل کنیم و وضعیت آن را به این صورت که آیا کلید فشرده شده است یا خیر، با استفاده از اعداد صفر یا یک، از طریق ارتباط سریال با کامپیوتر به واسطه درگاه USB در محیط ترمینال نرم افزار Arduino (IDE) چاپ می کنیم.
قطعات مورد نیاز برای ساخت پروزه
:: برد آردوینو UNO
:: یک عدد مقاومت با مقدار 1 کیلو اهم
:: یک عدد کلید یا میکروسوئیچ
:: سیم جامپر برد بوردی
:: برد بورد
نقشه شماتیک پروژه
سخت افزار پروژه
مطابق دو تصویر بالا و نقشه شماتیک ابتدا باید یک کلید را به آردوینو متصل کنید. برای این منظور کافی است ابتدا یک پایه کلید را توسط یک تکه سیم به مثبت منبع تغذیه با همان پایه VCC در آردوینو متصل کنید. سپس پایه دوم کلید را با یک تکه سیم به پین دیجیتال شماره 2 آردوینو متصل کنید. پس از اتصال کلید به آردوینو نوبت اتصال مقاومت 1 کیلو اهم می رسد برای این منظور کافی است یک پایه مقاومت را به ولتاژ منفی منبع تغذیه یا پین GND در آردوینو متصل کنید و بعد از آن پایه بعدی مقاومت را به وسیله یک تکه سیم به پین دیجیتال شماره 2 آردوینو متصل کنید.
شرح عملکرد پروژه
با توجه کردن به نقشه شماتیک متوجه خواهید شد پین دیجیتال شماره 2 آردوینو به صورت همزمان هم به یکسر مقاومت 1 کیلو اهمی و هم به یکسر کلید متصل شده است. زمانیکه کلید فشرده نشده و به طور ساده تر می توان گفت زمانی که کلید باز است، پایه دیجیتال شماره 2 آردوینو توسط مقاومت 1 کیلو اهمی به منفی منبع تغذیه متصل شده و یک ولتاژ منفی بسیار کوچک بر روی آن ایجاد می کند (در دیجیتال منظور از ولتاژ منفی یا منفی منبع تغذیه منطق 0 است). و بلعکس زمانیکه کلید فشرده شده باشد با به طور ساده تر کلید بسته باشد. پایه دیجیتال شماره 2 آردوینو توسط کلید به صورت مستقیم به مثبت منبع تغذیه متصل می شود و یک ولتاژ مثبت نزدیک به 5 ولت بر روی آن ایجاد می کند (در دیجیتال منظور از ولتاژ مثبت منطق 1 است).
در این مثال در حقیقت ما در مبحث دیجیتال با استفاده از کلید، حالت 1 را ایجاد می کنیم و با استفاده از مقاومت 1 کیلو اهمی حالت 0 را ایجاد می کنیم. چون در مدار این پروژه یکسر مقاومت به منفی منبع تغذیه متصل شده، آنرا مقاومت پائین کشنده می نامیم، این به این معنا است که تا زمانیکه کلید فشرده نشده است مقاومت 1 کیلو اهمی باعث 0 یا LOW نگه داشتن پایه دیجیتال شماره 2 آردوینو می شود.
برای برقراری ارتباط سریال در آردوینو
تنها کاری که برای برقراری ارتباط سریال دربرنامه نویسی آردوینو لازم است انجام دهید، استفاده از دستور زیر است. توسط دستور زیر می توانید ارتباط سریال را پیکر بندی کنید. برای ارتباط سریال نیاز است تا یک باود ریت (پهنای باند) برای پردازشگر آردوینو تعریف نمائید. لازم به ذکر است این مقدار باید در هر دو دستگاه که در اینجا برد آردوینو و کامپیوتر است باید یکسان باشد.
Serial.begin(9600); |
تعریف یک پایه در آردوینو به عنوان ورودی
در ادامه برنامه به دلیل اینکه در این مثال ما کلید را به پایه دیجیتال شماره 2 آردوینو متصل کرده ایم به همین لازم است توسط دستور زیر این پین از آردوینو را به عنوان ورودی تعریف کنیم.
pinMode(2,INPUT); |
خواندن وضعیت پایه های آردوینو
بعد از اینکه پیکر بندی اولیه برنامه انجام شد، وارد حلقه اصلی برنامه می شویم و توسط دستور digitalRead() مقدار دیجیتال پایه مورد نظر آردوینو را فراخوانی می کنیم. برای استفاده از دستور مذکور کافی است درون پرانتز عدد پایه دیجیتال مورد نظر را وارد نمائیم که در اینجا پایه دیجیتال شماره 2 آردوینو مد نظر ماست. همانطور که می دانید منطق دیجیتال شامل دو عدد صفر و یک است در نتیجه خروجی دستور مذکور نیز می تواند عدد یک یا صفر باشد.
بعد از خواندن مقدار دیجیتال که در این مثال همان وضعیت کلید است، لازم است آنرا ذخیره کنیم. برای ذخیر وضعیت کیلد لازم است در حلقه اصلی برنامه یک متغیر تعریف کنیم و مقدار دیجیتال خوانده شده را به صورت مستقیم در آن بریزیم. از آنجا که خروجی دیجیتال می تواند عدد یک یا صفر باشد، تعریف یک متغیر از نوع Int کفایت می کند. به همین دلیل طبق دستور زیر ابتدا یک متغیر به نام sensorValue از جنس Int تعریف می کنیم و مقدار دیجیتال خوانده شده را درون متغیر می ریزیم.
int sensorValue = digitalRead(2); |
چاپ مقدار متغیر در محیط سریال
کار تمام است، تا به اینجا کار ما ارتباط سریال را پیکربندی کردیم. پایه دیجیتال شماره 2 آردوینو را به عنوان ورودی تعریف کردیم و در ادامه مقدار دیجیتال خوانده شده از پین دیجیتال شماره 2 آردوینو را در یک متغیر به نام sensorValue از جنس Int ریختیم. حالا فقط یک قدم به پایان کار مانده است و آن هم چاپ مقدار متغیر sensorValue در محیط سریال است. که این کار به راحتی توسط دستور Serial.println() قابل انجام است. برای اینکه این دستور کامل شود تنها لازم است در داخل پرانتز نام متغیری که می خواهیم چاپ کنیم را همانند دستور زیر درج نمائیم.
Serial.println(sensorValue);
یا همان digitalRead() را پرینت کنیم
Serial.println(digitalRead(2)); |
ایجاد تاخیر در برنامه آردوینو
در انتهای برنامه برای اینکه تاخیر کوچکی در بین چاپ مقادیر ایجاد کنیم از دستور delay(); استفاده می کنیم. برای استفاده از این دستور کافی است مدت زمانی که می خواهیم تاخیر ایجاد شود را در واحد میلی ثانیه در داخل پرانتز وارد نمائید.
delay(1); |
سورس کد برنامه در نرم افزار آردوینو
int pushButton = 2; void setup() { Serial.begin(9600); pinMode(pushButton, INPUT); } void loop() { int buttonState = digitalRead(pushButton); Serial.println(buttonState); delay(1); } |