Merhaba arkadaşlar, bu uygulamamızda 2 adet 7 segment display ve arduino ile 0’dan 99’a kadar sayı yazdırma uygulaması yapacağız.
[embedyt] https://www.youtube.com/watch?v=c5FIQCDnSSA[/embedyt]
Malzeme Listesi
Devre Şeması
Malzeme listesindeki malzemeleri kullanarak devremizi aşağıdaki şemaya uygun olarak kuralım. 2 adet 7 segment display kullanacağız. Birisi onlar basamağını diğeri ise birler basamağını gösterecektir. 0-6 arasındaki pinleri birler basamağını yazdırmak için kullanacağız. 7-13 arasındaki pinleri ise diğer 7 segment e bağlayarak onlar basamağını yazdıracağız.
Burada pin sayımız yetmiyeceği için 0 ve 1 Tx Rx pinlerini de kullandık. İhtiyacımız olduğunda bu pinleri de kullanabiliriz ama kod yükleme işlemi yaparken bu pinlere kablo takılı olmamalıdır yoksa hata verir. Kodu yükledikten sonra 0 1 pinlerine kabloyu takabilirsiniz.
Arduino Kodları
Arduino kodumuzun ilk başında sayilar isminde bir dizimiz var ve bu dizi 0-9 sayılarının binary karşılığını saklamaktadır.
Setup fonksiyonumuzda 0-13 arasındaki pinleri for döngüsü ile OUTPUT (çıkış) olarak tanımladık.
Loop fonksiyonumuzda da for döngüsü kullanarak 0-99 arasındaki sayıları SayiYaz fonksiyonumuza parametre olarak gönderdik. Bu fonksiyonumuz o anki i değerine sahip sayıyı 7 segment display ekranımızda gösterecektir. Gösterdikten sonra ise delay komutu ile 200 milisaniye bekliyoruz. Daha sonra i değerimiz artarak 0 – 99 arasındaki sayıları yazdırıyor. 99 a geldikten sonra for döngüsünden çıkıyor ve loop fonksiyonumuzun başına geldiği için for döngüsüne tekrar giriyor ve 0 dan tekrar yazdırmaya başlıyor.
SayiYaz fonksiyonumuz parametre olarak int veri türünde bir sayi alıyordur. Bu sayıyı biz 0 ile 99 arasında vermeliyiz. Yani 2 basamaklı olarak. Bu fonksiyonumuzda 2 adet int türünde yani tam sayı değişkenimiz vardır. Bunlar onlar ve birler basamağını saklayacaktır. Bir 2 basamaklı sayının onlar basamağını bulmak için 10’a tam olarak bölme işlemi yaparız. Birler basamağını bulmak için de mod 10 yaparak, 10 a bölümünden kalanı buluruz. 2 basamaklı sayımızı birler ve onlar basamağı olarak ayırmış ve değişkenlere atamış olduk. Daha sonra bu onlar ve birler basamağını temsil eden sayıları SayiYazBirler ve SayiYazOnlar fonksiyonlarımıza parametre olarak göndererek bu 2 sayının 2 adet 7 segmentimize yazdırılmasını sağlıyoruz.
SayiYazBirler ve SayiYazOnlar fonksiyonlarımız parametre olarak aldığı tek basamaklı bir sayıyı 7 segment displaye yazdırma işlemini yapıyordur. Aslında bu iki fonksiyonun kodları aynıdır ama tek farkı birisinde pin numaraları 0-6 arası iken diğerinde 7-13 olmasıdır. Tek farkı budur. Bu fonksiyonun nasıl çalıştığı ve mantığı hakkında bir önceki yazımda bahsetmiştim. Buraya tıklayarak o yazıma gidebilirsiniz.
//Sayilar O.Katot 0 1 2 3 4 5 6 7 8 9
int sayilar[] = {0b0111111,0b0000110,0b1011011,0b1001111,0b1100110,0b1101101,0b1111101,0b0000111,0b1111111,0b1101111};
void setup(){
for (int i=0; i <= 13; i++)
pinMode(i,OUTPUT); //Pinleri Çıkış Tanımladık
}
void loop(){
for(int i=0;i<=99;i++){
SayiYaz(i); //0 99 arası sayıları yazdırdık ve 200ms bekledik.
delay(200);
}
}
void SayiYaz(int sayi){
int birlerBas= sayi%10; // 2 Basamaklı sayının birler basamağını bulduk
int onlarBas= sayi/10; // 2 Basamaklı sayının onlar basamağını bulduk
SayiYazBirler(birlerBas); // Birler basamağını sağdaki display'e yazdırdık.
SayiYazOnlar(onlarBas); // Onlar basamağını solaki display'e yazdırdık.
}
void SayiYazBirler(int sayi){
for (int pin = 0, Bit = 0; pin <= 6; pin++,Bit++){ //0 pinden 6. pine kadar digital write
digitalWrite(pin, bitRead(sayilar[sayi], Bit)); //sayilar dizisindeki sayi indisindeki binary olarak
} //sayiyi elde et. Örnek 1 için 0b0000110 . Bitleri sırasıyla oku ve pin numarasına 0(LOW)veya 1(HIGH)
} // olarak digital write ile yazıyoruz. Bu fonksiyon tek bir sayıyı yazdırmak içindir.
void SayiYazOnlar(int sayi){
for (int pin = 7, Bit = 0; pin <= 13; pin++,Bit++){ //üstteki fonskiyon ile aynıdır fakar bu kod onlar
digitalWrite(pin, bitRead(sayilar[sayi], Bit)); //basamağı içindir o yüzden pin numaraları farklıdır.
}
}
0’dan 99’a kadar sayı yazdırma uygulamamız hakkında merak ettiklerinizi veya anlamadığınız şeyleri yorum olarak sorabilirsiniz. İyi çalışmalar dilerim 🙂