Talaan ng mga Nilalaman:

Calculator ng Arduino: 6 na Hakbang
Calculator ng Arduino: 6 na Hakbang

Video: Calculator ng Arduino: 6 na Hakbang

Video: Calculator ng Arduino: 6 na Hakbang
Video: How to Interface Industrial Sensors with Arduino Nano 2024, Nobyembre
Anonim
Calculator ng Arduino
Calculator ng Arduino

Ang programa ay palaging masaya at ang Arduino ay isang kahanga-hangang platform kung nagsisimula ka lang sa naka-embed na programa. Sa tutorial na ito magtatayo kami ng aming sariling calculator kasama ang Arduino. Ang mga halaga ay maaaring maipadala sa pamamagitan ng isang keypad (4 × 4 keypad) at ang resulta ay maaaring makita sa isang LCD screen (16 × 2 Dot-matrix). Ang calculator na ito ay maaaring magsagawa ng mga simpleng pagpapatakbo tulad ng Pagdagdag, Pagbawas, Pagpaparami at Dibisyon na may buong numero. Ngunit kapag naintindihan mo ang konsepto maaari mong ipatupad kahit na mga pang-agham na pag-andar na may built-in na mga pag-andar ng Arduino. Sa pagtatapos ng proyektong ito malalaman mo kung paano gamitin ang isang 16x2 LCD at Keypad na may Arduino at gaano din kadali ang mag-program para sa kanila na madaling gamitin magagamit na mga aklatan. Mauunawaan mo rin kung paano i-program ang iyong Arduino para sa pagtupad ng isang partikular na gawain.

Hakbang 1: Kinakailangan ang Mga Bagay

Arduino Uno (Anumang bersyon ay gagana) 16 × 2 LCD Display4 × 4 Keypad9V BatteryBreadboard at Mga kumokonekta na mga wire

Hakbang 2: Diagram ng Circuit

Diagram ng Circuit
Diagram ng Circuit

Hakbang 3: Arduino Calculator Program

Ang kumpletong programa ng Arduino para sa proyektong ito ay ibinibigay sa pagtatapos ng proyektong ito. Ang code ay nahahati sa maliliit na makabuluhang mga tipak at ipinaliwanag sa ibaba. Tulad ng sinabi sa mas maaga, mag-i-interface kami ng isang LCD at keypad sa Arduino gamit ang mga aklatan. Kaya idagdag muna natin ang mga ito sa aming Arduino IDE. Ang silid-aklatan para sa LCD ay isinama na sa iyong Arduino bilang default kaya hindi namin kailangang mag-alala tungkol dito. Para sa Keypad library mag-click sa link upang i-download ito mula sa Github. Makakakuha ka ng isang ZIP file, pagkatapos ay idagdag ang lib na ito sa Arduino ng Sketch -> Isama ang Library -> Magdagdag ng. ZIP file at ituro ang lokasyon sa na-download na file. Kapag tapos na kami ay nakaayos na para sa pagprograma. Kahit na gumamit kami ng isang silid-aklatan para sa paggamit ng isang keypad kailangan naming banggitin ang ilang mga detalye (ipinakita sa ibaba) tungkol sa keypad sa Arduino. Sasabihin ng variable na ROWS at COLS kung ilang mga row at haligi ang mayroon ang aming keypad at ipinapakita ng keymap ang pagkakasunud-sunod kung saan naroroon ang mga key sa keyboard. Ang keypad na ginagamit ko sa proyektong ito ay mukhang ito sa ibaba sa pangunahing mapa ay kumakatawan sa pareho. Dagdag sa ibaba ay nabanggit namin kung aling mga pin ang Keypad ay konektado gamit ang variable array rowPins at colPins.const byte ROWS = 4; // Four rowconst byte COLS = 4; // Three column // // Define the Keymapchar keys [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Ikonekta ang keypad ROW0, ROW1, ROW2 at ROW3 sa mga Arduino pins.byte colPins [COLS] = {4, 5, 6, 7}; // Ikonekta ang keypad COL0, COL1 at COL2 sa mga pin ng Arduino na ito. Sa sandaling nabanggit namin kung anong uri ng keypad ang ginagamit namin at kung paano ito nakakonekta, maaari naming likhain ang keypad gamit ang mga detalyeng iyon gamit ang linya sa ibaba.), rowPins, colPins, ROWS, COLS); / / Lumikha ng Keypad Ayon sa aming circuit diagram ang mga kahulugan ay magiging katulad sa ibabaconst rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins kung saan ang LCD ay konektadoLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // create the LCDInside the setup function, ipapakita lang namin ang pangalan ng proyekto at pagkatapos ay magpatuloy habang loop kung saan nakasalalay ang pangunahing proyekto. Talaga, kailangan nating suriin kung may nai-type sa keypad, kung nai-type dapat nating makilala ano ang nai-type at pagkatapos ay i-convert ito sa isang variable kapag ang "=" ay pinindot kailangan nating kalkulahin ang resulta at pagkatapos ay ipakita ito sa LCD. Ito mismo ang ginagawa sa loob ng pag-andar ng loop tulad ng ipinapakita sa ibabakey = kpd.getKey (); // pag-iimbak ng pinindot na key na halaga sa isang charif (key! = NO_KEY) Detect Buttons (); kung (resulta == totoo) CalculateResult (); DisplayResult (); Ang nangyayari sa loob ng bawat pag-andar ay ipinaliwanag gamit ang mga linya ng komento, dumaan sa kumpletong code sa ibaba, kumubkob dito upang maunawaan kung paano talaga ito gumagana. Kung mayroon kang anumang pagdududa sa isang tukoy na linya, huwag mag-atubiling gamitin ang seksyon ng komento o ang mga forum.

Hakbang 4:

Hakbang 5: Paggawa ng Arduino Calculator

Paggawa ng Arduino Calculator
Paggawa ng Arduino Calculator

Gawin ang mga koneksyon ayon sa bawat diagram ng circuit at i-upload ang code sa ibaba. Kung nagpapakita ito ng error siguraduhing naidagdag mo ang library ayon sa tagubilin na ibinigay sa itaas. Maaari mo ring subukan ang simulation upang suriin kung ang problema ay nasa iyong hardware. Kung ang lahat ay tapos na ayon sa dapat na maging, pagkatapos ang iyong hardware ay magmumukhang ganito sa ibaba sa LCD na ipinapakita itoArduino Calculator na gumagamit ng 4x4 Keypad sa aksyon Dahil ang keypad na ginamit dito ay walang tamang mga marka dito ay ipinapalagay ko na ang mga Alphabet ay magiging mga operator bilang nakalista sa ibabaCharacter sa KeypadApinapalagay na "A" Karagdagan (+) "B" Pagbawas (-) "C" Pagpaparami (*) "D" Division (/) "*" I-clear (C) "#" Katumbas (=) Maaari kang gumamit ng isang marker upang sumulat sa kung ano talaga ang kinakatawan ng bawat pindutan. Sa tapos na, maaari mong direktang simulan ang paggamit ng calculator. Uri ng numero at lilitaw sa pangalawang linya pindutin ang operand at i-type ang iyong pangalawang numero sa wakas pindutin ang "#" key upang makuha ang iyong resulta. Maaari mo ring subukang buuin ang calculator ng Arduino batay sa Touchscreen.

Hakbang 6: Code

/ * * Arduino Keypad calculator Program * / # isama // Header file para sa LCD mula sa https://www.arduino.cc/en/Referensi/LiquidCrystal#include // Header file para sa Keypad mula sa https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // Four rowconst byte COLS = 4; // Three column // // Define the Keymapchar keys [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Ikonekta ang keypad ROW0, ROW1, ROW2 at ROW3 sa mga Arduino pins.byte colPins [COLS] = {4, 5, 6, 7}; // Connect keypad COL0, COL1 at COL2 sa mga pin ng Arduino na ito. Keypad kpd = Keypad (makeKeymap (key), rowPins, colPins, ROWS, COLS); // Lumikha ng Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins kung saan ang LCD ay konektadoLiquidCrystal lcd (rs, en, d4, d5, d6, d7); mahabang Num1, Num2, Bilang; char key, pagkilos; resulta ng boolean = false; void setup () {lcd.begin (16, 2); // Gumagamit kami ng isang 16 * 2 LCD display lcd.print ("DIY Calculator"); // Ipakita ang isang intro message lcd.setCursor (0, 1); // itakda ang cursor sa haligi 0, linya 1 lcd.print ("- CircuitDigest"); // Ipakita ang isang pagkaantala ng intro message (2000); // Maghintay para sa pagpapakita upang maipakita ang impormasyon lcd.clear (); // Pagkatapos linisin ito} void loop () {key = kpd.getKey (); // pag-iimbak ng pinindot na key na halaga sa isang charif (key! = NO_KEY) Detect Buttons (); kung (resulta == totoo) CalculateResult (); DisplayResult (); } walang bisa Mga Detectbuttons () {lcd.clear (); // Kung gayon linisin ito kung (key == '*') // Kung kanselahin ang Button ay pinindot ang {Serial.println ("Button Cancel"); Bilang = Num1 = Num2 = 0; resulta = false;} kung (key == '1') // Kung ang Button 1 ay pinindot ang {Serial.println ("Button 1"); kung (Bilang == 0) Bilang = 1; iba pa Bilang = (Bilang * 10) + 1; // Pinindot nang dalawang beses} kung (key == '4') // Kung ang Button 4 ay pinindot {Serial.println ("Button 4"); kung (Bilang == 0) Bilang = 4; iba pa Bilang = (Bilang * 10) + 4; // Pinindot nang dalawang beses} kung (key == '7') // Kung ang Button 7 ay pinindot {Serial.println ("Button 7"); kung (Bilang == 0) Bilang = 7; iba pa Bilang = (Bilang * 10) + 7; // Pinindot nang dalawang beses} kung (key == '0') {Serial.println ("Button 0"); // Button 0 ay Pinsala kung (Bilang == 0) Bilang = 0; iba pa Bilang = (Bilang * 10) + 0; // Pinindot nang dalawang beses} kung (key == '2') // Button 2 ay Pinindot {Serial.println ("Button 2"); kung (Bilang == 0) Bilang = 2; iba pa Bilang = (Bilang * 10) + 2; // Pinindot nang dalawang beses} kung (key == '5') {Serial.println ("Button 5"); kung (Bilang == 0) Bilang = 5; iba pa Bilang = (Bilang * 10) + 5; // Pinindot nang dalawang beses} kung (key == '8') {Serial.println ("Button 8"); kung (Bilang == 0) Bilang = 8; iba pa Bilang = (Bilang * 10) + 8; // Pinindot nang dalawang beses} kung (key == '#') {Serial.println ("Button Equal"); Num2 = Bilang; resulta = totoo; } kung (key == '3') {Serial.println ("Button 3"); kung (Bilang == 0) Bilang = 3; iba pa Bilang = (Bilang * 10) + 3; // Pinindot nang dalawang beses} kung (key == '6') {Serial.println ("Button 6"); kung (Bilang == 0) Bilang = 6; iba pa Bilang = (Bilang * 10) + 6; // Pinindot nang dalawang beses} kung (key == '9') {Serial.println ("Button 9"); kung (Bilang == 0) Bilang = 9; iba pa Bilang = (Bilang * 10) + 9; // Pinindot nang dalawang beses} kung (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Pagtuklas ng Mga Pindutan sa Hanay 4 {Num1 = Bilang; Bilang = 0; kung (key == 'A') {Serial.println ("Addition"); action = '+';} kung (key == 'B') {Serial.println ("Pagbawas"); aksyon = '-'; } kung (key == 'C') {Serial.println ("Multiplication"); action = '*';} kung (key == 'D') {Serial.println ("Devesion"); aksyon = '/';} pagkaantala (100); }} void CalculateResult () {if (action == '+') Bilang = Num1 + Num2; kung (aksyon == '-') Bilang = Num1-Num2; kung (aksyon == '*') Bilang = Num1 * Num2; kung (aksyon == '/') Bilang = Num1 / Num2; } walang bisa ang DisplayResult () {lcd.setCursor (0, 0); // itakda ang cursor sa haligi 0, linya 1 lcd.print (Num1); lcd.print (aksyon); lcd.print (Num2); kung (resulta == totoo) {lcd.print ("="); lcd.print (Number);} // Ipakita ang resulta lcd.setCursor (0, 1); // itakda ang cursor sa haligi 0, linya 1 lcd.print (Bilang); // Ipakita ang resulta}

Inirerekumendang: