Orodha ya maudhui:

Kikokotoo cha Arduino: Hatua 6
Kikokotoo cha Arduino: Hatua 6

Video: Kikokotoo cha Arduino: Hatua 6

Video: Kikokotoo cha Arduino: Hatua 6
Video: Using HT1621 6 Digits Seven Segment LCD Display | Lesson 103: Arduino Step By Step Course 2024, Novemba
Anonim
Kikokotoo cha Arduino
Kikokotoo cha Arduino

Programu ni ya kufurahisha kila wakati na Arduino ni jukwaa zuri ikiwa unaanza tu na programu Iliyopachikwa. Katika mafunzo haya tutaunda kikokotoo chetu na Arduino. Thamani zinaweza kutumwa kupitia keypad (4 × 4 keypad) na matokeo yanaweza kutazamwa kwenye skrini ya LCD (16 × 2 Dot-matrix). Kikokotoo hiki kinaweza kufanya shughuli rahisi kama nyongeza, kutoa, kuzidisha na kugawanya na nambari nzima. Lakini ukishaelewa dhana hiyo unaweza kutekeleza hata kazi za kisayansi na Arduino iliyojengwa katika kazi. Mwisho wa mradi huu utajua jinsi ya kutumia 16x2 LCD na Keypad na Arduino na pia jinsi ilivyo rahisi kuwaandaa kwa kutumia urahisi maktaba zinazopatikana. Pia utaelewa jinsi ya kupanga Arduino yako kwa kukamilisha kazi fulani.

Hatua ya 1: Vitu vinahitajika

Arduino Uno (Toleo lolote litafanya kazi) 16 × 2 Onyesho la LCD 4 × 4 Keypad9V BatteryBodi ya mkate na waya za Kuunganisha

Hatua ya 2: Mchoro wa Mzunguko

Mchoro wa Mzunguko
Mchoro wa Mzunguko

Hatua ya 3: Programu ya Kikokotoo cha Arduino

Programu kamili ya Arduino ya mradi huu hutolewa mwishoni mwa mradi huu. Nambari imegawanywa katika vipande vidogo vya maana na ilivyoelezwa hapo chini. Kama nilivyoambiwa hapo awali tutaunganisha LCD na keypad na Arduino kwa kutumia maktaba. Basi hebu tuwaongeze kwenye IDE yetu ya Arduino kwanza. Maktaba ya LCD tayari imejumuishwa katika Arduino yako kwa chaguo-msingi kwa hivyo hatuhitaji kuwa na wasiwasi juu yake. Kwa maktaba ya Keypad bonyeza kwenye kiungo ili kuipakua kutoka Github. Utapata faili ya ZIP, kisha ongeza hii lib kwa Arduino na Mchoro -> Jumuisha Maktaba -> Ongeza faili ya ZIP na uelekeze eneo kwenye faili hii iliyopakuliwa. Mara tu tumemaliza sisi sote tumewekwa kwa programu. ROWS na COLS zinazobadilika zitaelezea safu na nguzo ngapi keypad yetu inayo na ramani ya ufunguo inaonyesha mpangilio ambao funguo ziko kwenye kibodi. Kitufe ninachotumia katika mradi huu kinaonekana kama hii hapa chini kwenye ramani muhimu pia inawakilisha hiyo hiyo. Zaidi hapo chini tumetaja ni pini gani Keypad imeunganishwa kwa kutumia safu-tofauti za safuPini na colPins.const byte ROWS = 4; // safu nne za safu COLS = 4; // Nguzo tatu // Fafanua vitufe vya Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Unganisha keypad ROW0, ROW1, ROW2 na ROW3 kwa pini hizi za Arduino. // Unganisha keypad COL0, COL1 na COL2 kwa pini hizi za Arduino. Mara tu tumetaja ni aina gani ya keypad tunayotumia na jinsi imeunganishwa, tunaweza kuunda keypad kutumia maelezo hayo kwa kutumia laini iliyo hapo chini Pini za safu, ColPins, ROWS, COLS); // Tengeneza Keypad Vivyo hivyo pia lazima tuambie ni pini gani za Arduino ambayo LCD imeunganishwa nayo. Kulingana na mchoro wetu wa mzunguko ufafanuzi ungekuwa kama chini ya kontakt rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pini ambazo LCD imeunganishwa LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // tengeneza LCD Ndani ya kazi ya usanidi, tunaonyesha tu jina la mradi na kisha endelea wakati kitanzi kilipo mradi kuu. Kimsingi, lazima tuangalie ikiwa kuna chochote kinachochapishwa kwenye kitufe, ikiwa imechapishwa lazima tutambue ni nini kinachochapishwa na kisha kuibadilisha kuwa ya kutofautisha wakati "=" imebanwa lazima tuhesabu matokeo na mwishowe tuionyeshe kwenye LCD. Hii ndio hasa inafanywa ndani ya kazi ya kitanzi kama inavyoonyeshwa hapa chinikey = kpd.getKey (); // kuhifadhi dhamana ya kitufe kilichobanwa katika charif (ufunguo! = NO_KEY) DetectButtons (); ikiwa (result == true) CalculateResult (); DisplayResult (); Kinachotokea ndani ya kila kazi inaelezewa kwa kutumia mistari ya maoni, pitia nambari kamili hapa chini, uzunguke nayo ili kuelewa jinsi inavyofanya kazi. Ikiwa una shaka yoyote juu ya laini maalum, jisikie huru kutumia sehemu ya maoni au vikao.

Hatua ya 4:

Hatua ya 5: Kufanya kazi kwa Kikokotoo cha Arduino

Kufanya kazi kwa Kikokotoo cha Arduino
Kufanya kazi kwa Kikokotoo cha Arduino

Fanya unganisho kulingana na mchoro wa mzunguko na pakia nambari hapa chini. Ikiwa inaonyesha kosa hakikisha umeongeza maktaba kulingana na maagizo yaliyotolewa hapo juu. Unaweza pia kujaribu masimulizi kuangalia ikiwa shida iko kwenye vifaa vyako. Ikiwa kila kitu kimefanywa kama inavyotakiwa kuwa, vifaa vyako vitaonekana kama hii hapa chini na LCD ikionesha hii Calculator ya Arduino ikitumia 4x4 Keypad in action Kwa kuwa keypad iliyotumika hapa haina alama sahihi juu yake nimedhani Alphabets kuwa waendeshaji kama Imeorodheshwa hapa chini Tabia kwenye Keypad Inadhaniwa kuwa "Nyongeza" (+) "B" Kuchukua (-) "C" Kuzidisha (*) "D" Idara (/) "*" Futa (C) "#" Sawa (=) Unaweza tumia alama kuweka alama juu ya kile kila kifungo kinawakilisha. Kwa hiyo imefanywa, unaweza kuanza moja kwa moja kutumia kikokotoo. Aina ya nambari na itaonekana kwenye laini ya pili bonyeza operesheni na andika nambari yako ya pili mwishowe bonyeza kitufe cha "#" kupata matokeo yako. Unaweza pia kujaribu kujenga kikokotoo hiki cha Arduino cha skrini ya kugusa.

Hatua ya 6: Kanuni

/ * * Arduino Keypad Calculator Program * / # pamoja na // Faili ya kichwa ya LCD kutoka https://www.arduino.cc/en/Reference/LiquidCrystal # pamoja na faili ya kichwa ya Keypad kutoka https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // safu nne za safu COLS = 4; // Nguzo tatu // Fafanua vitufe vya Keymapchar [ROWS] [COLS] = {{'' ',' 8 ',' 9 ',' D '}, {' 4 ',' 5 ',' 6 ',' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Unganisha keypad ROW0, ROW1, ROW2 na ROW3 kwa pini hizi za Arduino. // Unganisha keypad COL0, COL1 na COL2 kwa pini hizi za Arduino. Keypad kpd = Keypad (makeKeymap (funguo), safu za pini, colPins, ROWS, COLS); // Unda Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pini ambazo LCD imeunganishwa LiquidCrystal lcd (rs, en, d4, d5, d6, d7); muda mrefu Num1, Num2, Nambari; ufunguo wa char, hatua; matokeo ya boolean = uwongo; usanidi batili () {lcd. anza (16, 2); // Tunatumia LCD * 16 * 2 ya kuonyesha LCD ("DIY Calculator"); // Onyesha ujumbe wa utangulizi lcd.setCursor (0, 1); // weka mshale kwenye safu wima 0, mstari 1 lcd.print ("- CircuitDigest"); // Onyesha ucheleweshaji wa ujumbe wa utangulizi (2000); // Subiri kuonyesha ili kuonyesha maelezo lcd.clear (); // Kisha safisha} kitanzi batili () {key = kpd.getKey (); // kuhifadhi dhamana ya kitufe kilichobanwa katika charif (ufunguo! = NO_KEY) DetectButtons (); ikiwa (result == true) CalculateResult (); DisplayResult (); } batili za DetectButtons () {lcd. clear (); // Kisha isafishe ikiwa (ufunguo == '*') // Ikiwa utaghairi Kitufe kinabonyeza {Serial.println ("Button Cancel"); Nambari = Num1 = Num2 = 0; matokeo = uwongo;} ikiwa (ufunguo == '1') // Ikiwa Kitufe 1 kinabonyeza {Serial.println ("Button 1"); ikiwa (Nambari == 0) Nambari = 1; nambari nyingine = (Nambari * 10) + 1; // Imesisitizwa mara mbili ikiwa (Nambari == 0) Nambari = 4; Nambari nyingine = (Nambari * 10) + 4; // Imesisitizwa mara mbili ikiwa (Nambari == 0) Nambari = 7; nambari nyingine = (Nambari * 10) + 7; // Imesisitizwa mara mbili} ikiwa (key == '0') {Serial.println ("Button 0"); // Kitufe 0 kimesisitizwa ikiwa (Nambari == 0) Nambari = 0; Nambari nyingine = (Nambari * 10) + 0; // Imesisitizwa mara mbili ikiwa (Nambari == 0) Nambari = 2; nambari nyingine = (Nambari * 10) + 2; // Imesisitizwa mara mbili} ikiwa (key == '5') {Serial.println ("Button 5"); ikiwa (Nambari == 0) Nambari = 5; Nambari nyingine = (Nambari * 10) + 5; // Imesisitizwa mara mbili} ikiwa (key == '8') {Serial.println ("Button 8"); ikiwa (Nambari == 0) Nambari = 8; nambari nyingine = (Nambari * 10) + 8; // Imesisitizwa mara mbili} ikiwa (key == '#') {Serial.println ("Sawa ya Kitufe"); Nambari2 = Nambari; matokeo = kweli; } ikiwa (key == '3') {Serial.println ("Button 3"); ikiwa (Nambari == 0) Nambari = 3; Nambari nyingine = (Nambari * 10) + 3; // Imesisitizwa mara mbili} ikiwa (key == '6') {Serial.println ("Button 6"); ikiwa (Nambari == 0) Nambari = 6; nambari nyingine = (Nambari * 10) + 6; // Imesisitizwa mara mbili} ikiwa (key == '9') {Serial.println ("Button 9"); ikiwa (Nambari == 0) Nambari = 9; Nambari nyingine = (Nambari * 10) + 9; // Imesisitizwa mara mbili Nambari = 0; ikiwa (ufunguo == 'A') {Serial.println ("Nyongeza"); action = '+';} ikiwa (key == 'B') {Serial.println ("Ondoa"); hatua = '-'; } ikiwa (key == 'C') {Serial.println ("Kuzidisha"); action = '*';} ikiwa (key == 'D') {Serial.println ("Devesion"); hatua = '/';} kuchelewesha (100); }} batili CalculateResult () {if (action == '+') Number = Num1 + Num2; ikiwa (action == '-') Nambari = Num1-Num2; ikiwa (action == '*') Nambari = Num1 * Num2; ikiwa (action == '/') Nambari = Num1 / Num2; } batili DisplayResult () {lcd.setCursor (0, 0); // weka mshale kwenye safu wima 0, mstari 1 lcd.print (Num1); lcd.print (hatua); lcd.print (Num2); ikiwa (matokeo == kweli) {lcd.print ("="); lcd.print (Nambari);} // Onyesha matokeo lcd.setCursor (0, 1); // weka mshale kwenye safu wima 0, mstari 1 lcd.print (Nambari); // Onyesha matokeo}

Ilipendekeza: