Calculator project: compilation error, variable not declared

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.

Typing error.

Oh my lord, I am so sorry to bother you with this. Thank you very much. (:

I won't say how many times it is only at the point of writing something up to get some fresh eyes on it that I see errors like this.

a7

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.