compiler-explorer / compiler-explorer/compiler-explorer

[LIB REQUEST] Arduino libraries LiquidCrystal and Keypad

Open
#3,529 1 comment 1 reaction 0 assignees View on GitHub
new-libs request
Dominant language
TypeScript
Stars
19.1k
Forks
2.1k
Avg merge
3d 15h
Merged PRs (30d)
67

Description

#include

#include

LiquidCrystal lcd(0, 1, 2, 3, 4, 5);

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] = {13,12,11,10};

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

Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

boolean presentValue = false;

boolean next = false;

boolean final = false;

String num1, num2;

int answer;

char op;

void setup()

{

lcd.begin(16,2);

lcd.setCursor(0,0);

lcd.print(" Tech soldiers");

lcd.setCursor(0,1);

lcd.print(" Calculator");

delay(3000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" by ");

lcd.setCursor(0,1);

lcd.print(" Tech soldiers" );

delay(3000);

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(15 - numLength, 0); //to adjust one whitespace for operator

lcd.print(num1);

}

else

{

num2 = num2 + key;

int numLength = num2.length();

lcd.setCursor(15 - numLength, 1);

lcd.print(num2);

final = true;

}

}

else if (presentValue == false && key != NO_KEY && (key == '/' || key == '*' || key == '-' || key == '+'))

{

if (presentValue == false)

{

presentValue = true;

op = key;

lcd.setCursor(15,0);

lcd.print(op);

}

}

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

if (op == '+'){

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

}

else if (op == '-'){

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

}

else if (op == '*'){

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

}

else if (op == '/'){

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

}

lcd.clear();

lcd.setCursor(15,0);

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 = ' ';

}

}

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.