Simulasi Kalkulator sederhana menggunakan LCD 12C dan Keypad berbasis Arduino pada Software Proteus 8

 Skematik Rangkaian

Komponen yang digunakan

-        Arduino UNO

-        LM016L (LCD 16x2)

-        PCF8574 (Modul I2C)

-        Keypad Smalcalc (Keypad)

Sketch Arduino

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 2);

#include <Keypad.h>

const byte ROWS = 4;

const byte COLS = 4;

char keys [ROWS] [COLS] = {

{'7', '8', '9', '/'},

{'4', '5', '6', '*'},

{'1', '2', '3', '-'},

{'C', '0', '=', '+'}

};

byte rowPins[ROWS] = {2, 3, 4, 5};

byte colPins[COLS] = {6, 7, 8, 9};

Keypad myKeypad = Keypad(

makeKeymap(keys), rowPins, colPins,

ROWS, COLS );

float presentValue = false;

float next = false;float final = false;

String num1, num2; String answer = "0";

char op;

void setup(){

  lcd.init();

  lcd.backlight();

  lcd.setCursor(5,0);

  lcd.print("UNIT 5");

  lcd.setCursor(3,1);

  lcd.print("Calculator");

  delay(1000);

  lcd.clear();

}

void loop() {

  char key = myKeypad.getKey();

  if (key != NO_KEY && (key == '1' || key =='2' || key == '3' || key == '4' || key == '5'|| key == '6' || key == '7' || key == '8' ||key== '9' || key == '0')){

    if (presentValue != true){

      num1 = num1 + key;

      int numLength = num1.length();

      lcd.setCursor(0, 0);

      lcd.print(num1);

    }

    else{

      num2 = num2 + key;

      int numLength = num2.length();

      int numLength1 = num1.length();

      lcd.setCursor(1 + numLength1, 0);

      lcd.print(num2);

      final = true;

    }

  }

  else if (presentValue == false && key !=

  NO_KEY && (key == '/' || key == '*' || key

  == '-' || key == '+')){

    if (presentValue == false){

      int numLength = num1.length();

      presentValue = true;op = key;

      lcd.setCursor(0 + numLength, 0);

      lcd.print(op);

    }

  }

  else if (final == true && key != NO_KEY && key == '=') {

    switch (op){

      case '+':

        answer = num1.toFloat() + num2.toFloat();

        break;

      case'-' :

        answer = num1.toFloat() - num2.toFloat();

        break;

      case'*' :

      answer = num1.toFloat() * num2.toFloat();

      break;

      case'/':

      answer = num1.toFloat() / num2.toFloat();

      break;

    }

    lcd.clear();

    lcd.setCursor(16, 1);lcd.autoscroll();

    lcd.print(answer); lcd.noAutoscroll();

  }

  else if (key != NO_KEY && key == 'C'){

    lcd.clear();

    presentValue = false;final = false;

    num1 = "";

    num2 = ""; answer = "0";op = ' ';

  }

}

Simulasi Video




Komentar

Postingan Populer