In dit leuke projectje ga je leren hoe jij je eigen Arduino rekenmachine kan maken.
Je kan deze rekenmachine gebruiken voor simpele calculaties. Deze zijn plus, min, keer of gedeeld door. Dus verwacht niet dat je er vergelijkingen mee kan gaan oplossen.
We doen dit met behulp van een 4X4 keypad en een 16X2 LCD beeldscherm. Het beeldscherm sluiten we aan via I2C dus hou er rekening mee dat je extra library’s nodig hebt. Voor de keypad moet je de keypad library importeren, meer informatie hierover vind je in het piezo piano project. Voor de I2C librarys vind je de informatie in het I2C LCD project.
- Niveau – Gemiddeld 40%
- Tijdsduur – 20/25 Min 25%
- Kosten – €42.80 euro compleet 40%
Stap 1: Benodigdheden
1X Arduino UNO
12X Jumper wires
1X 4X4 keypad
1X 16X2 LCD
Stap 2: Bouwen en Bedraden
Stap 3: Programmeren
Nu je gaat programmeren moet je er rekening mee houden dat je de Wire, Keypad en LiquidCrystal_I2C librarys nodig hebt.
Tijdens het programmeren definiëren we de * en de # als andere symbolen. De * is namelijk de clear functie dus C en de # is het is teken en wordt dan dus gedefinieerd als =.
Zodra alle code erop staat en je kijkt op je Arduino laat het beeldscherm eerst “elektronica voor jou rekenmachine” zien. Daarna wordt het scherm blank en kan je beginnen met calculaties maken.
Voor het geval dat je al op het C teken drukt voordat je een som uitgerekend hebt en je wilt weer verder rekenen zul je vast merken dat het niet lukt. Het is belangrijk dat je eerst op het = teken drukt als je dit niet doet werkt hij namelijk niet.
//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 = ‘ ‘;
}
}