Arduino Tabanlı Hesap Makinesi Nasıl Yapılır?
Kullanarak projeler yapmak Arduino Uno Gömülü projeler üzerinde çalışıyorsanız, bir mikrodenetleyici panosu olarak gerçekten eğlencelidir. Toplama, çıkarma, çarpma ve bölme gibi tüm temel aritmetik işlemleri gerçekleştirebilen basit bir hesap makinesi yapmak istiyorsanız, Arduino kartı ile bilgi birikiminiz varsa hemen şimdi yapabilirsiniz. Bu projede, basit bir hesap makinesi yapmak için bir Arduino Uno kullanacağız. Giriş göndermek için 4 × 4 Tuş Takımı ve işlemlerimizin çıktısını görmek için 16 × 2 LCD entegre edeceğiz.
Bu nedenle, sonunda başarmak istediğimiz projemizin temel özetini bildiğimize göre, bu proje üzerinde çalışmaya başlamak için ilerleyelim ve daha fazla bilgi toplamaya başlayalım.
Arduino'da Basit Bir Hesap Makinesi Nasıl Yapılır?
Adım 1: Bileşenleri Toplama
Herhangi bir projeye başlamadan önce, ilk adım, projede kullanılacak tüm bileşenlerin tam bir listesini yapmaktır. Bu mükemmel bir yaklaşım çünkü çok zaman kazandırıyor ve projenin ortasında sıkışıp kalmamızı engelliyor. Bu nedenle, piyasada kolayca bulunabilen tüm bileşenlerin tam listesi aşağıda verilmiştir:
Adım 2: Çalışmak
Şimdi bu projede kullanacağımız tüm bileşenlere sahip olduğumuz için, bu proje üzerinde çalışmaya başlayalım. Mikrodenetleyici kartı olarak bir Arduino Uno kullanacağız. Bu panoya, hangi işlemlerin nasıl yapılacağını belirten bir kod yazılacak ve yakılacaktır. Hesap makinesinde hesaplanacak sayısal verileri girmek için 4 × 4 tuş takımı kullanılacaktır. Mikrodenetleyici tüm aritmetik işlemleri gerçekleştirecek ve ardından çıktıyı 16 × 2 LCD.
Donanımı bağlamadan önce, bilgisayar yazılımında kodu ve devre bağlantılarını simüle etmek ve test etmek daha iyidir. Kullanacağız Proteusbu amaç için. Devreyi test ettikten ve yazılım üzerinde mükemmel şekilde çalıştığını doğruladıktan sonra, donanıma doğru ilerleyeceğiz.
Adım 3: Devre Simülasyonu
Bu projeyi donanım üzerinde uygulamadan önce, kodun iyi çalışıp çalışmadığını kontrol etmek için onu Proteus üzerinde simüle edeceğiz. Daha önce Proteus üzerinde çalışmadıysanız, endişelenecek bir şey yok. Devreyi yazılım üzerinde simüle etmek için aşağıdaki adımları izleyin.
- Bilgisayarınızda bu yazılım yüklü değilse, indirmek için buraya tıklayın.
- Yazılım yüklendikten sonra yazılımı açın ve üzerine tıklayarak yeni bir proje yapın. IŞİD buton.
- Proteus başlangıçta bir Arduino kitaplığına sahip değildir. Onu dahil etmemiz gerekecek. Proteus için Arduino kitaplığı, aşağıda verilen bağlantıdaki kodla birlikte eklenmiştir. Dosyaları kopyalayın ve içine yapıştırın C: \ ProgramData \ Labcenter Electronics \ Proteus 8 Professional \ KÜTÜPHANE.
- Yeni bir şematik yeni açıldı. Tıkla PBileşen menüsünü açmak için düğmesine basın.
- Sol üst köşede bir arama çubuğu içeren bir kutu görünecektir. Projede kullanmanız gereken bileşeni arayın.
- Tüm bileşenleri seçtikten sonra, ekranın sol tarafında tam bir liste göreceksiniz.
- Aşağıda gösterildiği gibi bir devre şeması yapın.
- Şimdi aşağıda verilen Arduino dosyasını açın. Sketch menüsünde, tıklayın Derlenmiş İkili Dosyayı Dışa Aktar. Bu, Proteus'taki Arduino simülasyonunda kullanılacak bir .hex dosyası oluşturacaktır.
- Bunlar, oluşturulacak iki dosyadır. İlkini simülasyonlarımızda kullanacağız.
- Şimdi HEX dosyası oluşturulurken, proteusu açın ve mikro denetleyici panosuna çift tıklayın. Bileşeni düzenlemek için bir kutu görünecektir. Hex dosyasını buraya yükleyin.
Kod buraya başarıyla yüklendiğinde, bazı aritmetik işlemler gerçekleştirerek hesap makinesini test edebilir ve sonuçları onaylayabilirsiniz.
Adım 4: Devrenin Montajı
Devre simüle edildiğinden ve kod üzerinde mükemmel şekilde çalışır. Bir adım öne geçelim ve tüm bileşenleri bir araya getirelim. Veroboard son bir ürün yapmak. Devredeki tüm bağlantıları yapmak için aşağıdaki adımları izleyin.
- 4 × 4 tuş takımında A, B, C, D, 1, 2, 3 ve 4 adlı toplam 8 pin vardır. A, B ve D pinlerini pin0, pin1'e bağladığınızdan emin olun. Arduino Uno kartının pin2 ve pin3'ü ve tuş takımının pin 1, 2, 3 ve 4 pinleri sırasıyla Arduino Uno kartının pin4, pin5, pin6 ve pin7'sine.
- Şimdi 16 × 2 LCD'nin D4, D5, D6 ve D7 pinlerini sırasıyla Arduino kartının pin10, pin11, pin12 ve pin13'e bağlayın.
- Şimdi bağlayın YENİDEN ve ELCD'nin pinini sırasıyla Arduino kartının pin8 ve pin9'una.
- Kısa VSS, VEE ve RW pin ve bunları Arduino Uno'nun toprağına bağlayın.
- Bağlayarak LCD'yi açın. VDD LCD'nin pinini Arduino UNO'nun 5V'una.
Adım 5: Arduino'ya Başlarken
Arduino IDE, Arduino mikrodenetleyici üzerinde çalışacak bir kod yazabileceğiniz, hata ayıklayabileceğiniz ve derleyebileceğiniz bir yazılımdır. Bu kod, bu IDE aracılığıyla mikro denetleyiciye yüklenecektir. Bu yazılımla daha önce deneyiminiz yoksa endişelenecek bir şey yoktur çünkü bu yazılımı kullanmak için gereken tüm prosedür aşağıda verilmiştir.
- Yazılımı önceden yüklemediyseniz, yazılımı indirmek için burayı tıklayın.
- Arduino kartınızı PC'ye bağlayın ve Kontrol Panelini açın. Tıklamak Donanım ve ses.Şimdi aç Cihazlar ve Yazıcı ve kartınızın bağlı olduğu bağlantı noktasını bulun. Bu bağlantı noktası farklı bilgisayarlarda farklıdır.
- Şimdi Arduino IDE'yi açın. Araçlar'dan Arduino kartını şu şekilde ayarlayın: Arduino / Genuino UNO.
- Aynı Araç menüsünden bağlantı noktası numarasını ayarlayın. Bu bağlantı noktası numarası, kontrol panelinde daha önce gözlemlenen bağlantı noktası numarasıyla tam olarak aynı olmalıdır.
- Şimdi, 4 × 4 tuş takımını ve 16 × 2 LCD'yi Arduino IDE ile kullanmak için, Arduino Uno'da kod yazmamıza ve kullanmamıza izin verecek özel kütüphaneleri içe aktarmamız gerekiyor. bu iki kitaplık aşağıda verilen bağlantıya eklenmiştir. Kitaplığı dahil etmek için gidin Eskiz> Kitaplığı Dahil Et> ZIP Kitaplığı Ekle. Bir kutu görünecektir. Bilgisayarınızda ZIP klasörünü bulun ve klasörleri dahil etmek için Tamam'ı tıklayın. Bu kitaplık, aşağıdaki bağlantıdaki kodla birlikte eklenmiştir.
- Aşağıda ekli kodu indirin ve IDE'nize kopyalayın. Kodu yüklemek için yükle düğmesine tıklayın.
Kodu indirmek için burayı tıklayın.
Adım 6: Kodu Anlama
Kod çok iyi yorumlanmış. Ama yine de, kolaylığınız için aşağıda açıklanmıştır.
1. Başlangıçta, başlık dosyaları kitaplıkları içerecek şekilde yazılır, böylece tuş takımı ve LCD Arduino Uno kartı ile arayüz oluşturabilir.
#Dahil etmek// LCD için Başlık dosyasını dahil et #include // Tuş Takımı için Başlık dosyasını dahil et
2. Bundan sonra, tuş takımının satır ve sütun sayısını tutacak iki değişken bildirilir. Tuş eşlemesi, bize tuş takımında bulunan tuşların sırası hakkında bilgi verir.
const bayt SATIRLAR = 4; // Tuş takımı sabit baytının dört satırı COLS = 4; // Tuş takımının üç sütunu // Keymap karakter tuşlarını tanımlayın [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', ' 6 ',' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}};
3. Daha sonra Arduino'nun hangi pinine keypad'in hangi satır ve kolonunun bağlı olduğu belirtilir. Her şey yapıldıktan sonra, tüm pinlerini eşleştirerek bir tuş takımı oluşturulabilir.
bayt rowPins [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2 ve ROW3 tuş takımını sırasıyla bu Arduino pinlerine 0,1,2,3 bağlayın. bayt colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1 ve COL2 tuş takımını sırasıyla 4,5,67 Arduino pinlerine bağlayın. Keypad kpd = Keypad (makeKeymap (anahtarlar), rowPins, colPins, ROWS, COLS); // Tuş Takımını Oluşturun
4. Bundan sonra, LCD'nin hangi pinlerinin Arduino'nun hangi pinlerine bağlı olduğunu söyleriz.
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // LCD'nin bağlı olduğu pinler LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // LCD'yi oluşturun
5. Daha sonra hesaplamaların değerlerini tutmak ve çalışma süresi boyunca işlemleri gerçekleştirmek için bazı değişkenler başlatılır.
uzun Num1, Num2, Sayı; karakter anahtarı, eylem; boole sonucu = yanlış;
6. geçersiz kurulum () devre açıldığında yalnızca bir kez çalışan bir işlevdir. Bu fonksiyonda, Arduino kartının hangi pininin girişi almak için ve hangisinin çıkışı göndermek için kullanılacağını açıklıyoruz. Baud hızı, temelde saniyede bit cinsinden iletişim hızı olan bu işlevde de ayarlanır.
geçersiz kurulum () {Serial.begin (9600); lcd.başla(16, 2); // 16 * 2 LCD ekran kullanıyoruz lcd.print ("Hesap Makinesi"); // Bir giriş mesajı görüntüle lcd.setCursor (0, 1); // imleci sütun 0, satır 1 gecikmesine (1000) ayarlayın; // 1 saniye bekleyin lcd.clear (); // LCD ekranı temizle}
7. CalculateResult ()tuş takımında basılan işareti algılamak için kullanılacak bir işlevdir. basılan işarete göre hangi aritmetik işlemin yapılacağına karar verecektir.
void CalculateResult () {if (action == '+') // + işaretine basılırsa Number = Num1 + Num2; // her iki sayıyı da ekle if (action == '-') // if - işaretine basıldığında Number = Num1-Num2; // her iki sayıyı da çıkar if (action == '*') // eğer * işaretine basılmışsa Number = Num1 * Num2; // her iki sayıyı da çarpın if (action == '/') // eğer / işaretine basılmışsa Number = Num1 / Num2; // her iki sayıyı da bölün}
8. DisplayResult ()sonucu LCD'de görüntülemek için kullanılan bir işlevdir. Her şeyden önce, imleci başlangıç konumuna ayarlar ve ilk sayıyı yazdırır. Ardından mantıksal operatörü ve ardından ikinci sayıyı görüntüler. Ardından “=” işaretini yazdırdıktan sonra cevabı LCD'de gösterecektir.
void DisplayResult () {lcd.setCursor (0, 0); // imleci sütun 0, satır 1'e ayarlayın lcd.print (Num1); // ekrandaki ilk sayıyı yazdır lcd.print (eylem); // ekranda basılan işareti yazdır lcd.print (Num2); // ikinci sayıyı ekrana yazdır if (sonuç == true) // Sonucu görüntüleyin {lcd.print ("="); // ekrana = işaretini yazdırın lcd.print (Sayı); // cevabı ekrana yazdırın}}
9. DetectButtons ()hangi düğmeye basıldığını tespit etmek için kullanılan bir işlevdir. ayrıca düğmeye iki kez basılıp basılmadığını da algılar. Bu işlev, tuş takımında basılacak bir numara döndürecektir.
void DetectButtons () {lcd.clear (); // Sonra temizle if (key == '*') // İptal Düğmesine basılırsa {Serial.println ("Button Cancel"); // bir açıklama yazdır Number = Num1 = Num2 = 0; sonuç = yanlış; } if (key == '1') // Düğme 1'e basılırsa {Serial.println ("Düğme 1"); eğer (Sayı == 0) Sayı = 1; else Sayı = (Sayı * 10) + 1; // İki kez basıldı} if (key == '4') // Düğme 4'e basılırsa {Serial.println ("Button 4"); eğer (Sayı == 0) Sayı = 4; else Sayı = (Sayı * 10) + 4; // İki kez basıldı} if (key == '7') // Düğme 7'ye basılırsa {Serial.println ("Button 7"); eğer (Sayı == 0) Sayı = 7; else Sayı = (Sayı * 10) + 7; // İki kez basıldı} if (key == '0') // Düğme 0'a basılırsa {Serial.println ("Button 0"); eğer (Sayı == 0) Sayı = 0; else Sayı = (Sayı * 10) + 0; // İki kez basıldı} if (key == '2') // Düğme 2'ye Basıldı {Serial.println ("Button 2"); eğer (Sayı == 0) Sayı = 2; else Sayı = (Sayı * 10) + 2; // İki kez basıldı} if (key == '5') // Düğme 5'e Basıldı {Serial.println ("Button 5"); eğer (Sayı == 0) Sayı = 5; else Sayı = (Sayı * 10) + 5; // İki kez basıldı} if (key == '8') // Düğme 8'e Basıldı {Serial.println ("Button 8"); eğer (Sayı == 0) Sayı = 8; else Sayı = (Sayı * 10) + 8; // İki kez basıldı} if (key == '#') // Düğmeye # Basıldı {Serial.println ("Button Equal"); Num2 = Sayı; sonuç = doğru; } if (key == '3') // Düğme 3'e Basıldı {Serial.println ("Düğme 3"); eğer (Sayı == 0) Sayı = 3; else Sayı = (Sayı * 10) + 3; // İki kez basıldı} if (key == '6') // Düğme 6'ya Basıldı {Serial.println ("Button 6"); eğer (Sayı == 0) Sayı = 6; else Sayı = (Sayı * 10) + 6; // İki kez basıldı} if (key == '9') // Düğmeye 09 Basıldı {Serial.println ("Düğme 9"); eğer (Sayı == 0) Sayı = 9; else Sayı = (Sayı * 10) + 9; // İki kez basıldı} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // 4. Sütundaki Düğmeleri Algılama {Num1 = Number; Sayı = 0; eğer (key == 'A') {Serial.println ("Toplama"); eylem = '+'; } if (key == 'B') {Serial.println ("Çıkarma"); eylem = '-'; } if (key == 'C') {Serial.println ("Çarpma"); eylem = '*'; } if (key == 'D') {Serial.println ("Devesion"); eylem = '/'; } gecikme (100); } }
10. geçersiz döngü ()bir döngü içinde tekrar tekrar çalışacak bir işlevdir. Bu işlev, tüm işlemleri gerçekleştirmek için kullanılacak diğer tüm işlevleri çağırmak için kullanılır. Bu işlevler yukarıda açıklanmıştır.
geçersiz döngü () {key = kpd.getKey (); // basılan anahtar değerini bir karakterde depolamak if (key! = NO_KEY) DetectButtons (); // if (sonuç == true) CalculateResult (); // DisplayResult () işlevini çağırın; // işlevi çağırın}
7. Adım: Test Etme
Şimdi tüm bileşenleri birbirine bağladığımız ve kodu mikrodenetleyiciye yüklediğimiz için, hesap makinesinin iyi çalışıp çalışmadığını test edelim. Hesap makinesini test etmek için herhangi bir sayısal tuşa basın. Bundan sonra Birve sonra tekrar herhangi bir sayısal tuşa basın. Bunu yaptığınızda, LCD ekranda her iki sayının eklenmesini gösterecektir.
Arduino kullanarak bir hesap makinesi yapmak ve test etmek için tüm prosedür buydu. Artık evde kendi Arduino tabanlı hesap makinenizi yapmanın keyfini çıkarabilirsiniz.