İçindekiler:

Arduino Hesap Makinesi: 6 Adım
Arduino Hesap Makinesi: 6 Adım

Video: Arduino Hesap Makinesi: 6 Adım

Video: Arduino Hesap Makinesi: 6 Adım
Video: Hesap Makinesi Yaptık! Arduino ile Keypad ve LCD Ekran Kullanımı 2024, Kasım
Anonim
Arduino Hesap Makinesi
Arduino Hesap Makinesi

Programlama her zaman eğlencelidir ve Gömülü programlamaya yeni başlıyorsanız Arduino harika bir platformdur. Bu dersimizde Arduino ile kendi hesap makinemizi oluşturacağız. Değerler bir tuş takımı (4×4 tuş takımı) aracılığıyla gönderilebilir ve sonuç bir LCD ekranda (16×2 Nokta vuruşlu) görüntülenebilir. Bu hesap makinesi, tam sayılarla Toplama, Çıkarma, Çarpma ve Bölme gibi basit işlemleri yapabilir. Ancak konsepti anladığınızda, Arduino'nun yerleşik fonksiyonları ile bilimsel fonksiyonları bile uygulayabilirsiniz. mevcut kütüphaneler. Ayrıca belirli bir görevi gerçekleştirmek için Arduino'nuzu nasıl programlayacağınızı da anlayacaksınız.

Adım 1: Gerekli Şeyler

Arduino Uno (Herhangi bir sürüm çalışacaktır)16×2 LCD Ekran4×4 Tuş Takımı9V PilBreadboard ve Bağlantı Kabloları

Adım 2: Devre Şeması

Devre şeması
Devre şeması

Adım 3: Arduino Hesap Makinesi Programı

Bu proje için tam Arduino programı bu projenin sonunda verilmiştir. Kod küçük anlamlı parçalara bölünmüştür ve aşağıda açıklanmıştır. Daha önce anlatıldığı gibi, kütüphaneleri kullanarak Arduino ile bir LCD ve tuş takımı arayacağız. Öyleyse önce onları Arduino IDE'mize ekleyelim. LCD kütüphanesi varsayılan olarak Arduino'nuza dahil edilmiştir, bu yüzden endişelenmemize gerek yok. Tuş takımı kitaplığı için Github'dan indirmek için bağlantıya tıklayın. Bir ZIP dosyası alacaksınız, ardından bu lib'i Sketch -> Kitaplığı Dahil Et ->. ZIP dosyası ekle ile Arduino'ya ekleyin ve konumu indirilen bu dosyaya yönlendirin. Bir kez yaptıktan sonra hepimiz programlama için hazırız. Tuş takımını kullanmak için bir kütüphane kullanmış olsak da, Arduino'nun tuş takımı hakkında birkaç ayrıntıdan (aşağıda gösterilmiştir) bahsetmek zorundayız. ROWS ve COLS değişkeni, tuş takımımızda kaç satır ve sütun olduğunu söyler ve tuş haritası, tuşların klavyede bulunma sırasını gösterir. Bu projede kullandığım tuş takımı aşağıdaki gibi görünüyor, anahtar haritası da aynı şeyi temsil ediyor. Daha aşağıda, RowPins ve colPins.const bayt ROWS = 4 değişken dizisini kullanarak Keypad'in hangi pinlere bağlı olduğundan bahsettik; // Dört satır sabit bayt COLS = 4; // Üç sütun// Keymapchar anahtarlarını tanımlayın[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', ' B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};bayt satırPinleri[SATIR] = { 0, 1, 2, 3 };// ROW0, ROW1, ROW2 ve ROW3 tuş takımını bu Arduino pins.byte colPins[COLS] = { 4, 5, 6, 7 }; // Keypad COL0, COL1 ve COL2'yi bu Arduino pinlerine bağlayın. Hangi tip keypad kullandığımızı ve nasıl bağlandığından bahsettikten sonra aşağıdaki satırı kullanarak bu detayları kullanarak keypad'i oluşturabilirizKeypad kpd = Keypad(makeKeymap(keys)), rowPins, colPins, ROWS, COLS); // Tuş Takımını Oluştur Aynı şekilde LCD'nin Arduino'nun hangi pinlerine bağlı olduğunu da söylemeliyiz. Devre şemamıza göre tanımlar aşağıdaki gibi olacaktırconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //LCD'nin bağlı olduğu pinlerLiquidCrystal lcd(rs, en, d4, d5, d6, d7); //LCD'yi oluştur Kurulum fonksiyonunun içinde, sadece projenin adını gösteriyoruz ve ardından ana projenin bulunduğu while döngüsüne geçiyoruz. Temel olarak, tuş takımına bir şey yazıp yazmadığını kontrol etmeliyiz, eğer yazdıysa tanımamız gerekiyor. ne yazılıyor ve ardından “=” basıldığında onu bir değişkene dönüştürün, sonucu hesaplamalı ve ardından LCD'de göstermeliyiz. Aşağıda gösterildiği gibi döngü işlevi içinde yapılan tam olarak budurkey = kpd.getKey(); //basılan anahtar değerini bir charif'te saklamak (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); Her işlevin içinde ne olduğu, yorum satırları kullanılarak açıklanır, aşağıdaki kodun tamamını gözden geçirin, gerçekte nasıl çalıştığını anlamak için onunla uğraşın. Belirli bir satırda herhangi bir şüpheniz varsa, yorum bölümünü veya forumları kullanmaktan çekinmeyin.

4. Adım:

Adım 5: Arduino Hesap Makinesinin Çalışması

Arduino Hesap Makinesinin Çalışması
Arduino Hesap Makinesinin Çalışması

Bağlantıları devre şemasına göre yapın ve aşağıdaki kodu yükleyin. Hata gösteriyorsa, yukarıda verilen talimata göre kitaplığı eklediğinizden emin olun. Sorunun donanımınızda olup olmadığını kontrol etmek için simülasyonu da deneyebilirsiniz. Her şey olması gerektiği gibi yapılırsa, donanımınız aşağıdaki gibi görünecek ve LCD bu Arduino Hesap Makinesi'ni 4x4 Tuş Takımını kullanarak eylem halinde gösterecektir. aşağıda listelenmiştirTuş Takımındaki Karakter“A” Toplama (+)“B”Çıkarma (-)“C”Çarpma (*)“D”Bölmesi (/)“*”Temizle (C)“#”Eşittir (=)Yapabilirsiniz her bir düğmenin gerçekte neyi temsil ettiğini yazmak için bir işaretleyici kullanın. Bunu yaptıktan sonra, doğrudan hesap makinesini kullanmaya başlayabilirsiniz. Numarayı yazın ve ikinci satırda görünecek işlenene basın ve ikinci numaranızı yazın, sonucunuzu almak için son olarak “#” tuşuna basın. Bu Dokunmatik Ekran tabanlı Arduino hesap makinesini oluşturmayı da deneyebilirsiniz.

6. Adım: Kod

/* * Arduino Tuş Takımı hesaplayıcı Programı */#include // https://www.arduino.cc/en/Reference/LiquidCrystal#include adresinden LCD için başlık dosyası // https://github.com/ adresinden Tuş Takımı için başlık dosyası Chris--A/Keypadconst bayt SATIRLAR = 4; // Dört satır sabit bayt COLS = 4; // Üç sütun// Keymapchar anahtarlarını tanımlayın[ROWS][COLS] = { {'7', '8', '9', 'D'}, {'4', '5', '6', ' C'}, {'1', '2', '3', 'B'}, {'*', '0', '#', 'A'}};bayt satırPinleri[SATIR] = { 0, 1, 2, 3 };// ROW0, ROW1, ROW2 ve ROW3 tuş takımını bu Arduino pins.byte colPins[COLS] = { 4, 5, 6, 7 }; // COL0, COL1 ve COL2 tuş takımını bu Arduino pinlerine bağlayın. Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Keypadconst'u oluşturun int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //LCD'nin bağlı olduğu pinlerLiquidCrystal lcd(rs, en, d4, d5, d6, d7); uzun Num1, Num2, Sayı; karakter tuşu, eylem; boolean sonucu = false;void setup() { lcd.begin(16, 2); //16*2 LCD ekran kullanıyoruz lcd.print("DIY Calculator"); //Bir giriş mesajı göster lcd.setCursor(0, 1); // imleci sütun 0, satır 1'e ayarlayın lcd.print("-CircuitDigest"); //Bir giriş mesajı gecikmesi göster(2000); // Ekranın bilgi göstermesini bekleyin lcd.clear(); //Sonra onu temizle}void loop() {key = kpd.getKey(); //basılan anahtar değerini bir charif'te saklamak (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); }void DetectButtons(){ lcd.clear(); //Ardından temizleyin if (key=='*') //İptal Butona basılırsa {Serial.println ("Buton İptal"); Sayı=Sayı1=Sayı2=0; sonuç=yanlış;} if (anahtar == '1') //Eğer Düğme 1'e basılırsa {Serial.println ("Düğme 1"); if (Sayı==0) Sayı=1; başka Sayı = (Sayı*10) + 1; //İki kez basılır } if (anahtar == '4') //Eğer 4. Düğmeye basılırsa {Serial.println ("Düğme 4"); if (Sayı==0) Sayı=4; başka Sayı = (Sayı*10) + 4; //İki kez basılır } if (anahtar == '7') //7. Düğmeye basılırsa {Serial.println ("Düğme 7"); if (Sayı==0) Sayı=7; başka Sayı = (Sayı*10) + 7; //İki kez basıldı } if (key == '0') {Serial.println ("Düğme 0"); //(Sayı==0) Sayı=0 ise 0 Butonuna Basılır; başka Sayı = (Sayı*10) + 0; //İki kez basıldı } if (anahtar == '2') //Buton 2 Basıldı {Serial.println ("Düğme 2"); if (Sayı==0) Sayı=2; başka Sayı = (Sayı*10) + 2; //İki kez basıldı } if (key == '5') {Serial.println ("Düğme 5"); if (Sayı==0) Sayı=5; başka Sayı = (Sayı*10) + 5; //İki kez basıldı } if (key == '8') {Serial.println ("Düğme 8"); if (Sayı==0) Sayı=8; başka Sayı = (Sayı*10) + 8; //İki kez basıldı } if (key == '#') {Serial.println ("Eşit Düğme"); Sayı2=Sayı; sonuç = doğru; } if (anahtar == '3') {Serial.println ("Düğme 3"); if (Sayı==0) Sayı=3; başka Sayı = (Sayı*10) + 3; //İki kez basıldı } if (key == '6') {Serial.println ("Düğme 6"); if (Sayı==0) Sayı=6; başka Sayı = (Sayı*10) + 6; //İki kez basıldı } if (key == '9') {Serial.println ("Düğme 9"); if (Sayı==0) Sayı=9; başka Sayı = (Sayı*10) + 9; //İki kez basıldı } if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Sütun 4'teki Düğmeleri Algılama { Num1 = Number; Sayı =0; if (key == 'A') {Serial.println ("Ekleme"); action = '+';} if (key == 'B') {Serial.println ("Çıkarma"); eylem = '-'; } if (anahtar == 'C') {Serial.println ("Çarpma"); action = '*';} if (anahtar == 'D') {Serial.println ("Geliştirme"); eylem = '/';} gecikme(100); }}void CalculateResult(){ if (action=='+') Number = Num1+Num2; if (action=='-') Sayı = Num1-Num2; if (action=='*') Sayı = Num1*Num2; if (action=='/') Sayı = Num1/Num2; }void DisplayResult(){ lcd.setCursor(0, 0); // imleci sütun 0, satır 1'e ayarlayın lcd.print(Num1); lcd.print(eylem); lcd.print(Sayı2); if (sonuç==true) {lcd.print(" ="); lcd.print(Sayı);} //Sonucu göster lcd.setCursor(0, 1); // imleci sütun 0, satır 1'e ayarlayın lcd.print(Sayı); //Sonucu göster}

Önerilen: