Kalkulator Arduino: 6 Langkah
Kalkulator Arduino: 6 Langkah
Anonim
Kalkulator Arduino
Kalkulator Arduino

Pengaturcaraan selalu menyeronokkan dan Arduino adalah platform yang bagus jika anda baru memulakan dengan pengaturcaraan Terbenam. Dalam tutorial ini kita akan membina kalkulator kita sendiri dengan Arduino. Nilai dapat dikirim melalui papan kekunci (papan kekunci 4 × 4) dan hasilnya dapat dilihat pada layar LCD (16 × 2 Dot-matrix). Kalkulator ini dapat melakukan operasi mudah seperti Penambahan, Pengurangan, Pendaraban dan Pembahagian dengan nombor bulat. Tetapi setelah anda memahami konsepnya, anda boleh melaksanakan fungsi saintifik dengan fungsi terbina dalam Arduino. Pada akhir projek ini, anda akan mengetahui cara menggunakan LCD 16x2 dan Pad Kekunci dengan Arduino dan juga betapa mudahnya memprogram untuk mereka dengan mudah. perpustakaan yang ada. Anda juga akan memahami cara memprogram Arduino anda untuk menyelesaikan tugas tertentu.

Langkah 1: Perkara Yang Diperlukan

Arduino Uno (Sebarang versi akan berfungsi) 16 × 2 Paparan LCD4 × 4 Bateri Keypad 9V Papan roti dan wayar penyambung

Langkah 2: Rajah Litar

Rajah Litar
Rajah Litar

Langkah 3: Program Kalkulator Arduino

Program Arduino yang lengkap untuk projek ini diberikan pada akhir projek ini. Kod ini dibahagikan kepada potongan kecil yang bermakna dan dijelaskan di bawah. Seperti yang diberitahu sebelumnya, kita akan menghubungkan LCD dan papan kekunci dengan Arduino menggunakan perpustakaan. Oleh itu mari kita tambahkannya ke Arduino IDE kami terlebih dahulu. Perpustakaan untuk LCD sudah termasuk dalam Arduino anda secara lalai, jadi kami tidak perlu risau. Untuk perpustakaan Keypad klik pada pautan untuk memuat turunnya dari Github. Anda akan mendapat fail ZIP, kemudian tambahkan lib ini ke Arduino oleh Sketch -> Sertakan Perpustakaan -> Tambahkan fail. ZIP dan arahkan lokasi ke fail yang dimuat turun ini. Setelah selesai, kami sudah siap untuk pengaturcaraan. Walaupun kami telah menggunakan perpustakaan untuk menggunakan papan kekunci, kami harus menyebutkan beberapa butiran (ditunjukkan di bawah) mengenai papan kekunci ke Arduino. Pemboleh ubah ROWS dan COLS akan memberitahu berapa baris dan lajur papan kekunci kami dan peta kekunci menunjukkan susunan kekunci yang terdapat pada papan kekunci. Pad kekunci yang saya gunakan dalam projek ini kelihatan seperti di bawah ini sehingga peta kunci juga menunjukkan yang sama. Selanjutnya di bawah ini kita telah menyebutkan pin mana yang disambungkan keypad menggunakan array array pinPins dan colPins.const byte ROWS = 4; // Empat bait rowsconst COLS = 4; // Tiga lajur // Tentukan kekunci Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Sambungkan papan kekunci ROW0, ROW1, ROW2 dan ROW3 ke pin Arduino ini. Byte colPins [COLS] = {4, 5, 6, 7}; // Sambungkan papan kekunci COL0, COL1 dan COL2 ke pin Arduino ini. Sebaik sahaja kita telah menyebut jenis papan kekunci apa yang kita gunakan dan bagaimana ia dihubungkan, kita boleh membuat papan kekunci menggunakan butiran tersebut menggunakan baris di bawah Kekunci kpd = Keypad (makeKeymap (kunci), rowPins, colPins, ROWS, COLS); // Buat KeypadSeperti yang sama, kita juga harus memberitahu pin Arduino mana yang disambungkan ke LCD. Menurut rajah litar kami, definisi akan seperti di bawahconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pin yang disambungkan LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // buat LCDDi dalam fungsi penyediaan, kita hanya memaparkan nama projek dan kemudian meneruskan sementara loop di mana projek utama terletak. Pada asasnya, kita harus memeriksa apakah ada sesuatu yang ditaip pada papan kekunci, jika diketik, kita harus mengenali apa yang sedang ditaip dan kemudian ubah menjadi pemboleh ubah apabila “=” ditekan kita harus menghitung hasilnya dan akhirnya memaparkannya di LCD. Inilah yang dilakukan di dalam fungsi gelung seperti yang ditunjukkan di bawahkey = kpd.getKey (); // menyimpan nilai kunci yang ditekan dalam charif (kunci! = NO_KEY) DetectButtons (); if (hasil == benar) CalculateResult (); DisplayResult (); Apa yang berlaku di dalam setiap fungsi dijelaskan menggunakan baris komen, baca kod lengkap di bawah, main-main dengannya untuk memahami bagaimana ia sebenarnya berfungsi. Sekiranya anda mempunyai keraguan pada baris tertentu, sila gunakan bahagian komen atau forum.

Langkah 4:

Langkah 5: Mengendalikan Kalkulator Arduino

Kerja Kalkulator Arduino
Kerja Kalkulator Arduino

Buat sambungan seperti rajah litar dan muat naik kod di bawah. Sekiranya menunjukkan kesalahan, pastikan anda telah menambahkan perpustakaan mengikut arahan yang diberikan di atas. Anda juga boleh mencuba simulasi untuk memeriksa sama ada masalah dengan perkakasan anda. Sekiranya semuanya dilakukan sebagaimana mestinya, maka perkakasan anda akan kelihatan seperti di bawah ini dengan LCD memaparkan ini Kalkulator Arduino menggunakan Pad Kekunci 4x4 dalam tindakan Memandangkan papan kekunci yang digunakan di sini tidak mempunyai tanda yang sesuai di atasnya, saya telah menganggap Huruf sebagai operator sebagai disenaraikan di bawahCharacter pada KeypadDengan anggapan Penambahan “A” (+) “B” Pengurangan (-) “C” Pendaraban (*) Bahagian “D” (/) “*” Hapus (C) “#” Sama dengan (=) Anda boleh gunakan penanda untuk menulis apa yang sebenarnya ditunjukkan oleh setiap butang. Dengan selesai, anda boleh mula menggunakan kalkulator secara langsung. Menaip nombor dan akan muncul di baris kedua tekan operan dan taipkan nombor kedua anda akhirnya tekan kekunci "#" untuk mendapatkan hasil anda. Anda juga boleh mencuba membina kalkulator Arduino berasaskan Skrin Sentuh ini.

Langkah 6: Kod

/ * * Program kalkulator Arduino Keypad * / # include // Fail header untuk LCD dari https://www.arduino.cc/en/Reference/LiquidCrystal#include // Fail header untuk Keypad dari https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // Empat bait rowsconst COLS = 4; // Tiga lajur // Tentukan kekunci Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Sambungkan pad kekunci ROW0, ROW1, ROW2 dan ROW3 ke pin Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Sambungkan papan kekunci COL0, COL1 dan COL2 ke pin Arduino ini. Keypad kpd = Pad Kekunci (makeKeymap (kunci), rowPins, colPins, ROWS, COLS); // Buat Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pin yang disambungkan LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7); panjang Num1, Num2, Nombor; kunci char, tindakan; hasil boolean = false; persediaan kosong () {lcd.begin (16, 2); // Kami menggunakan lcd.print LCD 16 * 2 ("Kalkulator DIY"); // Paparkan mesej intro lcd.setCursor (0, 1); // tetapkan kursor ke lajur 0, baris 1 lcd.print ("- CircuitDigest"); // Paparkan kelewatan mesej intro (2000); // Tunggu paparan untuk menunjukkan maklumat lcd.clear (); // Kemudian bersihkan} gelung kosong () {key = kpd.getKey (); // menyimpan nilai kunci yang ditekan dalam charif (kunci! = NO_KEY) DetectButtons (); if (hasil == benar) CalculateResult (); DisplayResult (); } batal DetectButtons () {lcd.clear (); // Kemudian bersihkan jika (kunci == '*') // Jika Batal batal ditekan {Serial.println ("Button Cancel"); Nombor = Num1 = Num2 = 0; result = false;} if (key == '1') // Jika Butang 1 ditekan {Serial.println ("Button 1"); jika (Nombor == 0) Nombor = 1; nombor lain = (Nombor * 10) + 1; // Ditekan dua kali} jika (kunci == '4') // Jika Butang 4 ditekan {Serial.println ("Butang 4"); jika (Nombor == 0) Nombor = 4; lain Nombor = (Nombor * 10) + 4; // Ditekan dua kali} if (key == '7') // Jika Butang 7 ditekan {Serial.println ("Button 7"); jika (Nombor == 0) Nombor = 7; nombor lain = (Nombor * 10) + 7; // Ditekan dua kali} if (key == '0') {Serial.println ("Butang 0"); // Butang 0 Ditekan jika (Nombor == 0) Nombor = 0; lain Nombor = (Nombor * 10) + 0; // Ditekan dua kali} jika (kunci == '2') // Butang 2 Ditekan {Serial.println ("Butang 2"); jika (Nombor == 0) Nombor = 2; nombor lain = (Nombor * 10) + 2; // Ditekan dua kali} if (key == '5') {Serial.println ("Button 5"); jika (Nombor == 0) Nombor = 5; nombor lain = (Nombor * 10) + 5; // Ditekan dua kali} if (key == '8') {Serial.println ("Button 8"); jika (Nombor == 0) Nombor = 8; nombor lain = (Nombor * 10) + 8; // Ditekan dua kali} if (key == '#') {Serial.println ("Button Equal"); Num2 = Nombor; hasil = benar; } if (key == '3') {Serial.println ("Butang 3"); jika (Nombor == 0) Nombor = 3; nombor lain = (Nombor * 10) + 3; // Ditekan dua kali} if (key == '6') {Serial.println ("Button 6"); jika (Nombor == 0) Nombor = 6; nombor lain = (Nombor * 10) + 6; // Ditekan dua kali} if (key == '9') {Serial.println ("Button 9"); jika (Nombor == 0) Nombor = 9; nombor lain = (Nombor * 10) + 9; // Ditekan dua kali} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Mengesan Butang pada Lajur 4 {Num1 = Number; Nombor = 0; if (key == 'A') {Serial.println ("Penambahan"); action = '+';} if (key == 'B') {Serial.println ("Pengurangan"); tindakan = '-'; } if (key == 'C') {Serial.println ("Pendaraban"); action = '*';} if (key == 'D') {Serial.println ("Penyimpangan"); tindakan = '/';} kelewatan (100); }} batal CalculateResult () {if (action == '+') Nombor = Num1 + Num2; jika (tindakan == '-') Nombor = Num1-Num2; jika (tindakan == '*') Nombor = Num1 * Num2; jika (tindakan == '/') Nombor = Num1 / Num2; } batal DisplayResult () {lcd.setCursor (0, 0); // tetapkan kursor ke lajur 0, baris 1 lcd.print (Num1); lcd.print (tindakan); lcd.print (Bilangan 2); jika (hasil == benar) {lcd.print ("="); lcd.print (Number);} // Paparkan hasilnya lcd.setCursor (0, 1); // tetapkan kursor ke lajur 0, baris 1 lcd.print (Number); // Paparkan hasilnya}

Disyorkan: