Arduino Project : Menggunakan input keypad dan menampilkannya ke layar LCD => Kalkulator

Kali ini, saya akan mencoba membuat proyek arduino dengan menggunakan input yang berasal dari keypad dan menampilkannya ke layar LCD. Hasil akhir yang diharapkan dari percobaan ini adalah kalkulator sederhana dengan input dari keypad.

Hal yang harus dipersiapkan pada percobaan ini yaitu :

  • Arduino uno
  • Laptop
  • Kabel USB
  • Kabel Jumper
  • Layar LCD (16×2)
  • Keypad 4×3

Pada percobaan ini, hal yang baru kami gunakan adalah keypad :

Keypad 4x3

Keypad 4×3

Sebelumnya kami disarankan untuk menggunakan pin analog arduino untuk memasang keypad ini karena diprediksikan bahwa kami akan kekurangan pin digital pada arduino. Tetapi setelah kami cek, ternyata pin digital yang tersisa setelah dipasang layar LCD adalah 7 buah. Karena keypad 4×3 juga hanya membutuhkan 7 buah pin, kami pun memutuskan untuk menggunakan pin digital arduino.

Sebagai permulaan, kami mencoba untuk memasangkan terlebih dahulu LCD ke arduino.

Arduino dengan LCD

Arduino dengan LCD

Selanjutkan, kami harus memasangkan keypad pada arduino. Awalnya, untuk memasangkan keypad pada arduino, kami berpedoman pada buku Arduino Cookbook. Pada buku tersebut terdapat gambar rangkaian sebagai berikut :

Rangkaian keypad pada buku arduino cookbook

Rangkaian keypad pada buku arduino cookbook

Kami mencoba rangkaian diatas. Akan tetapi, kami hanya menyesuaikan urutan kolom dan barisnya saja. Pin yang dimasukan ke arduino berbeda dengan gambar diatas karena harus menyesuaikan dengan pin digital sisa LCD. Setelah itu, kami mencoba mengupload kode yang kami peroleh dari situs resmi arduino berdasarkan rangkaian yang telah kami buat. Akan tetapi, hasilnya aneh. Tombol yang berfungsi hanya tombol 0 dan 4 saja. Itupun apabila kita menekan tombol 0, yang keluar adalah angka 7, sedangkan apabila kita menekan tombol 4, yang keluar adalah angka 3.

Kami pun terus mencari sumber kesalahan tersebut. Akhirnya setelah kami telusuri, diperolehlah urutan pemasangan pin keypad yang benar.

Ngerumus

Ngerumus

Urutan pin pada keypad

Urutan pin pada keypad

Berikut ini adalah rangkaian dari proyek arduino ini :

Rangkaian proyek

Rangkaian proyek

Berikut ini adalah video setelah kami berhasil memasukan input dari keypad dengan benar

 

Setelah semua input keypad berhasil ditampilkan dengan benar, kami kemudian membuat kode agar bisa membuat program kalkulator sederhana :

// 
#include <Keypad.h>
#include <LiquidCrystal.h>

//pin LCD pada arduino
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int inPin = 0;

const byte ROWS = 4; // jumlah baris = 4
const byte COLS = 3; // jumlah kolom = 3
// Mendefiniskan keypad map
char keys[ROWS][COLS] = {
 {'1','2','3'},
 {'4','5','6'},
 {'7','8','9'},
 {'*','0','#'}
};
// Menyambungkan keypad ROW0, ROW1, ROW2 dan ROW3 ke pin digital arduino.
byte rowPins[ROWS] = { 0, 13, 12, 11 };
// Menyambungkan keypad COL0, COL1 and COL2 ke pin digital arduino.
byte colPins[COLS] = { 10, 9, 8 }; 

//Menciptakan 'objek keypad'
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

//variabel untuk kalkulator
int var1=0;//operan 1
int var2=0;//operan 2
char operator=' ';
char operators[4] = {'+', '-', '/', 'x'};
boolean is_var1=true;
int no_operan=0;
String var1_str;
String var2_str;

void setup()
{
 // pinMode(ledpin,OUTPUT);
 // digitalWrite(ledpin, HIGH);
 Serial.begin(9600);
 lcd.begin(16, 2);
 lcd.setCursor(0, 0);
}

void loop()
{
 //mendapatkan input dari keypad
 char key = kpd.getKey();
 if(key) //mengecek apakah inputnya valid.
 {
 if(key == '#'){// '#' berfungsi untuk membersihkan layar
 lcd.clear(); //membersihkan layar
 var1_str="";
 var2_str="";
 operator=' ';
 var1=0;
 var2=0;
 }
//memasukkan input operan
 if((key != '*')&&(key != '#')){
 if((is_var1)&&(operator== ' ')){
//menyimpan input ke dalam suatu string
 var1_str += key;
 lcd.print(key);//menampilkan bilangan
 }else{
 is_var1=false;//apabila is_var 1 bernilai false
 var2_str += key;// maka string akan dikumpulkan pada var2_str
 lcd.print(key);
 }
 }
 
 if(is_var1){
 if((key == '*')&&(var1_str != "")){
 //is_var1=false;
 
 lcd.setCursor(0, 1);
 operan=operans[no_operan];
 lcd.print(operans[no_operan]);
 
 no_operan++;
 if(no_operan>3){
 no_operan=0;
 }
 }
 }else{
 if((key == '*')&&(var2_str != "")){
 var1 = var1_str.toInt();
 var2 = var2_str.toInt();
 if(operan == '+'){
 var1 = var1+var2;
 }else if(operan == '-'){
 var1 = var1-var2;
 }else if(operan == '/'){
 var1 = var1/var2;
 }else if(operan == 'x'){
 var1 = var1*var2;
 }
 lcd.clear();
 var2_str="";
 operan=' ';
 lcd.setCursor(0,0);
 lcd.print(var1);
 is_var1=true;
 }
 }
 // Serial.println(key);
 }
}

Sebelum menggunakan kode diatas, kami menggunakan kode lain, akan tetapi hasilnya tidak sesuai dengan yang diharapkan. Ketika kita mengoperasikan bilangan untuk yang pertama kali, akan diperoleh hasil yang sesuai. Akan tetapi, saat operasi bilangan yang kedua dan seterusnya, diperoleh hasil yang salah :

Setelah kami mencoba kode yang dituliskan diatas, kami mendapatkan hasil yang diharapkan.

Note :

Tombol * digunakan untuk memilih operator

Tombol # digunakan untuk membersihkan layar

Arduino Project : Menampilkan suhu dengan LCD

Pada postingan sebelumnya, saya telah mencoba mengukur suhu menggunakan sensor LM35 yang terpasang pada arduino. Pada percobaan tersebut, saya hanya menampilkan pengukuran suhu pada serial monitor yang terdapat pada sketch arduino. Untuk kesempatan kali ini, saya akan mencoba menampilkan arduino pada layar LCD.

Hal pertama yang harus disiapkan adalah Layar LCD itu sendiri dan Potensiometer. Kenapa harus menggunakan potensio meter? Fungsi dari potensiometer adalah untuk mengatur kecerahan layar LCD. Apabila kita tidak menggunakan potensiometer, kemungkinan tulisan yang muncul di layar LCD hanya terlihat samar-samar saja atau bahkan tidak terlihat sama sekali.

Peralatan lain yang harus disiapkan (selain potensiometer dan LCD) sama seperti percobaan sebelumnya, yakni Arduino Uno, Breadboard, Laptop, Kabel USB, jumper, sensor LM35 (untuk mengukur suhu), dan resistor.

Awalnya, untuk menghubungkan layar LCD dengan arduino, kami hanya melilitkan kabel yang telah dikelupas ke bagian layar LCD. Akan tetapi, karena lilitannya kurang pas, sulit sekali untuk menampilkan tulisan ke layar. Oleh karena itu, mau tidak mau kami harus menyolder layar LCD tersebut dan memasanginya pin header.

Salah satu kesulitan dalam menghubungkan layar LCD ke arduino adalah ketepatan dalam memasang kabel. Terkadang, kami salah memasang kabel ke arduino sehingga hal yang tampil di layar adalah karakter tulisan yang aneh. Oleh karena itu, pemasangan kabel dari LCD ke Arduino harus benar-benar teliti.

Layar LCD menampilkan nilai yang aneh

Layar LCD menampilkan nilai yang aneh

Suhu hasil pengukuran sensor LM35  tidak tepat. Oleh karena itu, harus dilakukan kalibrasi. Dalam melakukan kalibrasi, kami menggunakan fitur pengukuran temperatur pada handphone Samsung Galaxy S4. Aplikasi pengukur temperatur tersebut telah terkalibrasi, sehingga kami dapat menyesuaikan suhu yang diukur LM35 dengan aplikasi pengukur suhu pada Samsung Galaxy S4. Hasilnya mendekati nilai yang tampil pada layar LCD, mungkin hanya berbeda +- 0.4 .

Btw, Bagaimana gambar rangkaiannya? Berikut ini foto dari rangkaian yang telah kami susun :

Foto Rangkaian (1)

Foto Rangkaian (1)

Foto Rangkaian (2)

Foto Rangkaian (2)

Setelah membentuk rangkaian seperti gambar diatas, kita harus menuliskan kode pada sketch arduino. Berikut ini adalah kode yang kami gunakan :

Kode untuk menampilkan pengukuran suhu pada Layar LCD

Kode untuk menampilkan pengukuran suhu pada Layar LCD

Setelah mengupload kode dari sketch arduino, akan diperoleh hasil pengukuran seperti pada video berikut ini :

Selain itu, kami juga mencoba memasukkan rangkaian ke dalam lemari es untuk mengecek apakah pengukuran suhu berjalan dengan baik. Berikut ini adalah hasil percobaannya :

Aplikasi Mobile : Paper Dreams

Semester ini, saya mengambil mata kuliah wajib Platform dan Pengembangan Aplikasi Mobile. Pada kuliah ini, saya diharuskan untuk membuat sebuah aplikasi mobile. Platformnya? Terserah, yang penting mobile. Karena saya hanya memiliki handphone Android, saya pun memutuskan untuk membuat aplikasi mobile.

Aplikasi apa yang saya buat? 
“Paper Dreams”

Logo aplikasi

Aplikasinya seperti apa?

Paper Dreams adalah aplikasi mobile berplatform android yang berbasis jejaring sosial. Pada aplikasi ini, setiap pengguna dapat menuliskan rencana hidupnya dalam beberapa tahun mendatang. Agar rencana-rencana tersebut dapat terus diingat, pengguna dapat melihat kembali rencana masa depannya.

Aplikasi ini juga menuntut pengguna untuk melakukan kegiatan yang menunjang tercapainya rencana hidup yang telah kita tuliskan. Pengguna harus menuliskan langkah-langkah yang dilakukan untuk merealisasikan rencana hidup tersebut.

Kenapa saya membuat aplikasi ini?
Adakah orang yang tidak memiliki mimpi dalam hidupnya? Saya rasa hal tersebut sangat mustahil. Setiap orang pasti memiliki mimpi atau cita-cita dalam hidupnya. Mimpi tersebut merupakan alasan bagi seseorang untuk melakukan sesuatu.

Setiap orang sukses pasti dilatarbelakangi oleh mimpi yang dimilikinya. Sebut saja Bill Gates. Siapa sih yang tidak mengenalnya? Sebelum berhasil mencapai puncak kariernya di Microsoft, ia memiliki satu mimpi dalam hidupnya, yakni Suatu saat nanti seluruh rumah di dunia ini akan menggunakan komputer dan Windows menjadi sistem operasinya“. Saat mimpi tersebut diutarakan, banyak orang yang malah mencemoohnya. Tapi apa yang terjadi sekarang? Mimpi Bill Gates tersebut menjadi kenyataan yang tak terbantahkan.

Setiap orang pasti memiliki mimpi, tetapi hanya sebagian kecil orang saja yang berhasil merealisasikannya. Sebenarnya apa yang menyebabkan hal tersebut? Saya pikir, hal tersebut disebabkan oleh mimpi-mimpi tersebut hanya sebatas disimpan dalam ingatan saja. Padahal manusia memiliki sifat pelupa. Oleh karena itu mimpi-mimpi yang pernah dipikirkan tidak pernah tercapai, karena dilupakan begitu saja.

Salah satu cara agar kita tidak lupa terhadap mimpi-mimpi kita adalah dengan menuliskannya. Pada era modern ini, menuliskan sesuatu di atas kertas terkadang merupakan pekerjaan yang malas untuk dilakukan. Oleh karena itu, saya ingin membuat aplikasi untuk mencatat semua mimpi ini pada handphone karena hampir setiap orang kini tidak pernah lepas dengan device tersebut. Terlebih lagi handphone kini tidak hanya dijadikan sebagai alat untuk berkomunikasi saja, tetapi juga sebagai bagian dari penunjang berbagai aktifitas.

Apa saja fitur dari aplikasi ini?
·         Login with facebook Account.
Mock up halaman depan
Layar Home

Hampir setiap orang memiliki akun facebook. Oleh karena itu, untuk memudahkan pengguna masuk ke aplikasi ini, digunakan facebook login. Dengan adanya fitur ini, diharapkan pengguna akun facebook tertarik untuk mencoba aplikasi ini karena adanya kemudahan dalam proses log-in



·         Write your Dream (Future Plan)
Layar tahun


Rencana pada tahun tertentu
Pengguna dapat menuliskan rencana masa depannya pada aplikasi ini. Rencana tersebut disertai dengan target waktu pencapaiannya. Melalui fitur ini, pengguna aplikasi dapat melihat rencana masa depannya kapanpun.
·         Action !

Pengguna dapat menuliskan langkah yang dilakukan untuk merealisasikan rencana masa depannya. Sebelum menuliskan action¸pengguna terlebih dahulu harus melakukan tagging terhadap rencana masa depan yang berkaitan dengan action yang akan dilakukan. Setelah itu, pengguna dapat menuliskan action yang dilakukan guna mencapai rencana masa depannya.
·         Share to Facebook
Karena aplikasi ini terintegrasi dengan akun Facebook, setiap future plan dan action yang dituliskan dalam aplikasi ini secara otomatis akan ditampilkan melalui Facebook.
·         Support your friends.
Karena aplikasi ini berbasis jejaring sosial, rencana masa depan yang dituliskan dapat dilihat oleh pengguna lain. Oleh karena itu, pengguna lain dapat memberikan dukungan atau semangat terhadap rencana masa depan yang telah dituliskan.
Saat ini, masih pada tahap pembuatan Technical Design Document. Mudah-mudahan aplikasi ini bisa selesai dengan sempurna dan bisa bermanfaat bagi masyarakat Indonesia. 😀