In this fun project you will learn how to make your own Arduino calculator.
You can use this calculator for simple calculations. These are plus, minus, times or divided by. So don't expect to be able to solve equations with it.
Nu ga je de Arduino rekenmachine bedraden. We beginnen met het beeldscherm. Bij het beeldscherm sluiten we eerst de GND van het beeldscherm op de GND van de Arduino aan, de VCC op de 5V van de Arduino, tot slot de SDA op A4 en SCL op A5. De keypad sluit je op precies dezelfde manier aan als op de fritzing te zien is. Dat houdt in dat als de knoppen naar u toewijzen dat de meest linker pin naar I/O pin 4 moet, de pin rechts daarvan gaat naar I/O pin 5, vervolgens de pin die rechts van deze pin zit naar I/O pin 6 en de pin rechts hiervan naar I/O pin 7. Herhaal dit voor de overige vier pinnen alleen dan op I/O pinnen o t/m 3. Dit houdt in weer van links naar rechts. Het is belangrijk om te weten dat als de keypad niet op de juiste manier werkt er hoogst waarschijnlijk een jumper wire verkeerd is aangesloten. Zodra dat is gelukt heb je alles voor je rekenmachine aangesloten.
Programming
//de librarys die we nodig hebben
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C>
//keypad definities
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] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};
Keypad ourKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
//lcd initializeren
LiquidCrystal_I2C lcd(0x3F,20,4);
//hier zeggen wat deze waardes zijn
boolean eersteNumState = true;
String eersteNum = “”;
String tweedeNum = “”;
float antw = 0.0;
char oper = ‘ ‘;
void setup(){
//hier zetten we het beeldscherm aan
lcd.begin(16,2);
lcd.init();
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“Elektronica”);
lcd.setCursor(0,1);
lcd.print(“Voor Jou”);
delay(1500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“rekenmachine”);
delay(1500);
lcd.clear();
}
void loop(){
char newKey = ourKeypad.getKey();
//wat hij moet doen als hij een nummer binnen krijgt
if(newKey != NO_KEY && (newKey == ‘1’ || newKey == ‘2’ || newKey == ‘3’ || newKey == ‘4’ || newKey == ‘5’ || newKey == ‘6’ || newKey == ‘7’ || newKey == ‘8’ || newKey == ‘9’ || newKey ==’0′)){
if(eersteNumState == true){
eersteNum = eersteNum + newKey;
lcd.print(newKey);
}else{
tweedeNum = tweedeNum + newKey;
lcd.print(newKey);
}
}
//wat hij moet doen als hij een operator binnen krijgt
if(newKey != NO_KEY && (newKey == ‘+’ || newKey == ‘-‘ || newKey == ‘*’ || newKey == ‘/’)){
if(eersteNumState == true){
oper = newKey;
eersteNumState = false;
lcd.print(oper);
}
}
//hier zeggen we wat er gebeurt als je
//op # drukt
if(newKey != NO_KEY && newKey == ‘=’){
//wat hij moet doen als je operator
//+ is
if(oper == ‘+’){
antw = eersteNum.toFloat() + tweedeNum.toFloat();
}
//wat hij moet doen als je operator
//- is
if(oper == ‘-‘){
antw = eersteNum.toFloat() – tweedeNum.toFloat();
}
//wat hij moet doen als je operator
//* is
if(oper == ‘*’){
antw = eersteNum.toFloat() * tweedeNum.toFloat();
}
//wat hij moet doen als je operator
//gedeeld door is
if(oper == ‘/’){
antw = eersteNum.toFloat() / tweedeNum.toFloat();
}
lcd.setCursor(0,0);
lcd.print(eersteNum);
lcd.print(oper);
lcd.print(tweedeNum);
lcd.setCursor(0,1);
lcd.print(“=”);
lcd.print(antw);
eersteNumState = true;
}
if(newKey != NO_KEY && newKey == ‘C’){
//hier zeggen we wat er gebeurt als je
//op * drukt
lcd.clear();
lcd.setCursor(0,0);
eersteNum = “”;
tweedeNum = “”;
antw = 0;
oper = ‘ ‘;
}
}