كيفية عمل ألة حاسبة بسيطة باستخدام الاردوينو للعمليات الحسابية 8

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

كيفية عمل ألة حاسبة بسيطة باستخدام الاردوينو للعمليات الحسابية

مقدمــــــــــة عن مشروع الألة الحاسبة

تحية طيبة للجميع !!!!!

البرمجة ممتعة دائمًا وأردوينو منصة رائعة إذا كنت بدأت للتو في  برمجة الاردوينو فسوف تستمتع بلا شك  . في هذا المشروع اليوم سوف نبني آلة حاسبة خاصة بنا مع Arduino . يمكن إرسال القيم من خلال لوحة مفاتيح (4 × 4 لوحة مفاتيح) ويمكن عرض النتيجة على شاشة (LCD (16 × 2  . هذه الآلة الحاسبة ” مشروع ألة حاسبة “يمكن أن تؤدي عمليات بسيطة مثل الجمع والطرح والضرب والقسمة مع الأعداد الصحيحة. ولكن بمجرد فهمك للمفهوم ، يمكنك تنفيذ حتى الوظائف العلمية التي تعتقد أنها معقدة  من خلال وظائف الاردوينو المدمجة .

أذن ماذا ننتظر هيااااا نبدأ !…….

طريقة العمل والتوصيل لمشروع ألة حاسبة

4P6KZMAOFeZL0RSI3i6mUq85gUlIU3JTHxdnyPzm

قم بإجراء التوصيلات حسب مخطط الدائرة أعلاه لمشروع ألة حاسبة .

عمل اردوينو كـ ألة حاسبة باستخدام لوحة المفاتيح 4X4 في العمل هنالك مشكلة بسيطة والان سنعرف حلها وهي “نظرًا لأن لوحة المفاتيح المستخدمة هنا لا تحتوي على علامات مناسبة عليها مثل علامات الجمع “+” والطرح “-” وباقي العلامات الرياضية  ، فقد افترضت أن الحروف الهجائية الموجودة على لوحة المفاتيح  هي عوامل التشغيل كما هو موضح أدناه :

Character on Keypad

Assumed to be

“A”

Addition (+)

“B”

Subtraction (-)

“*”

Multiplication (*)

“D”

Division (/)

“C”

Clear (C)

“#”

Equals (=)

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكــــــــــود البرمجي لمشروع ألة حاسبة

#include<Keypad.h>
#include<LiquidCrystal_I2C.h>
#include<Wire.h>

const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
  {'1', '2', '3', '+'},
  {'4', '5', '6', '-'},
  {'7', '8', '9', 'C'},
  {'*', '0', '=', '/'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

// Created instances
Keypad myKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);

boolean firstNumState = true;
String firstNum = "";
String secondNum = "";
float result = 0.0;
char operatr = ' ';

void setup() {
  lcd.init();                    
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Arduino Calculator");
  lcd.setCursor(0, 1);
  lcd.print("by ielectrony");
  delay(1000);
  scrollDisplay();
  clr();
}

void loop() {
  char newKey = myKeypad.getKey();
  if (newKey != NO_KEY && (newKey == '1' || newKey == '2' || newKey == '3' || newKey == '4' || newKey == '5' || newKey == '6' || newKey == '7' || newKey == '8' || newKey == '9' || newKey == '0')) {

    if (firstNumState == true) {
      firstNum = firstNum + newKey;

      lcd.print(newKey);
    }
    else {
      secondNum = secondNum + newKey;

      lcd.print(newKey);
    }
  }
  if (newKey != NO_KEY && (newKey == '+' || newKey == '-' || newKey == '*' || newKey == '/')) {
    if (firstNumState == true) {
      operatr = newKey;
      firstNumState = false;
      lcd.setCursor(15, 0);
      lcd.print(operatr);
      lcd.setCursor(5, 1);
    }
  }

  if (newKey != NO_KEY && newKey == '=') {
    if (operatr == '+') {
      result = firstNum.toFloat() + secondNum.toFloat();
    }

    if (operatr == '-') {
      result = firstNum.toFloat() - secondNum.toFloat();
    }

    if (operatr == '*') {
      result = firstNum.toFloat() * secondNum.toFloat();
    }

    if (operatr == '/') {
      result = firstNum.toFloat() / secondNum.toFloat();
    }
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(firstNum);
    lcd.print(operatr);
    lcd.print(secondNum);
    lcd.setCursor(0, 1);
    lcd.print("=");
    lcd.print(result);
    firstNumState = true;
  }

  if (newKey != NO_KEY && newKey == 'C') {
    clr();
  }
}

void scrollDisplay() {
  // scroll 13 positions (string length) to the left
  // to move it offscreen left:
  for (int positionCounter = 0; positionCounter < 3; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(300);
  }
  delay(1000);

  // scroll 29 positions (string length + display length) to the right
  // to move it offscreen right:
  for (int positionCounter = 0; positionCounter < 3; positionCounter++) {
    // scroll one position right:
    lcd.scrollDisplayRight();
    // wait a bit:
    delay(300);
  }
  delay(2000);
}

void clr() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("1st: ");
  lcd.setCursor(12, 0);
  lcd.print("op ");
  lcd.setCursor(0, 1);
  lcd.print("2nd: ");
  lcd.setCursor(5, 0);
  firstNum = "";
  secondNum = "";
  result = 0;
  operatr = ' ';
}

للأستفسار عن أي أمر يمكنك ترك تعليقك بالاسفل وسنرد عليك بأذن الله 

تحياتي لكم بالتوفيق وتجربة ممتعة نتمناها لكم ^_^

8 Comments

  1. اخي الكريم ليه لما بضيف المكتبة
    #include
    بيظهر لي خطأ

    احمد تاج الدين محمد
    1. أهلا بك أحمد ،،
      فضلا تأكد من تثبيت المكتبات بشكل صحيح ، وحاول مرة اخرى.

      ielectrony Support Team
  2. السلام عليكم
    كل التقدير والحترام على المجهود الرائع والمميز حقا ان هذه القناه كنز مرجعي اتمنى الستمرار والتقدم
    هل من الممكن بنفيذ مشاريع خاصه
    هل يوجد دوره احترافيه في الاردوينو مع مرجع ثابت
    مهتم جدا في تعلم اساسيات برمجه الاردوينو
    اني اعمل في المجال الانشائي الصناعي والاحظ بان المتحكمات شئ لابد من تعلمه
    الاهم اذا امكن تنفيذ مشاريع ساكون سعيدا
    اتمنى الرد
    مع كامل الحترام والتقدير

    ابراهيم ابو الرؤب
    1. مرحبا أستاذ ابو الرؤب ،،،
      نعتذر جدا عن تأخرنا بالرد وذلك بسبب عدم تفرغ فريق العمل للرد على التعليقات الفترة الاخيرة بسبب الضغط، كما نود ان نشكرك على تعليقك ونأمل منك التواصل معنا مباشرة لمزيد من المعلومات والتفاصيل عبر الايميل
      info@ielectrony.com

      مع خالص الشكر والتقدير،،،

      ielectrony Support Team
  3. السلام عليكم
    وين اقدر اجصل الlibraries المستخدمة بالكود؟

    1. وعليك السلام ورحمة الله وبركاته
      المكتبات التي بالكود هي تأتي ضمن حزمة الاردوينو
      ولكن في حالة عدم وجودك لها يمكنك تحميلها من داخل برنامج الاردوينو نفسه
      وفي حالة لم تعرف ذلك الرجاء التواصل معنا علي الموقع من خلال الرابط أدناه في قسم طلبات المشاريع من الرابط أدناه
      https://ielectrony.com/تفاصيل-المشروع/
      مع تحياتنا بالتوفيق

      Mohammed Abdalkreem M. Haroon
  4. السلام عليكم .. انا جربت اطبق هالمشروع وللأسف ما ظبط.

    1. تحية طيبة يا عزيزتي
      الرجاء التأكد من مطابقة المكتبات البرمجية والتأكد من صحة التوصيل الصحيح الدائرة الكهربائية
      واذا كنت المشكلة لا تزال موجودة الرجاء مراسلة الموقع في قسم طلبات المشاريع من الرابط أدناه
      https://ielectrony.com/تفاصيل-المشروع/
      مع تحياتنا بالتوفيق

      Mohammed Abdalkreem M. Haroon

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *