Programlamaya yeni başlıyorsanız Arduino bu iş için harika bir platformdur. Bu makalemizde Arduino ile keypad ve lcd dokunmatik ekran kullanarak kendi hesap makinemizi oluşturacağız. Bu hesap makinesi Toplama, Çıkarma, Çarpma ve Bölme gibi basit işlemleri tam sayılarla gerçekleştirebilir. Hesap makinesi mantığını kavradıktan sonra bilimsel hesap makinesi bile yapabilirsiniz.
Bu projenin sonunda, Arduino ile 16x2 LCD ve Membran Tuş Takımının nasıl kullanılacağını ve hazır kütüphaneleri kullanarak bunları programlamanın ne kadar kolay olduğunu öğrenmiş olacaksınız. Ayrıca, bu makale ile Arduino'nuzu belirli bir görevi yerine getirmek için nasıl programlayacağınızı da öğrenmiş olacaksınız.
Hesap Makinesi Yapımında Kullanılan Malzemeler:
- Arduino Uno R3
- 16×2 LCD Ekran
- 4×4 Membran Tuş Takımı
- 9V Pil
- Tekli Breadboard
- Jumper Kablo
Hesap Makinesi Arduino Devre Şeması:
Arduino Hesap Makinesi Yapımı Projesinin breadboard ile kablolama ve devre şeması yukarıda verilmiştir. Devre şemasında gösterilen + 5V ve toprak bağlantısı Arduino'nun 5V ve toprak pinine bağlanmalıdır. Arduino usb den veya 9c - 12V adaptör/pil kullanılarak beslenebilir.
LCD'yi Arduino ile 4 bit modunda çalıştırıyoruz, böylece LCD'nin sadece son dört veri biti Arduino'ya bağlı olacaktır. Tuş takımı, yukarıda gösterildiği gibi 0 pininden 7 pinine kadar bağlanması gereken 8 çıkış pinine sahiptir. Arduino ile bağlantınızı doğrulamak için aşağıdaki bağlantı tablosunu kullanabilirsiniz.
…
Arduino Pin Adı: |
KeyPad Pin Adı: |
D0 |
1 |
D1 |
2 |
D2 |
3 |
D3 |
4 |
D4 |
5 |
D5 |
6 |
D6 |
7 |
D7 |
8 |
D8 |
LCD seçme pimini kaydedin (pim 4) |
D9 |
LCD pinini etkinleştir (pin 6) |
D10 |
Veri pimi 4 (pim 11) |
D11 |
Veri pimi 4 (pim 11) |
D12 |
Veri pimi 4 (pim 11) |
D13 |
Veri pimi 4 (pim 11) |
+ 5V |
LCD'nin Vdd pinine bağlı (pin 2) |
Zemin |
LCD'nin Vss, Vee ve RW pinine bağlandı (pin 1-3 ve 5) |
Pin
0 ve pin1'e bağlı bir şey varsa, bazı Arduino panoları program yüklenirken bir hata gösterebilir, bu nedenle herhangi bir sorunla karşılaşırsanız programı yüklerken tuş takımını çıkarın.
Bağlantılarınız tamamlandıktan sonra donanımınız aşağıdaki gibi görünecektir.
Arduino Hesap Makinesi Kodları
Tam Arduino Kodu bu yazının sonunda verilmiştir.
Daha önce de belirtildiği gibi Arduino ile bir LCD ve tuş takımını kütüphaneler kullanarak arayüzleyeceğiz. Önce Arduino IDE'mize ekleyelim. LCD için kütüphane'ye buradan ulaşabilirsiniz. GitHub Tuş takımı kütüphanesine gitmek için tıklayın.
İndirdiğiniz ZIP dosyasını Taslak -> library ekle -> .ZIP Kitaplığı Ekle... ile arduino'ya ekleyin.
Tuş takımını kullanmak için hazır bir kitaplık kullanmış olsak da, Arduino 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ızın kaç satır ve sütuna sahip olduğunu söyleyecektir ve tuş haritası, tuşların klavyede bulunma sırasını gösterir. Bu projede kullandığımız tuş takımı haritası aşağıda gösterilmiştir.
Ayrıca aşağıda , KeyPins ve colPins değişken dizisi kullanılarak Tuş Takımı'nın hangi pinlere bağlandığını da görebilirsiniz.
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
Ne tür bir tuş takımı kullandığımızı ve nasıl bağlandığını belirttikten sonra, aşağıdaki satırı kullanarak tuş takımı ayrıntılarını oluşturabiliriz.
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Create the Keypad
Benzer şekilde
LCD'nin hangi Arduino pinlerine bağlanacağını da eklemeliyiz. Devre şemamıza göre tanımlar aşağıdaki gibi olacaktır.
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //create the LCD
Temel olarak, tuş takımında herhangi bir şey yazılıp yazılmadığını kontrol etmeliyiz, yazıldıysa ne yazıldığını tanımalı ve sonra “=” tuşuna basıldığında bir değişkene dönüştürmeliyiz, sonucu hesaplamalı ve son olarak lcd ekranda göstermeliyiz. Bu, aşağıda gösterildiği gibi döngü işlevi içinde yapılan şeydir.
key = kpd.getKey(); //storing pressed key value in a char
if (key!=NO_KEY)
DetectButtons();
if (result==true)
CalculateResult();
DisplayResult();
Arduino Hesap Makinesi Simülasyonu
Proteus yazılımını kullanarak projeyi simüle etmeyi de deneyebiliriz. Proteus'un kendi başına bir Arduino bileşeni yoktur, ancak kolayca indirilebilir ve kütüphanesine eklenebilir. Proteus'ta Arduino bileşenine sahip olduğunuzda, bağlantıyı devre şemasında gösterildiği gibi yapmak için Alfanümerik LCD ve Tuş Takımı ekleyin.
Daha sonra hex dosyasını Proteus'taki karta çift tıklayarak Arduino'ya ekleyin ve “program file” 'ı indirilen bu hex dosyasına yönlendirin. Simülasyonun anlık görüntüsü aşağıda gösterilmiştir, tüm çalışma aşağıdaki videoda gösterilmiştir.
Hex dosyası nasıl alınır?
Not: Verilen onaltılık dosya, aşağıda verilen programın orijinaliyle aynı değildir. Simülasyon tuş takımının ve gerçek donanım tuş takımının tuş haritası farklı olduğu için değiştirildi.
Arduino Hesap Makinesi'nin Çalışması
Bağlantıları devre şemasına göre yapın ve aşağıdaki kodu yükleyin. Hata gösteriyorsa, kitaplığı yukarıda verilen talimatlara göre eklediğinizden emin olun. Ayrıca sorunun donanımınızla ilgili olup olmadığını kontrol etmek için simülasyonu deneyebilirsiniz. Her şey olması gerektiği gibi yapılırsa, aşağıdaki gibi çalıştığını görmelisiniz.
Burada kullanılan tuş takımının üzerinde uygun işaretler bulunmadığından, 4 işlem (toplama, çıkarma, çarpma, bölme) aşağıda liste şeklinde karşılaştırılmıştır.
…
Tuş takımındaki karakter |
Olduğu varsayılan |
“A” |
Ekleme (+) |
“B” |
Çıkarma (-) |
“C” |
Çarpma işlemi (*) |
“D” |
Bölünme (/) |
“*” |
Açık (C) |
“#” |
Eşittir (=) |
Her düğmenin gerçekte neyi temsil ettiğini yazmak için bir işaretleyici kullanabilirsiniz.
Bunu yaptıktan sonra, hesap makinesini doğrudan kullanmaya başlayabilirsiniz. Numarayı yazın ve ikinci satırda görünecek olan işleme basın ve ikinci numaranızı yazın ve sonunda sonucunuzu almak için “#” tuşuna basın. Bu kadar kolay.