رباتیک و هوافضا

ماشین حساب آردوینو با استفاده از صفحه کلید ۴×۴ بسازید

ماشین حساب آردوینو با استفاده از صفحه کلید 4x4

به نام خدا

ماشین حساب آردوینو با استفاده از صفحه کلید ۴×۴ بسازید

 

ماشین حساب آردوینو با استفاده از صفحه کلید 4x4 بسازید

 

در این آموزش ما ماشین حساب خود را با آردوینو ساخته ایم، اعداد را میتوان از طریق یک صفحه کلید (صفحه کلید ۴×۴) ارسال کرد و حاصل آن را روی یک صفحه نمایش LCD 2*16 مشاهده کرد .این ماشین حساب می تواند عملیات ساده ای مانند جمع ،تفریق، ضرب و تقسیم را با اعداد صحیح انجام داد.

قطعات مورد نیاز:

۱-آردوینو UNO
۲-LCD 16×2
۳- صفحه کلید ۴×۴
۴- باتری ۹V
۵-برد بورد

۶-سیم بردبورد

 

مدار پروژه :

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

 

پین آردوینو: متصل به:
D0 اولین پین از کیبورد
D1 دومین پین از کیبورد
D2 سومین پین از کیبورد
D3 چهارمین پین از کیبورد
D4 پنجمین پین از کیبورد
D5 ششمین پین از کیبورد
D6 هفتمین پین از کیبورد
D7 هشتمین پین از کیبورد
D8  پین RS از پین های LCD  (پین ۴)
D9  پین E از پین های LCD
D10 پین D4 از LCD
D11 پین D5  از LCD
D12 پین D6 از LCD
D13 پین D7 از LCD
+۵V وصل شود به پین vdd از LCD
زمین وصل شود به پین های  VSS ،VEE و RW  از LCD   (پین های ۱،۳و۵)

 

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

بیشتر بخوانید...  چگونگی عملکرد ای سی های تطبیق پذیر LM317/338/396 بعنوان تنظیم کننده ولتاژ

 

ماشین حساب آردوینو با استفاده از صفحه کلید 4x4 بسازید

 

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

ما میتوانیم با استفاده از نرم افزار poroteus پروژه ی خود را شبیه سازی کنیم وآن را مورد بررسی قرار دهیم .

در صورتی که نرم افزار porteus شما برد آردوینو را ندارد، میتوان به راحتی کتابخانه ی مربوط به آن را دانلود کرده و به کتابخانه های proteus خود اضافه کرد.

هنگامی که برد آردوینو را در proteus  دارید کافی است keypad و alphanomic LCD  را اضافه کنید و اتصالات لازم را انجام دهید.

 

ماشین حساب آردوینو با استفاده از صفحه کلید 4x4 بسازید

 

نحوه کار با ماشین حساب آردوینو :

 

ماشین حساب آردوینو با استفاده از صفحه کلید 4x4 بسازید

 

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

 

کارکتر های کیبورد کارکتر فرض شده
“A” جمع (+)
“B” تفریق (-)
“C” ضرب (*)
“D” تقسیم (/)
“*” پاک کردن (C)
“#” مساوی (=)

 

 

دانلود کد برنامه :

 

دانلود فایل

 

/*
 * Arduino Keypad calculator Program
 */
#include <LiquidCrystal.h> // 
#include <Keypad.h> // 
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'۷','۸','۹','D'},
  {'۴','۵','۶','C'},
  {'۱','۲','۳','B'},
  {'*','۰','#','A'}
};
byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //  Create the Keypad
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 long Num1,Num2,Number;
 char key,action;
 boolean result = false;
 
void setup() {
  lcd.begin(16, 2); //We are using a 16*2 LCD display
  lcd.print("DIY Calculator"); //Display a intro message
  lcd.setCursor(0, 1);   // set the cursor to column 0, line 1
  lcd.print("-CircuitDigest"); //Display a intro message 
   delay(2000); //Wait for display to show info
    lcd.clear(); //Then clean it
}
void loop() {
  
key = kpd.getKey(); //storing pressed key value in a char
if (key!=NO_KEY)
DetectButtons();
if (result==true)
CalculateResult();
DisplayResult();   
}
void DetectButtons()
{ 
     lcd.clear(); //Then clean it
    if (key=='*') //If cancel Button is pressed
    {Serial.println ("Button Cancel"); Number=Num1=Num2=0; result=false;}
    
     if (key == '1') //If Button 1 is pressed
    {Serial.println ("Button 1"); 
    if (Number==0)
    Number=1;
    else
    Number = (Number*10) + 1; //Pressed twice
    }
    
     if (key == '4') //If Button 4 is pressed
    {Serial.println ("Button 4"); 
    if (Number==0)
    Number=4;
    else
    Number = (Number*10) + 4; //Pressed twice
    }
    
     if (key == '7') //If Button 7 is pressed
    {Serial.println ("Button 7");
    if (Number==0)
    Number=7;
    else
    Number = (Number*10) + 7; //Pressed twice
    } 
  
    if (key == '0')
    {Serial.println ("Button 0"); //Button 0 is Pressed
    if (Number==0)
    Number=0;
    else
    Number = (Number*10) + 0; //Pressed twice
    }
    
     if (key == '2') //Button 2 is Pressed
    {Serial.println ("Button 2"); 
     if (Number==0)
    Number=2;
    else
    Number = (Number*10) + 2; //Pressed twice
    }
    
     if (key == '5')
    {Serial.println ("Button 5"); 
     if (Number==0)
    Number=5;
    else
    Number = (Number*10) + 5; //Pressed twice
    }
    
     if (key == '8')
    {Serial.println ("Button 8"); 
     if (Number==0)
    Number=8;
    else
    Number = (Number*10) + 8; //Pressed twice
    }   
  
    if (key == '#')
    {Serial.println ("Button Equal"); 
    Num2=Number;
    result = true;
    }
    
     if (key == '3')
    {Serial.println ("Button 3"); 
     if (Number==0)
    Number=3;
    else
    Number = (Number*10) + 3; //Pressed twice
    }
    
     if (key == '6')
    {Serial.println ("Button 6"); 
    if (Number==0)
    Number=6;
    else
    Number = (Number*10) + 6; //Pressed twice
    }
    
     if (key == '9')
    {Serial.println ("Button 9");
    if (Number==0)
    Number=9;
    else
    Number = (Number*10) + 9; //Pressed twice
    }  
      if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Detecting Buttons on Column 4
  {
    Num1 = Number;    
    Number =0;
    if (key == 'A')
    {Serial.println ("Addition"); action = '+';}
     if (key == 'B')
    {Serial.println ("Subtraction"); action = '-'; }
     if (key == 'C')
    {Serial.println ("Multiplication"); action = '*';}
     if (key == 'D')
    {Serial.println ("Devesion"); action = '/';}  
    delay(100);
  }
  
}
void CalculateResult()
{
  if (action=='+')
    Number = Num1+Num2;
  if (action=='-')
    Number = Num1-Num2;
  if (action=='*')
    Number = Num1*Num2;
  if (action=='/')
    Number = Num1/Num2; 
}
void DisplayResult()
{
  lcd.setCursor(0, 0);   // set the cursor to column 0, line 1
  lcd.print(Num1); lcd.print(action); lcd.print(Num2); 
  
  if (result==true)
  {lcd.print(" ="); lcd.print(Number);} //Display the result
  
  lcd.setCursor(0, 1);   // set the cursor to column 0, line 1
  lcd.print(Number); //Display the result
}

 

بیشتر بخوانید...  آموزش راه اندازی صفحه نمایش ST7735 TFT با آردوینو به همراه کد برنامه

دیدگاه‌ها (0)

*
*