Mündəricat:

Arduino Kalkulyator: 6 addım
Arduino Kalkulyator: 6 addım

Video: Arduino Kalkulyator: 6 addım

Video: Arduino Kalkulyator: 6 addım
Video: Подключение кнопки к ардуино. Aрдуино для начинающих #6 2024, Oktyabr
Anonim
Arduino Kalkulyator
Arduino Kalkulyator

Proqramlaşdırma həmişə əyləncəlidir və Arduino, quraşdırılmış proqramlaşdırmaya yeni başlamısınızsa, gözəl bir platformadır. Bu təlimatda Arduino ilə öz kalkulyatorumuzu quracağıq. Dəyərlər klaviatura (4 × 4 klaviatura) vasitəsilə göndərilə bilər və nəticəni LCD ekranda (16 × 2 Dot-matrix) görmək olar. Bu kalkulyator tam ədədlərlə Əlavə, Çıxarma, Çarpma və Bölmə kimi sadə əməliyyatları yerinə yetirə bilər. Ancaq konsepsiyanı başa düşdükdən sonra hətta Arduino -nun qurulmuş funksiyaları ilə hətta elmi funksiyaları da həyata keçirə bilərsiniz. Bu layihənin sonunda Arduino ilə 16x2 LCD və Klaviatura istifadə etməyi və onlar üçün proqramlaşdırmanın nə qədər asan olduğunu biləcəksiniz. mövcud kitabxanalar. Xüsusi bir işi yerinə yetirmək üçün Arduino -nu necə proqramlaşdıracağınızı da başa düşəcəksiniz.

Addım 1: Lazım olan şeylər

Arduino Uno (İstənilən versiya işləyəcək) 16 × 2 LCD Ekran 4 × 4 Klaviatura 9V Batareya Çörək paneli və Bağlayıcı tellər

Addım 2: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı

Addım 3: Arduino Kalkulyator Proqramı

Bu layihə üçün tam Arduino proqramı bu layihənin sonunda verilmişdir. Kod kiçik mənalı hissələrə bölünmüş və aşağıda izah edilmişdir. Daha əvvəl dediyimiz kimi kitabxanalardan istifadə edərək Arduino ilə bir LCD və klaviatura ilə əlaqə quracağıq. Onları əvvəlcə Arduino IDE -yə əlavə edək. LCD üçün kitabxana artıq standart olaraq Arduino -ya daxildir, buna görə narahat olmağımıza ehtiyac yoxdur. Klaviatura kitabxanası üçün Github -dan yükləmək üçün linki vurun. Bir ZIP faylı alacaqsınız, sonra bu libi Arketino ilə Sketch -> Kitabxanaya daxil edin ->. ZIP faylını əlavə edin və bu yüklənmiş faylın yerini göstərin. Bitirdikdən sonra hamımız proqramlaşdırmağa hazırıq. Klaviatura istifadə etmək üçün bir kitabxana istifadə etsək də, Arduino klaviaturası haqqında bir neçə detalı (aşağıda göstərilmişdir) qeyd etməliyik. Dəyişən ROWS və COLS, klaviaturamızda neçə satır və sütunun olduğunu söyləyəcək və klaviatura düymələrinin klaviaturada yerləşmə qaydasını göstərir. Bu proyektdə istifadə etdiyim klaviatura, əsas xəritədə də belə görünür. Aşağıda, KeyPadin sıra pinləri ilə əlaqəli olan pinProses və colPins.const bayt ROWS = 4; // Dörd satır konst bayt COLS = 4; // Üç sütun // Keymapchar düymələrini təyin edin [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; bayt sıraPins [ROWS] = {0, 1, 2, 3}; // Klaviatura ROW0, ROW1, ROW2 və ROW3 -ü bu Arduino pinlərinə qoşun.byte colPins [COLS] = {4, 5, 6, 7}; // Klaviatura COL0, COL1 və COL2 -ni bu Arduino pinlərinə qoşun. Hansı növ klaviaturadan istifadə etdiyimizi və necə bağlandığını qeyd etdikdən sonra aşağıdakı sətirdən istifadə edərək klaviaturanı yarada bilərik Keypad kpd = Keypad (makeKeymap (düymələr)), rowPins, colPins, ROWS, COLS); // Klaviatura yaradınBənzər şəkildə, LCD -nin Arduinonun hansı sancaqlarına bağlı olduğunu da söyləməliyik. Dövrə diaqramımıza görə təriflər int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13 kimi olardı. // LCD -nin bağlı olduğu pinlərLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // LCD yaradın Quraşdırma funksiyasının içərisində biz sadəcə layihənin adını göstəririk və sonra əsas layihənin yerləşdiyi döngəyə davam edirik. Əsasən klaviaturada nəsə yazılıb yazılmadığını yoxlamalıyıq. nə yazılır və "=" düyməsinə basıldıqda onu dəyişənə çeviririk, nəticəni hesablamalı və nəhayət LCD -də göstərməliyik. Aşağıdakı düymə = kpd.getKey (); // basılan düymə dəyərini bir şerifdə saxlamaq (açar! = NO_KEY) DetectButtons (); if (nəticə == doğru) CalculateResult (); DisplayResult (); Hər bir funksiyanın içərisində baş verənlər şərh sətirləri ilə izah olunur, aşağıdakı tam kodu keçin və əslində necə işlədiyini başa düşmək üçün onunla birlikdə fırladın. Xüsusi bir xətt haqqında hər hansı bir şübhəniz varsa, şərh bölməsindən və ya forumlardan istifadə etməkdən çekinmeyin.

Addım 4:

Addım 5: Arduino Kalkulyatorunun işləməsi

Arduino Kalkulyatorunun işləməsi
Arduino Kalkulyatorunun işləməsi

Bağlantıları dövrə diaqramına uyğun olaraq qurun və aşağıdakı kodu yükləyin. Səhv göstərərsə, yuxarıda göstərilən təlimata uyğun olaraq kitabxananı əlavə etdiyinizə əmin olun. Problemin donanımınızda olub olmadığını yoxlamaq üçün simulyasiyanı da sınaya bilərsiniz. Hər şey olduğu kimi edildiyi təqdirdə, cihazınız bu şəkildə görünən LCD ilə belə bir şeyə bənzəyəcək Arduino Kalkulyatoru 4x4 Klaviatura istifadə edərkən Burada istifadə olunan klaviatura üzərində düzgün işarələr olmadığından Əlifbaları operator olaraq qəbul etmişəm. aşağıda listelenen Klaviaturada Xarakter "A" Əlavə (+) "B" Çıxarma (-) "C" Çarpma (*) "D" Bölmə (/) "*" Təmiz (C) "#" Bərabərdir (=) hər bir düymənin əslində nəyi təmsil etdiyini yazmaq üçün markerdən istifadə edin. Bunu etdikdən sonra birbaşa kalkulyatordan istifadə etməyə başlaya bilərsiniz. Nömrəni yazın və ikinci sətirdə görünəcək operand düyməsini basın və ikinci nömrənizi yazın, nəticəni əldə etmək üçün "#" düyməsini basın. Bu Touchscreen əsaslı Arduino kalkulyatorunu da qurmağa cəhd edə bilərsiniz.

Addım 6: Kod

/ * * Arduino Keypad kalkulyator proqramı */#daxildir // https://www.arduino.cc/en/Reference/LiquidCrystal#include -dən LCD üçün başlıq faylı // https://github.com/ saytından Klaviatura üçün başlıq faylı. Chris-A/Keypadconst bayt ROWS = 4; // Dörd satır konst bayt COLS = 4; // Üç sütun // Keymapchar düymələrini təyin edin [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; bayt sıraPins [ROWS] = {0, 1, 2, 3}; // Klaviatura ROW0, ROW1, ROW2 və ROW3 -ü bu Arduino pinlərinə qoşun.byte colPins [COLS] = {4, 5, 6, 7}; // Klaviatura COL0, COL1 və COL2 -ni bu Arduino pinlərinə qoşun. Keypad kpd = Klaviatura (makeKeymap (düymələr), rowPins, colPins, ROWS, COLS); // Keypadconst yaradın int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // LCD -nin bağlı olduğu pinlərLiquidCrystal lcd (rs, en, d4, d5, d6, d7); uzun Num1, Num2, Number; char açarı, hərəkət; boolean nəticə = yalan; void setup () {lcd.begin (16, 2); // 16*2 LCD lcd.print ("DIY Kalkulyator") istifadə edirik; // Giriş mesajını göstərin lcd.setCursor (0, 1); // imleci 0 sütunu, sətir 1 lcd.print ("-CircuitDigest") olaraq təyin edin; // Giriş mesajının gecikməsini göstərin (2000); // Məlumatın göstərilməsini gözləyin lcd.clear (); // Sonra təmizləyin} void loop () {key = kpd.getKey (); // basılan düymə dəyərini bir şerifdə saxlamaq (açar! = NO_KEY) DetectButtons (); if (nəticə == doğru) CalculateResult (); DisplayResult (); } vahid DetectButtons () {lcd.clear (); // Sonra təmizləyin, əgər (key == '*') // Ləğv et düyməsinə basılırsa {Serial.println ("Button Cancel"); Sayı = Sayı1 = Nüm2 = 0; result = false;} if (key == '1') // Əgər Button 1 -ə basılırsa {Serial.println ("Button 1"); əgər (Sayı == 0) Sayı = 1; başqa Sayı = (Sayı*10) + 1; // iki dəfə basıldı} if (key == '4') // Əgər Button 4 -ə basılırsa {Serial.println ("Button 4"); əgər (Sayı == 0) Sayı = 4; başqa Sayı = (Sayı*10) + 4; // iki dəfə basıldı} if (key == '7') // Əgər 7 -ci Düymə basılarsa {Serial.println ("Button 7"); əgər (Sayı == 0) Sayı = 7; başqa Sayı = (Sayı*10) + 7; // iki dəfə basıldı} if (key == '0') {Serial.println ("Button 0"); // 0 sayı düyməsinə basılır, əgər (Sayı == 0) Sayı = 0; başqa Sayı = (Sayı*10) + 0; // iki dəfə basıldığında} if (key == '2') // Button 2 Basıldığında {Serial.println ("Button 2"); əgər (Sayı == 0) Sayı = 2; başqa Sayı = (Sayı*10) + 2; // iki dəfə basıldı} if (key == '5') {Serial.println ("Button 5"); əgər (Sayı == 0) Sayı = 5; başqa Sayı = (Sayı*10) + 5; // iki dəfə basıldı} if (key == '8') {Serial.println ("Button 8"); əgər (Sayı == 0) Sayı = 8; başqa Sayı = (Sayı*10) + 8; // iki dəfə basıldı} if (key == '#') {Serial.println ("Button Equal"); Num2 = Sayı; nəticə = doğru; } if (key == '3') {Serial.println ("Button 3"); əgər (Sayı == 0) Sayı = 3; başqa Sayı = (Sayı*10) + 3; // iki dəfə basıldı} if (key == '6') {Serial.println ("Button 6"); əgər (Sayı == 0) Sayı = 6; başqa Sayı = (Sayı*10) + 6; // iki dəfə basıldı} if (key == '9') {Serial.println ("Button 9"); əgər (Sayı == 0) Sayı = 9; başqa Sayı = (Sayı*10) + 9; // iki dəfə basıldığında} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Sütun 4 -də Düymələrin Algılanması {Num1 = Sayı; Sayı = 0; if (key == 'A') {Serial.println ("Əlavə"); hərəkət = '+';} if (key == 'B') {Serial.println ("Çıkarma"); hərəkət = '-'; } if (key == 'C') {Serial.println ("Çarpma"); hərəkət = '*';} if (key == 'D') {Serial.println ("Devesion"); hərəkət = '/';} gecikmə (100); }} etibarsız CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // imleci 0 sütunu, sətir 1 lcd.print (Num1) olaraq təyin edin; lcd.print (hərəkət); lcd.print (Num2); əgər (nəticə == doğru) {lcd.print ("="); lcd.print (Sayı);} // Nəticəni göstər lcd.setCursor (0, 1); // imleci 0 sütun, sətir 1 lcd.print (sayı) olaraq təyin edin; // Nəticəni göstərin}

Tövsiyə: