Daftar Isi:

Kalkulator Arduino: 6 Langkah
Kalkulator Arduino: 6 Langkah

Video: Kalkulator Arduino: 6 Langkah

Video: Kalkulator Arduino: 6 Langkah
Video: Membuat Kalkulator Sederhana menggunakan Arduino - Project Arduino #6 2024, November
Anonim
Kalkulator Arduino
Kalkulator Arduino

Pemrograman selalu menyenangkan dan Arduino adalah platform yang luar biasa jika Anda baru memulai dengan pemrograman Tertanam. Dalam tutorial ini kita akan membuat kalkulator sendiri dengan Arduino. Nilai dapat dikirim melalui keypad (keypad 4x4) dan hasilnya dapat dilihat pada layar LCD (16x2 Dot-matrix). Kalkulator ini dapat melakukan operasi sederhana seperti Penambahan, Pengurangan, Perkalian dan Pembagian dengan bilangan bulat. Tetapi begitu Anda memahami konsepnya, Anda bahkan dapat mengimplementasikan fungsi ilmiah dengan fungsi bawaan Arduino. Di akhir proyek ini Anda akan mengetahui cara menggunakan LCD 16x2 dan Keypad dengan Arduino dan juga betapa mudahnya memprogramnya dengan menggunakan perpustakaan yang tersedia. Anda juga akan memahami cara memprogram Arduino Anda untuk menyelesaikan tugas tertentu.

Langkah 1: Hal-hal yang Diperlukan

Arduino Uno (Versi apa pun bisa digunakan) Layar LCD 16×2 Papan tombol 4×4 Baterai 9V Papan tempat memotong roti dan Kabel penghubung

Langkah 2: Diagram Sirkuit

Diagram Sirkuit
Diagram Sirkuit

Langkah 3: Program Kalkulator Arduino

Program Arduino lengkap untuk proyek ini diberikan di akhir proyek ini. Kode ini dibagi menjadi potongan-potongan kecil yang bermakna dan dijelaskan di bawah ini. Seperti yang telah dijelaskan sebelumnya, kita akan menghubungkan LCD dan keypad dengan Arduino menggunakan perpustakaan. Jadi mari kita tambahkan ke Arduino IDE kita terlebih dahulu. Pustaka untuk LCD sudah disertakan dalam Arduino Anda secara default sehingga kami tidak perlu khawatir tentang hal itu. Untuk perpustakaan Keypad, klik tautan untuk mengunduhnya dari Github. Anda akan mendapatkan file ZIP, lalu tambahkan lib ini ke Arduino dengan Sketch -> Include Library -> Add. ZIP file dan arahkan lokasi ke file yang diunduh ini. Setelah selesai, kami siap untuk pemrograman. Meskipun kami telah menggunakan perpustakaan untuk menggunakan keypad, kami harus menyebutkan beberapa detail (ditampilkan di bawah) tentang keypad ke Arduino. Variabel ROWS dan COLS akan memberi tahu berapa banyak baris dan kolom yang dimiliki keypad kita dan keymap menunjukkan urutan tombol yang ada di keyboard. Keypad yang saya gunakan dalam proyek ini terlihat seperti di bawah ini ke peta kunci juga mewakili hal yang sama. Lebih lanjut di bawah ini kami telah menyebutkan pin mana yang terhubung dengan Keypad menggunakan array variabel rowPins dan colPins.const byte ROWS = 4; // Empat barisconst byte COLS = 4; // Tiga kolom// Tentukan kunci Keymapchar[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', ' B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};byte rowPins[ROWS] = { 0, 1, 2, 3 };// Hubungkan keypad ROW0, ROW1, ROW2 dan ROW3 ke pin Arduino ini.byte colPins[COLS] = { 4, 5, 6, 7 }; // Hubungkan keypad COL0, COL1 dan COL2 ke pin Arduino ini. Setelah kita menyebutkan jenis keypad apa yang kita gunakan dan bagaimana cara menghubungkannya, kita dapat membuat keypad menggunakan detail tersebut menggunakan baris di bawah ini Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Buat Keypad Demikian pula kita juga harus memberi tahu pin Arduino yang terhubung ke LCD. Menurut diagram sirkuit kami definisinya akan seperti di bawah ini const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Menyematkan LCD yang terhubungLiquidCrystal lcd(rs, en, d4, d5, d6, d7); //membuat LCDDi dalam fungsi setup, kita hanya menampilkan nama proyek dan kemudian melanjutkan ke while loop di mana proyek utama berada. Pada dasarnya, kita harus memeriksa apakah ada yang diketik di keypad, jika diketik kita harus mengenali apa yang sedang diketik dan kemudian mengubahnya menjadi variabel ketika "=" ditekan kita harus menghitung hasilnya dan akhirnya menampilkannya di LCD. Inilah yang dilakukan di dalam fungsi loop seperti yang ditunjukkan di bawah ini key = kpd.getKey(); //menyimpan nilai kunci yang ditekan dalam charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); Apa yang terjadi di dalam setiap fungsi dijelaskan menggunakan baris komentar, baca kode lengkap di bawah ini, mainkan untuk memahami cara kerjanya. Jika Anda memiliki keraguan pada baris tertentu, jangan ragu untuk menggunakan bagian komentar atau forum.

Langkah 4:

Langkah 5: Kerja Kalkulator Arduino

Cara kerja Kalkulator Arduino
Cara kerja Kalkulator Arduino

Buat koneksi sesuai diagram sirkuit dan unggah kode di bawah ini. Jika itu menunjukkan kesalahan, pastikan Anda telah menambahkan perpustakaan sesuai instruksi yang diberikan di atas. Anda juga dapat mencoba simulasi untuk memeriksa apakah masalahnya ada pada perangkat keras Anda. Jika semuanya dilakukan sebagaimana mestinya, maka perangkat keras Anda akan terlihat seperti di bawah ini dengan LCD yang menampilkan Kalkulator Arduino ini menggunakan Keypad 4x4 yang sedang bekerja Karena keypad yang digunakan di sini tidak memiliki tanda yang sesuai, saya menganggap Abjad sebagai operator sebagai tercantum di bawah iniKarakter pada Keypad Diasumsikan sebagai “A” Penambahan (+) “B” Pengurangan (-) “C” Perkalian (*) “D” Pembagian (/) “*” Hapus (C) “#” Sama dengan (=)Anda dapat gunakan spidol untuk menuliskan apa yang sebenarnya diwakili oleh setiap tombol. Setelah selesai, Anda dapat langsung mulai menggunakan kalkulator. Ketik nomor dan akan muncul di baris kedua tekan operan dan ketik nomor kedua Anda akhirnya tekan tombol "#" untuk mendapatkan hasil Anda. Anda juga dapat mencoba membuat kalkulator Arduino berbasis Layar Sentuh ini.

Langkah 6: Kode

/* * Program kalkulator Keypad Arduino */#include //File header untuk LCD dari https://www.arduino.cc/en/Reference/LiquidCrystal#include //File header untuk Keypad dari https://github.com/ Chris--A/Keypadconst byte ROWS = 4; // Empat barisconst byte COLS = 4; // Tiga kolom// Tentukan kunci Keymapchar[ROWS][COLS] = { {'7', '8', '9', 'D'}, {'4', '5', '6', ' C'}, {'1', '2', '3', 'B'}, {'*', '0', '#', 'A'}};byte rowPins[ROWS] = { 0, 1, 2, 3 };// Hubungkan keypad ROW0, ROW1, ROW2 dan ROW3 ke pin Arduino ini.byte colPins[COLS] = { 4, 5, 6, 7 }; // Hubungkan keypad COL0, COL1 dan COL2 ke pin Arduino ini. Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Buat Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Menyematkan LCD yang terhubungLiquidCrystal lcd(rs, en, d4, d5, d6, d7); angka panjang1, angka2, angka; kunci karakter, tindakan; hasil boolean = false;pengaturan batal() { lcd.begin(16, 2); //Kami menggunakan layar LCD 16*2 lcd.print("Kalkulator DIY"); //Menampilkan pesan intro lcd.setCursor(0, 1); // atur kursor ke kolom 0, baris 1 lcd.print("-CircuitDigest"); //Menampilkan penundaan pesan intro(2000); //Tunggu tampilan menampilkan info lcd.clear(); //Lalu bersihkan}void loop() {key = kpd.getKey(); //menyimpan nilai kunci yang ditekan dalam charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); }void DetectButtons(){ lcd.clear(); //Kemudian bersihkan if (key=='*') //If cancel Button ditekan {Serial.println("Button Cancel"); Angka=Bilangan1=Bilangan2=0; result=false;} if (kunci == '1') //Jika Tombol 1 ditekan {Serial.println ("Tombol 1"); if (Angka==0) Angka=1; else Angka = (Nomor*10) + 1; //Ditekan dua kali } if (kunci == '4') //Jika Tombol 4 ditekan {Serial.println ("Tombol 4"); if (Angka==0) Angka=4; else Angka = (Nomor*10) + 4; //Ditekan dua kali } if (tombol == '7') //Jika Tombol 7 ditekan {Serial.println ("Tombol 7"); if (Angka==0) Angka=7; else Angka = (Nomor*10) + 7; //Tekan dua kali } if (kunci == '0') {Serial.println ("Tombol 0"); //Tombol 0 Ditekan jika (Angka==0) Angka=0; else Angka = (Nomor*10) + 0; //Tekan dua kali } if (kunci == '2') //Tombol 2 Ditekan {Serial.println ("Tombol 2"); if (Angka==0) Angka=2; else Angka = (Nomor*10) + 2; //Tekan dua kali } if (kunci == '5') {Serial.println ("Tombol 5"); if (Angka==0) Angka=5; else Angka = (Nomor*10) + 5; //Tekan dua kali } if (kunci == '8') {Serial.println ("Tombol 8"); if (Angka==0) Angka=8; else Angka = (Nomor*10) + 8; //Tekan dua kali } if (kunci == '#') {Serial.println ("Tombol Sama"); Angka2=Angka; hasil = benar; } if (kunci == '3') {Serial.println ("Tombol 3"); if (Angka==0) Angka=3; else Angka = (Nomor*10) + 3; //Tekan dua kali } if (kunci == '6') {Serial.println ("Tombol 6"); if (Angka==0) Angka=6; else Angka = (Nomor*10) + 6; //Tekan dua kali } if (kunci == '9') {Serial.println ("Tombol 9"); if (Angka==0) Angka=9; else Angka = (Nomor*10) + 9; //Tekan dua kali } if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Mendeteksi Tombol pada Kolom 4 { Num1 = Number; Nomor = 0; if (kunci == 'A') {Serial.println ("Penambahan"); aksi = '+';} if (kunci == 'B') {Serial.println ("Pengurangan"); tindakan = '-'; } if (kunci == 'C') {Serial.println ("Perkalian"); aksi = '*';} if (kunci == 'D') {Serial.println ("Pengembangan"); tindakan = '/';} delay(100); }}void HitungResult(){ if (action=='+') Number = Num1+Num2; if (aksi=='-') Angka = Angka1-Num2; if (aksi=='*') Angka = Angka1*Num2; if (aksi=='/') Angka = Angka1/Bilangan2; }void DisplayResult(){ lcd.setCursor(0, 0); // atur kursor ke kolom 0, baris 1 lcd.print(Num1); lcd.print(aksi); lcd.print(Bilangan2); if (hasil==benar) {lcd.print(" ="); lcd.print(Number);} //Menampilkan hasil lcd.setCursor(0, 1); // atur kursor ke kolom 0, baris 1 lcd.print(Number); //Tampilkan hasilnya}

Direkomendasikan: