In diesem unterhaltsamen Projekt lernen Sie, wie Sie Ihren eigenen Arduino- Taschenrechner bauen.
Mit diesem Rechner können Sie einfache Berechnungen durchführen. Diese sind Plus, Minus, mal oder geteilt durch. Erwarten Sie also nicht, dass Sie damit Gleichungen lösen können.
Wir tun dies mithilfe einer 4x4-Tastatur und eines 16x2-LCD-Displays. Wir schließen das Display über I2C an, bedenken Sie also, dass Sie zusätzliche Bibliotheken benötigen. Für das Keypad müssen Sie die Keypad-Bibliothek importieren, weitere Informationen hierzu finden Sie im Piezo-Piano -Projekt. Informationen zu den I2C-Bibliotheken finden Sie im I2C-LCD- Projekt.
Bau und Verkabelung
Programmierung
//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 = ‘ ‘;
}
}