در این مقاله میخواهیم اعداد را بر روی یک LCD نمایش داده و با استفاده از دو میکروسوییچ اعداد را کم و زیاد کنیم. برای این منظور به قطعات زیر نیاز داریم:
۱- برد آردوینو
۲- پتاسیومتر
۳- دو عدد دیپ سوئیچ
۴- LCD
۵- دو عدد مقاومت
۶- برد بورد به همراه سیم برد
نحوه اتصالات در نرم افزار fritzing را در شکل زیر مشاهده میکنید:
نحوه اتصالات برای نوشتن اعداد بر روی LCD با برد آردوینو و دیپ سویچ
۱- برای اتصال یک LCD به آردوینو به ۶ تا پین دیجیتال نیاز میباشد که باید آنها به صورت خروجی تعریف شوند. در جدول زیر شماره پایههای متصل را میتوانید مشاهده نمایید:
۲- برای تنظیم نور صفحه LCD باید یک پتانسیومتر به LCD وصل کنیم. این پتانسیومتر سه پایه دارد. پایه اول یا سوم (از هر طرفی که بخوانید) را به VCC و زمین متصل میکنیم. پایه دوم که مهمترین پایه میباشد را به پایه شماره سه LCD متصل کنید. نقشه نصب شماتیک LCD به صورت شکل زیر است:
نقشه نصب شماتیک LCD و دیپ سویچ
در ایتدا بخش کتابخانه مربوط به کنترل LCD را فراخوانی کرده و تابعی که LCD را کنترل میکند فراخوانی میکنیم. پایههای ۲ و ۷ را به LCD اختصاص میدهیم و سایر متغیرها را تعریف میکنیم. بطوریکه متغییر inc را برای دیپ سوئیچ افزاینده و متغییر dec را به دیپ سوئیچ کاهنده مربوط میسازیم. متغییرهای بعدی که با اندیس 1 هستند مربوط به افزاینده و اندیس 2 مربوط به کاهنده است و count هم متغیر اولیه میباشد که مقدارش صفر است.
/* Robot Makers Designed By : Mohammad Taghvaei Objective : To an Up Down Counter on LCD screen microswich*/ #include <LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7); int inc = 8; int dec = 9; int initialstate1; int finalstate1; int initialstate2; int finalstate2; int count = 0;
در این بخش از کد که تنها یکبار تکرار میشود (void setup) برای LCD شانزده ستون و دو ردیف تعریف میکنیم. سپس محل نمایش اعداد بر روی LCD را مشخص خواهیم کرد lcd.setCursor(0,0)). به علاوه میخواهیم عبارت داخل ” ” هم بروی LCD نمایش داده شود و سپس در سطر ۲ و ستون ۱ متغیر count نمایش داده میشود.
void setup() { lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("counter : "); lcd.setCursor(0,1); lcd.print(count); }
کد دییپ سویچ افزاینده
void loop() { // Increment Part finalstate1 = digitalRead(inc); if(finalstate1 != initialstate1) { delay(10); finalstate1 = digitalRead(inc); { if(finalstate1 == HIGH) { count++; lcd.clear(); lcd.setCursor(0,0); lcd.print("counter : "); lcd.setCursor(0,1); lcd.print(count); } } initialstate1 = finalstate1; }
کد دیپ سویچ کاهنده
// Decrement part finalstate2 = digitalRead(dec); if(finalstate2 != initialstate2) { delay(10); finalstate2 = digitalRead(dec); { if(finalstate2 == HIGH) { count--; lcd.clear(); lcd.setCursor(0,0); lcd.print("counter : "); lcd.setCursor(0,1); lcd.print(count); } } initialstate2 = finalstate2; } }
تهیه کننده: مهندس تقوایی – مهندس پاینده
3 Comments
با سلام
ببخشید intinalState و finalState کارشون چیه؟
سلام.
توی فیلم پایین مقاله توضیح داده شده. لطفا فیلم رو مشاهده کنید.
بسیار عالی