Build a Basic Arduino-Based Calculator
2017-03-15 | By All About Circuits
License: See Original Project Arduino
Courtesy of All About Circuits
Calculators have come a long way since their invention. Over the past 4000 years, they have gone from the simple abacus, to Bitcoin mining calculators and quantum computers. The most common calculators these days are the programs built into smartphones and computers.
So it’s perfectly reasonable to ask, why would somebody make a calculator for Arduino with less functionality than the one that’s already in their pocket? Aleksandar, the guy who made this one, said he wanted to pay tribute to the calculators of old. Like many DIY projects, you could probably go out and buy a better one for cheaper than the cost of the materials to make it, but where’s the fun in that? So much of being a maker is in the journey, not the destination. This is also a good project for students. Let’s see how this thing works!
How Does it Work?
The calculator starts with a cleared LCD screen and waits for input from the keypad. When the user presses an operation button (plus, minus, multiply, or divide) it memorizes the first number the user entered and the desired operation. It then continues with the acquisition of the second number. When the user finished punching in the second number, the program performs the requested operation and prints the result when the equals button is pressed. At any point in time, you can press the CLEAR button (’C’) to start the sequence over... just like the calculator you probably used in elementary school.
Bill of Materials
- Arduino-based board (an UNO was used for this project)
- LCD 1602A liquid crystal display
- 4 x 4 button keypad (if you're feeling wild, you can make a keypad like Aleksandar did)
- Breadboard
- Potentiometer, 1-10 K ohm
- Resistor, 200-1000 ohm
- Jumper wires
Before Starting
It’s important to have both the Keypad.h and LiquidCrystal.h libraries installed in your Arduino IDE. A few people who attempted this project got all the way through building theirs only to get this error code:
Calculator_Code.ino:2:20: fatal error: Keypad.h: No such file or directory
compilation terminated.
There are two ways to install these libraries. If your Arduino IDE is version 1.6.2 or newer, you can just use Library Manager. If you’re using an earlier version, you will need to copy them into the libraries folder in your Arduino IDE install location. If you’re brand new to Arduino, here's a tutorial on the Arduino website about how to install libraries.
LCD 1602a
The LiquidCrystal.h library supports LCDs based on the Hitachi HD44780 chipset. It’s responsible for displaying text on the LCD and prints floating point numbers to a specified number of decimal places. Take a look at the example below:
double Pi = 3.1415926535;
Lcd.print (Pi,4);
This prints 3.1415 on the LCD. The (Pi,4) represents Pi to the 4th decimal space.
The LCD used for the project
Keypad
The keypad in this project requires the library for Arduino Keypad.h. This library eliminates the need for external pull-up resistors because it enables the on-chip integrated pull-up resistors and handles/sets high impedance on all unused column pins. It basically scans column by column. It also handles button debouncing by using a built-in Arduino millis() function and determines how long the button has been pressed or if there was a transition on a specific key. This allows the code to execute more efficiently and reduce the amount of processing power consumed.
Below is a wiring diagram for the keypad Aleksandar made:
Here’s what you’ll need if you want to make your own:
- 16 buttons
- Small PCB proto-board
- 8 wires (4 for row and 4 for column leads
- Some solder and a soldering iron
A keyboard on a breadboard!
Schematic
Below is a wiring diagram for the calculator. You can also find step by step instructions on All About Circuits.
Software/Code
The last step is the code, which consists of three loops. The first loop scans the keypad to print the buttons you push. With each number pressed, it shifts the previous number up by a tens place (For example: 1 would become 10, then 100). This continues until the user hits clear or an operation key .
The second loop does the same thing as the first one, but it moves to the next loop when you hit “=” instead of an operation key. When the equals key is pressed, the calculator will calculate the total.
The third loop just resets the program when you hit the CLEAR button. You can find a more in depth explanation of the code and a downloadable version on All About Circuits.
The finished project!
You can watch this calculator in action in the video below. If you decide to try making your own Arduino calculator let us know in the comments, bonus points if you add extra functionality!
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum