Hello,
I am trying to make a simple calculator project with my Arduino mega2560.
My circuit works just fine, but when I tried to run my code I get this error:
/private/var/folders/cj/zvgtwh_x0p7dh1djxbqprz9w0000gn/T/.arduinoIDE-unsaved2024211-30882-1e3geuo.kqq3i/sketch_mar11a/sketch_mar11a.ino: In function 'void loop()':
/private/var/folders/cj/zvgtwh_x0p7dh1djxbqprz9w0000gn/T/.arduinoIDE-unsaved2024211-30882-1e3geuo.kqq3i/sketch_mar11a/sketch_mar11a.ino:58:11: error: 'nubmer' was not declared in this scope
nubmer = (number * 10) + 1;
^~~~~~
Compilation error: 'nubmer' was not declared in this scope
(This error shows for every number on the keypad.)
Here is my whole code:
#include "Keypad.h"
#include "LiquidCrystal.h"
//libraries
const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
//lcd display pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
//lcd display setup
const byte ROWS = 4;
const byte COLS = 4;
//dimensions of keypad
char hexaKeys[ROWS][COLS] = {
{ '1', '2', '3', '+' },
{ '4', '5', '6', '-' },
{ '7', '8', '9', '/' },
{ '*', '0', '#', '=' }
};
//adding values to keys
byte rowPins[ROWS] = { 5, 4, 3, 2 };
byte colPins[COLS] = { A1, A2, A3, A4 };
//keypad pins
long number = 0;
long num1;
long num2;
char operation;
//declaring variables
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
//creating a keypad
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
//lcd setup after powering
}
void loop() {
char customKey = customKeypad.getKey();
//making a variable for just pressed key
if (customKey) {
//check if a key was pressed
if (customKey != '=') {
//every other key than equals
if (customKey == '1') {
if (number == 0) {
number = 1;
}
else {
nubmer = (number * 10) + 1;
}
lcd.print(customKey);
}
if (customKey == '2') {
if (number == 0) {
number = 2;
}
else {
nubmer = (number * 10) + 2;
}
lcd.print(customKey);
}
if (customKey == '3') {
if (number == 0) {
number = 3;
}
else {
nubmer = (number * 10) + 3;
}
lcd.print(customKey);
}
if (customKey == '4') {
if (number == 0) {
number = 4;
}
else {
nubmer = (number * 10) + 4;
}
lcd.print(customKey);
}
if (customKey == '5') {
if (number == 0) {
number = 5;
}
else {
nubmer = (number * 10) + 5;
}
lcd.print(customKey);
}
if (customKey == '6') {
if (number == 0) {
number = 6;
}
else {
nubmer = (number * 10) + 6;
}
lcd.print(customKey);
}
if (customKey == '7') {
if (number == 0) {
number = 7;
}
else {
nubmer = (number * 10) + 7;
}
lcd.print(customKey);
}
if (customKey == '8') {
if (number == 0) {
number = 8;
}
else {
nubmer = (number * 10) + 8;
}
lcd.print(customKey);
}
if (customKey == '9') {
if (number == 0) {
number = 9;
}
else {
nubmer = (number * 10) + 9;
}
lcd.print(customKey);
}
if (customKey == '+') {
operation = "plus";
num1 = number;
number = 0;
lcd.print(customKey);
}
if (customKey == '-') {
operation = "minus";
num1 = number;
number = 0;
lcd.print(customKey);
}
if (customKey == '/') {
operation = "divide";
num1 = number;
number = 0;
lcd.print(customKey);
}
if (customKey == '*') {
operation = "multiple";
num1 = number;
number = 0;
lcd.print(customKey);
}
if (customKey == '#') {
number = 0;
lcd.clear();
}
}
else {
//after '=' was pressed:
num2 = number;
if (operation == "plus") {
number = num1 + num2;
}
else if (operation == "minus") {
number = num1 - num2;
}
else if (operation == "divide") {
number = num1 / num2;
}
else if (operation == "minus") {
number = num1 * num2;
}
//final calculation
Serial.println(number);
Serial.println(num1);
Serial.println(num2);
lcd.clear();
lcd.print(number);
}
}
}
I thought that maybe I have to assign a value to "number" in loop function, but it didn't help.
I just don't know why it doesn't show error when I use "number" here:
if (number == 0) {
number = 1;
}
And here does:
else {
nubmer = (number * 10) + 1;
}
I think it is something simple, but I just can't find it.