Are you such a dreamer
To put the world to rights?
I'll stay home forever
Where two and two always makes a five
I'll lay down the tracks
Sandbag and hide
January has April showers
And two and two always makes a five
...
Sebuah potongan lirik lagu dari Radiohead yang berjudul 2+2=5
menyatakan two and two always makes a five.
Mungkin Thom Yorke menciptakan lagu ini memang bukan buat menghitung,
karena yang buat menghitung
adalah
KALKULATOR
______________________________________________
HELLO PEOPLE OF THE WORLD WELCOME BACK TO THIS BLOG!
Pada postingan kali ini, saya akan menceritakan perjalanan membuat sebuah proyek Arduino
yaitu
~ MEMBUAT KALKULATOR DENGAN ARDUINO ~
Line Up komponen yang dibutuhkan dalam konser percobaan Arduino kali ini adalah:
Sehingga hal tersebut menyebabkan kami membongkar kembali rangkaiannya dari awal. Selanjutnya tahap yang dilakukan adalah memasang keypad.
Di bawah pengaruh nasi ayam KFC dan nasi goreng tak bernama di kawasan Cisitu, kami menyusun rangkaian sedemikian rupa, dan, voila!
Ternyata,
Posisinya terbalik.
Seperti lagu Peterpan - Di Atas Normal,
Setelah melakukan pengujian, kami membuat kode untuk penghitungan. Fitur yang terdapat pada kalkulator ini adalah dapat melakukan 5 jenis operasi, yaitu:
Berikut ini adalah kode yang digunakan:
// include the library code:
#include <LiquidCrystal.h>
#include <Keypad.h>
//initialize the library with the numbers of the interface pins
LiquidCrystal lcd(13,12,11,10,9,8);
//4x4 Matrix key pad
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
// Define the Keymap
char keys[ROWS][COLS] = {
{‘1’,’2',’3',’+’},
{‘4’,’5',’6',’-’},
{‘7’,’8',’9',’*’},
{‘=’,’0',’%’,’/’}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to Arduino pins.
byte rowPins[ROWS] = { 7, 6, 5, 4 };
// Connect keypad COL0, COL1, COL2 and COL3 to Arduino pins.
byte colPins[COLS] = { 3, 2, 1, 0 };
// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int a, num1, num2, hasil;
byte i = 0;
byte state = 0;
char operand = ‘a’;
void setup(){
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
//lcd.print(“KEYPAD LCD TEST”);
num1 = 0;
num2 = -1;
}
void loop(){
char key = kpd.getKey();
// Check for a valid key
if(key){
if (state == 0){
a = transNumber(key);
if(key == ‘=’){
state = 1;
} else if (a != -1) {
lcd.setCursor(i, 0);
//Print the detected key
num1 = append(num1,a);
lcd.print(a);
i++;
}
} else if(state == 1){
if (key == ‘+’ || key == ‘-’ || key == ‘*’ || key == ‘/’ || key == ‘%’){
lcd.setCursor(i, 0);
//Print the detected key
operand = key;
lcd.print(operand);
} else if (key == ‘=’ && operand != ‘a’){
state = 2;
i++;
}
} else if(state == 2){
a = transNumber(key);
if(key == ‘=’ && num2 != -1){
state = 3;
i = 0;
hasil = calculate(num1, num2, operand);
lcd.setCursor(0, 1);
lcd.print(hasil);
} else if (a != -1) {
lcd.setCursor(i, 0);
//Print the detected key
if (num2 == -1){
num2 = 0;
}
num2 = append(num2,a);
lcd.print(a);
i++;
}
} else if (state == 3){
lcd.clear();
state = 0;
num1 = 0;
num2 = -1;
}
}
}
int transNumber(char x){
if (x == ‘1’){
return 1;
} else if (x == ‘2’){
return 2;
} else if (x == ‘3’){
return 3;
} else if (x == ‘4’){
return 4;
} else if (x == ‘5’){
return 5;
} else if (x == ‘6’){
return 6;
} else if (x == ‘7’){
return 7;
} else if (x == ‘8’){
return 8;
} else if (x == ‘9’){
return 9;
} else if (x == ‘0’){
return 0;
} else {
return -1;
}
}
int append(int x, int y){
return 10*x+y;
}
int calculate(int x, int y, char operand){
if (operand == ‘+’){
return x + y;
} else if (operand == ‘-’){
return x — y;
} else if (operand == ‘*’){
return x * y;
} else if (operand == ‘/’){
return x / y;
} else{
return x % y;
}
}
Terdapat beberapa kesalahan output yang ditemui saat pengujian, namun berhasil kami perbaiki dan kalkulator dapat berfungsi dengan baik.
THE FINAL PRODUCT
Sekian kisah dalam pembuatan kalkulator dengan Arduino. Sampai bertemu di postingan selanjutnya!
To put the world to rights?
I'll stay home forever
Where two and two always makes a five
I'll lay down the tracks
Sandbag and hide
January has April showers
And two and two always makes a five
...
Sebuah potongan lirik lagu dari Radiohead yang berjudul 2+2=5
menyatakan two and two always makes a five.
Mungkin Thom Yorke menciptakan lagu ini memang bukan buat menghitung,
karena yang buat menghitung
adalah
KALKULATOR
______________________________________________
HELLO PEOPLE OF THE WORLD WELCOME BACK TO THIS BLOG!
Pada postingan kali ini, saya akan menceritakan perjalanan membuat sebuah proyek Arduino
yaitu
~ MEMBUAT KALKULATOR DENGAN ARDUINO ~
Line Up komponen yang dibutuhkan dalam konser percobaan Arduino kali ini adalah:
- Arduino Uno
- Keypad 4x4
- LCD 16x2
- Breadboard
- Kabel jumper
- Potensiometer
Special Guest Star: Resistor 1000 Ohm (simak terus ceritanya ya!)
Tentu banyak hal jenaka yang ditemui selama percobaan ini.
Diawali dengan kurangnya kabel jumper untuk menyusun rangkaian.
Jumlah kaber jumper yang kurang = 1 kabel.
Wow.
Kami memutuskan untuk Call A Friend, menelpon teman yang lokasinya terdekat dengan tempat kami mengerjakan percobaan ini. Namun karena hujan deras, kami pun tidak jadi meminjam kabel jumper. Kami mencoba untuk memperbaiki kabel jumper yang patah dengan menggantinya menggunakan header. Namun tidak dapat tersambung dan takut nyangkut ke breadboard, akhirnya pun kami memutuskan untuk menggunakan resistor saja untuk menyambungkan ground dengan LCD.
Kemudian sepertinya kami melakukan kesalahan pada pemasangan kabel karena harus mengubah pemasangan kabel saat mengganti kabel dengan resistor, sehingga muncullah output yang "ngawur".
Sehingga hal tersebut menyebabkan kami membongkar kembali rangkaiannya dari awal. Selanjutnya tahap yang dilakukan adalah memasang keypad.
Di bawah pengaruh nasi ayam KFC dan nasi goreng tak bernama di kawasan Cisitu, kami menyusun rangkaian sedemikian rupa, dan, voila!
Ternyata,
Posisinya terbalik.
Seperti lagu Peterpan - Di Atas Normal,
Kaki di kepala, kepala di kaki.Setelah terpasang, kami menguji apakah keypad dapat berfungsi dengan baik dan output yang ditampilkan LCD sudah benar.
Setelah melakukan pengujian, kami membuat kode untuk penghitungan. Fitur yang terdapat pada kalkulator ini adalah dapat melakukan 5 jenis operasi, yaitu:
- Penjumlahan ( + )
- Pengurangan ( - )
- Perkalian ( * )
- Div ( / )
- Modulo ( % )
Berikut ini adalah kode yang digunakan:
// include the library code:
#include <LiquidCrystal.h>
#include <Keypad.h>
//initialize the library with the numbers of the interface pins
LiquidCrystal lcd(13,12,11,10,9,8);
//4x4 Matrix key pad
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns
// Define the Keymap
char keys[ROWS][COLS] = {
{‘1’,’2',’3',’+’},
{‘4’,’5',’6',’-’},
{‘7’,’8',’9',’*’},
{‘=’,’0',’%’,’/’}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to Arduino pins.
byte rowPins[ROWS] = { 7, 6, 5, 4 };
// Connect keypad COL0, COL1, COL2 and COL3 to Arduino pins.
byte colPins[COLS] = { 3, 2, 1, 0 };
// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int a, num1, num2, hasil;
byte i = 0;
byte state = 0;
char operand = ‘a’;
void setup(){
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
//lcd.print(“KEYPAD LCD TEST”);
num1 = 0;
num2 = -1;
}
void loop(){
char key = kpd.getKey();
// Check for a valid key
if(key){
if (state == 0){
a = transNumber(key);
if(key == ‘=’){
state = 1;
} else if (a != -1) {
lcd.setCursor(i, 0);
//Print the detected key
num1 = append(num1,a);
lcd.print(a);
i++;
}
} else if(state == 1){
if (key == ‘+’ || key == ‘-’ || key == ‘*’ || key == ‘/’ || key == ‘%’){
lcd.setCursor(i, 0);
//Print the detected key
operand = key;
lcd.print(operand);
} else if (key == ‘=’ && operand != ‘a’){
state = 2;
i++;
}
} else if(state == 2){
a = transNumber(key);
if(key == ‘=’ && num2 != -1){
state = 3;
i = 0;
hasil = calculate(num1, num2, operand);
lcd.setCursor(0, 1);
lcd.print(hasil);
} else if (a != -1) {
lcd.setCursor(i, 0);
//Print the detected key
if (num2 == -1){
num2 = 0;
}
num2 = append(num2,a);
lcd.print(a);
i++;
}
} else if (state == 3){
lcd.clear();
state = 0;
num1 = 0;
num2 = -1;
}
}
}
int transNumber(char x){
if (x == ‘1’){
return 1;
} else if (x == ‘2’){
return 2;
} else if (x == ‘3’){
return 3;
} else if (x == ‘4’){
return 4;
} else if (x == ‘5’){
return 5;
} else if (x == ‘6’){
return 6;
} else if (x == ‘7’){
return 7;
} else if (x == ‘8’){
return 8;
} else if (x == ‘9’){
return 9;
} else if (x == ‘0’){
return 0;
} else {
return -1;
}
}
int append(int x, int y){
return 10*x+y;
}
int calculate(int x, int y, char operand){
if (operand == ‘+’){
return x + y;
} else if (operand == ‘-’){
return x — y;
} else if (operand == ‘*’){
return x * y;
} else if (operand == ‘/’){
return x / y;
} else{
return x % y;
}
}
Terdapat beberapa kesalahan output yang ditemui saat pengujian, namun berhasil kami perbaiki dan kalkulator dapat berfungsi dengan baik.
THE FINAL PRODUCT
Sekian kisah dalam pembuatan kalkulator dengan Arduino. Sampai bertemu di postingan selanjutnya!
Comments
Post a Comment