Skip to main content

2 + 2 = 5? Let's CALCULATE ft. Arduino

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:
  • 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

Popular posts from this blog

A Look Into Industry 4.0

Apa itu Industry 4.0? Industry 4.0 merupakan revolusi industri ke-4, tahap pengembangan lebih lanjut dari organisasi dan manajemen proses value chain yang terlibat dalam industri, yang berbasis pada cyber-physical systems, menggabungkan dunia nyata dengan dunia virtual. [1]  Industry 4.0 memanfaatkan teknologi internet sebagai konektivitas antar sistemnya. Ilustrasi Revolusi Industri Lingkungan dari Industry 4.0 terdiri atas komponen berikut [1]: Environtment dari Industry 4.0 Suatu sistem dapat dikatakan Industry 4.0 harus mencakup: Interoperabilitas - mesin, perangkat, sensor dan manusia terkoneksi dan berkomunikasi satu sama lain Transparansi informasi - kontekstualisasi informasi berdasarkan data yang diperoleh dari sensor Bantuan teknis - memberikan bantuan kepada manusia dalam membuat keputusan dan memecahkan masalah, dan melakukan tugas yang dianggap terlalu sulit atau tidak aman bagi manusia Desentralisasi pembuatan keputusan - kemampuan cyber-physical sys

The Progress of ClickLock

Halo! Pada progress kali ini, akan disampaikan mengenai rancangan hardware dan software. RANCANGAN HARDWARE DAN SOFTWARE Berikut adalah gambar rangkaian hardware dari sistem yang akan dibuat: Berikut adalah flow chart dari program sistem yang akan dibuat. A) Flowchart Program Hardware B) Flowchart Program Aplikasi Web Berikut ini adalah rancangan user interface dari aplikasi web yang akan dibuat. Rancangan user interface merupakan wireframe dari tiap halaman aplikasi web ClickLock. Pembuatan wireframe menggunakan aplikasi Balsamiq Mockup 3. 1. Wireframe Halaman Login Terdapat bagian untuk mengisi username dan password pengguna, dan tombol login untuk redirect ke halaman home apabila login berhasil. 2. Wireframe Halaman Home Terdapat navigation bar yang menampilkan HOME, MENU serta logo LOGOUT, serta pada halaman home terdapat kalimat sambutan untuk pengguna 3. Wireframe Halaman Schedule Terdapat navigation bar, se

Trouble is A Friend - for another IoT Project

Trouble he will find you No matter where you go Oh oh No matter if you're fast No matter if you're slow Oh oh ... Potongan lirik lagu Trouble is A Friend dari mbak Lenka di tahun 2008 mengawali post kali ini.  Masalah tidak perlu dicari, nanti ia akan datang sendiri Pada tugas IMKA kali ini, kami harus mencari sebuah masalah, yang dapat diselesaikan dengan IoT. Hmm kira-kira apa ya? Gajah di pelupuk mata tidak terlihat, semut di seberang lautan nampak jelas Tidak perlu jauh-jauh mencari masalah. Ternyata setelah disadari, masalah ada di dekat kita! One Real Problem: Ruang kelas sering kali masih terkunci Berdasarkan pengalaman, setidaknya 2 dari 5 kali kelas jam 7 pagi dalam satu minggu, kelas masih terkunci dan perlu mendatangi petugas dukungan teknik untuk membuka pintu ruang kelas. Hal ini menjadi masalah karena hal ini dapat memotong waktu efektif perkuliahan. Kelas yang seharusnya berlangsung selama 50 menit dapat menjadi 40 menit saj