SERİAL MONİTÖR VE İKİ ADET 7 SEGMENT DISPLAY

yavuz

Üye
Katılım
9 Ağustos 2022
Mesajlar
45
Aşağıda linki ve kodlaması verilen örnek uygulama, serial monitörden girilen tek basamaklı sayıyı bir adet 7 segment ekrana yazdırma üzerine düzenlenmiştir.

Bu uygulamadaki kodlamayı iki adet 7 segment ekrana iki basamaklı sayıyı yazdırabilmek için hangi değişiklik veya ilave satırlar eklenebilir. İkinci 7 segment ekran pinlerini şemaya nasıl bağlamalıyız?

Bilen arkadaşlardan ricamız olsun…

1660045465253.png

Kod:
//Kütüphane
#include "SevenSeg.h"

//Segmentleri tanımlar A-G: SevenSeg(A, B, C, D, E, F, G);
SevenSeg disp (10,9,8,7,6,11,12);
// 7 segment sayı
const int numOfDigits =1;
//CC(or CA) segment pinleri
int digitPins [numOfDigits]={4};

//Değişkenler
int number=0; // Varsayılan Numara
int flag;

void setup() {

Serial.begin(9600);
//"numOfDigits"Basamak sayılarını tanımlar. "digitPins" ise pin dizilerini tanımlar
disp.setDigitPins ( numOfDigits , digitPins );
//Yalnızca ortak katot 7 segment display'ler içindir.
disp.setCommonCathode();
//PArlaklık kontrolü (values 0-100);
disp.setDutyCycle(50);

}

void loop()
{
//Gelen verilerin mevcut olup olmadığını kontrol eder.
if (Serial.available() > 0)
{
// Yalnızca sayıları çıkarmak için parseInt() kullanacağız:
number = Serial.parseInt();
flag=0;
}

//Geçerli aralık 1 ile 9 arasındadır.
if (number>=1 && number<=9){
//Rakamlar ekrana yazdırılır
disp.writeDigit(number);

//Mesaj seri monitöre( Seri Monitör Arduino IDE'nin 'Araçlar' Menüsünden ulaşabilirsiniz) yalnızca bir kez yazdırır
if (flag==0){
//Numarayı seri monitöre yazdırır.
Serial.print("Number on 7 segment display:");
Serial.println(number);
flag=1;
}
}
}
 
Son düzenleme:
Hem kütüphane kullanıp hemde takılmanıza şaşırdım?
Denediniz mi acaba 2. displayi eklemeyi
 

sayın Ahmet,​

siz ustalar tarif ederlerse deneyeceğiz. yazılım ve kodlama bazında alt yapı olmayınca tıkanıyoruz işte.
 
Öncelikle ben usta değilim hele programlama konusunda hiçbir iddam yok.

Ama programa bakınca 7. satırı göremiyorsanız bence bu projeyi hemen bir kenara bırakıp youtubede onlarca 0'dan arduino programlama dersleri var onlardan birini en başından uygulamalar yaparak izleyip/pekiştirip/öğrenin.

Biz size bu programı istediğiniz hale getirip versek size büyük bir kötülük yapmış olacağız çünkü sadece jumper bağlama kod yükleme yapacaksınız arada olan olayları malesef kaçıracaksınız ve bence programlama öğrenmek zincir gibidir 1 halkası yoksa zincir her zaman eksik kalır ve elimizde 2 parça zincirimiz olur.
 
Bu gibi forumların işlevi sadece "çalış - öğren - uğraş ve becer" olmamalı bence. Örneğin ben şanzıman nedir diye sorsam, "şanzıman şudur ve işlevi budur" diye kısaca yazmak varken, "git ehliyet kursuna yazıl profesyonel ehliyet al mı diyeceksiniz?
Yaşım 66. ingilizce sıfır. Foruma Bir soru sordum. Yukarıda yazdığınız cevaplar yerine üç beş satır kod örneği yazıvermek daha kolay ve işlevsel olurdu.
Yine de teşekkür ederim sayın Ahmet. Sanırım forumda bu üç beş satırı yazabilecek arkadaşlar vardır.
 
Bu gibi forumların işlevi sadece "çalış - öğren - uğraş ve becer" olmamalı bence. Örneğin ben şanzıman nedir diye sorsam, "şanzıman şudur ve işlevi budur" diye kısaca yazmak varken, "git ehliyet kursuna yazıl profesyonel ehliyet al mı diyeceksiniz?
Yaşım 66. ingilizce sıfır. Foruma Bir soru sordum. Yukarıda yazdığınız cevaplar yerine üç beş satır kod örneği yazıvermek daha kolay ve işlevsel olurdu.
Yine de teşekkür ederim sayın Ahmet. Sanırım forumda bu üç beş satırı yazabilecek arkadaşlar vardır.
Genelde hazır program pek vermem kimseye. Bu tavrım okula giderken sıra arkadaşıma da böyleydi şuan burada'da böyle.

7. satır'da yazılan değişken içeriği kaç tane 7 seg displayiniz var onu soruyor.

9. satırda yazılan değişken(array) içeriğine ise displaylerinizin ortak uçları hangi pinlere bağlı onu soruyor.

Paylaşımdan kaçan istemeyen biri değilim;
8 adet 7 seg displayi sürdüğüm konum.

 
İki tane 7 segment bağlayacak kadar GPIO çıkar mı arduino'da? 16 tane pin lazım.
 
Genelde hazır program pek vermem kimseye. Bu tavrım okula giderken sıra arkadaşıma da böyleydi şuan burada'da böyle.

7. satır'da yazılan değişken içeriği kaç tane 7 seg displayiniz var onu soruyor.

9. satırda yazılan değişken(array) içeriğine ise displaylerinizin ortak uçları hangi pinlere bağlı onu soruyor.

Paylaşımdan kaçan istemeyen biri değilim;
8 adet 7 seg displayi sürdüğüm konum.

Sayın Ahmet, ben 5. ve 7. ve 9. satırı da düzenledim aslında. ancak sonrasında çift haneye yazdırmaya gelince iş değişiyor. farklı yazdırma şart ve kodlamaları devreye giriyor. takıldığım yer orası.
onlarca iki ekranlı 0-99 saydırma örneklerini denedim hepsi oldu, ama istediğim iki basamaklı sabit sayıyı yine istediğim zaman yazdırmayı başaramadım. örneğin serial monitöre yazılan iki basamaklı sayıyı ekranda yazsın istiyorum.
yukarıdaki örnekteki tek ekranda tek basamaklı sayıda olduğu gibi...
 
Sayın Ahmet, ben 5. ve 7. ve 9. satırı da düzenledim aslında. ancak sonrasında çift haneye yazdırmaya gelince iş değişiyor. farklı yazdırma şart ve kodlamaları devreye giriyor. takıldığım yer orası.
onlarca iki ekranlı 0-99 saydırma örneklerini denedim hepsi oldu, ama istediğim iki basamaklı sabit sayıyı yine istediğim zaman yazdırmayı başaramadım. örneğin serial monitöre yazılan iki basamaklı sayıyı ekranda yazsın istiyorum.
yukarıdaki örnekteki tek ekranda tek basamaklı sayıda olduğu gibi...
Kodlama bilgim pek fazla değil ancak gördüğüm kadarıyla bütün kod tek basamaklı sayı üzerine yazılmış. İlk basamakta şu ikinci basamakta şu yazsın gibisinden değiştirilmesi gerek en basitinden.
 
İki tane 7 segment bağlayacak kadar GPIO çıkar mı arduino'da? 16 tane pin lazım.
sayın taydin,
İlginiz için teşekkür ederim.
ben soldaki onlar basamağı ekranın 7 segment pinlerinin sadece "1" rakamını yazdıracak şekilde B ve C pinlerini bağlamayı düşünüyorum. bu da en fazla ortak pinle beraber 3 adet pin ihtiyacı olur diye düşünüyorum. yanılıyor muyum?
 
Kodlama bilgim pek fazla değil ancak gördüğüm kadarıyla bütün kod tek basamaklı sayı üzerine yazılmış. İlk basamakta şu ikinci basamakta şu yazsın gibisinden değiştirilmesi gerek en basitinden.
sayın ayarsız, aynen ben de öyle düşündüm, uğraştım ve beceremedim. foruma başvurdum.
 
Hazır çalışan kodu verebilmek için, birisinin senin istediğin devreyi kurması, programda değişiklikleri yapıp sorunları gidermesi lazım. Ancak ondan sonra sana hazır çalışan kod verebilir. Bunun için de belki bir saat belki de daha fazla zaman harcaması gerekecek. O yüzden birisi hemen hazır kod vermedi diye bunu olumsuz olarak algılamamak lazım.

Benim bu devreyi kurup programı da çalışır hale getirmeye vaktim yok. Ben sadece gördüğüm kadarıyla yapılması gerekenleri yazabilirim:

İki segmentin A-G uçlarını paralel bağlıyorsun. numOfDigits değişkenini 2 yapıyorsun. Sonra da ikinci 7 segmentin CC (common cathode ucunu) boş bir pine bağlıyorsun, mesela 3. Sonra da digitPins dizisine 3 ü ilave ediyorsun.
 
Kütüphanenin github sayfası burada biraz aşşağılara bakarsanız.
4 adet 7seg için örnek verilmiş

kendiz kodunuz ile 4lü olanı karşılaştırın 7seg çoğaltmak için neleri değişmeniz gerektiğini göreceksiniz.
 
Hazır çalışan kodu verebilmek için, birisinin senin istediğin devreyi kurması, programda değişiklikleri yapıp sorunları gidermesi lazım. Ancak ondan sonra sana hazır çalışan kod verebilir. Bunun için de belki bir saat belki de daha fazla zaman harcaması gerekecek. O yüzden birisi hemen hazır kod vermedi diye bunu olumsuz olarak algılamamak lazım.

Benim bu devreyi kurup programı da çalışır hale getirmeye vaktim yok. Ben sadece gördüğüm kadarıyla yapılması gerekenleri yazabilirim:

İki segmentin A-G uçlarını paralel bağlıyorsun. numOfDigits değişkenini 2 yapıyorsun. Sonra da ikinci 7 segmentin CC (common cathode ucunu) boş bir pine bağlıyorsun, mesela 3. Sonra da digitPins dizisine 3 ü ilave ediyorsun.
sayın taydın,
ben de olumsuz algılamadım zaten. önerinizi deneyeceğim. noktalı virgül eksiğini bile hazmedemeyen arduıno kodlama dünyasında kütüphane farklılıkları, aynı işlevi yapan bir çok yazdırma komutu farklılıkları internet ortamında örnek almakta bile zorluklar çıkarıyor. biri diğerine uymuyor. tıkanınca foruma "İMDAT" diyoruz.
 
sayın taydın,
ben de olumsuz algılamadım zaten. önerinizi deneyeceğim. noktalı virgül eksiğini bile hazmedemeyen arduıno kodlama dünyasında kütüphane farklılıkları, aynı işlevi yapan bir çok yazdırma komutu farklılıkları internet ortamında örnek almakta bile zorluklar çıkarıyor. biri diğerine uymuyor. tıkanınca foruma "İMDAT" diyoruz.
kütüphane kullanmayabilirsiniz.

baştan sonra kendiniz yazarsanız sabır edip uğraşıp her türlü sonunda en ufak yere müdahale edebilirsiniz.

ben şahsen en baştan beri olabildiğince az kütüphane kullanıyorum buton okumanın bile kütüphanesi var.
kullandığım birkaç kütüphane var onlarıda öğrenmeye gerek duymadım diye kullanıyorum lcd,lcd_ı2c kütüphaneleri.

Size de tavsiyem kütüphane kullanmayın.
çünkü kütüphaneyi genelde basit çaplı geliştiriciler oluşturuyor programınız bu geliştirici arkadaşların yazabildiği kütüphane kadar başarılı çalışacaktır.
 
kütüphane kullanmayabilirsiniz.

baştan sonra kendiniz yazarsanız sabır edip uğraşıp her türlü sonunda en ufak yere müdahale edebilirsiniz.

ben şahsen en baştan beri olabildiğince az kütüphane kullanıyorum buton okumanın bile kütüphanesi var.
kullandığım birkaç kütüphane var onlarıda öğrenmeye gerek duymadım diye kullanıyorum lcd,lcd_ı2c kütüphaneleri.

Size de tavsiyem kütüphane kullanmayın.
çünkü kütüphaneyi genelde basit çaplı geliştiriciler oluşturuyor programınız bu geliştirici arkadaşların yazabildiği kütüphane kadar başarılı çalışacaktır.
onu da (kendi kodlamamı da) denedim, ama tıkandım.
 
Son düzenleme:
Hazır çalışan kodu verebilmek için, birisinin senin istediğin devreyi kurması, programda değişiklikleri yapıp sorunları gidermesi lazım. Ancak ondan sonra sana hazır çalışan kod verebilir. Bunun için de belki bir saat belki de daha fazla zaman harcaması gerekecek. O yüzden birisi hemen hazır kod vermedi diye bunu olumsuz olarak algılamamak lazım.

Benim bu devreyi kurup programı da çalışır hale getirmeye vaktim yok. Ben sadece gördüğüm kadarıyla yapılması gerekenleri yazabilirim:

İki segmentin A-G uçlarını paralel bağlıyorsun. numOfDigits değişkenini 2 yapıyorsun. Sonra da ikinci 7 segmentin CC (common cathode ucunu) boş bir pine bağlıyorsun, mesela 3. Sonra da digitPins dizisine 3 ü ilave ediyorsun.
Sayın T.Aydın,
Aşağıda görüleceği üzere kod önerilerinizi ve pin bağlantılarını aynen uyguladım. Hata vermedi, yükleme tamamlandı.
Ancak seri monitörden gönderdiğim 15 sayısını yazmadı. Gönderdiğim iki basamaklı sayıların hiçbirini yazmadı. Ekranların ikisi de sönük kalıyor.
Bu durumdayken tek basamak sayı gönderdiğimde sağdaki ekran yazıyor.
Sanırım 40. SATIR dan sonra birler - onlar basamağını düzenleyip yazdıran kod satırları gerekiyor. evvelki uğraşılarımda da buna benzer sorunları aşamamıştım.


Kod:
#include "SevenSeg.h"

//Segmentleri tanımlar A-G: SevenSeg(A, B, C, D, E, F, G);
SevenSeg disp (10,9,8,7,6,11,12);
// 7 segment sayı
const int numOfDigits =2;
//CC(or CA) segment pinleri
int digitPins [numOfDigits]={3,4};

//Değişkenler
int number=0; // Varsayılan Numara
int flag;

void setup() {

Serial.begin(9600);
//"numOfDigits"Basamak sayılarını tanımlar. "digitPins" ise pin dizilerini tanımlar
disp.setDigitPins ( numOfDigits , digitPins );
//Yalnızca ortak katot 7 segment display'ler içindir.
disp.setCommonCathode();
//PArlaklık kontrolü (values 0-100);
disp.setDutyCycle(90);

}

void loop()
{
//Gelen verilerin mevcut olup olmadığını kontrol eder.
if (Serial.available() > 0)
{
// Yalnızca sayıları çıkarmak için parseInt() kullanacağız:
number = Serial.parseInt();
flag=0;
}

//Geçerli aralık 1 ile 99 arasındadır.
if (number>=1 && number<=99){
//Rakamlar ekrana yazdırılır
disp.writeDigit(number);

//Mesaj seri monitöre( Seri Monitör Arduino IDE'nin 'Araçlar' Menüsünden ulaşabilirsiniz) yalnızca bir kez yazdırır
if (flag==0){
//Numarayı seri monitöre yazdırır.
Serial.print("Number on 7 segment display:");
Serial.println(number);
flag=1;
}
}
}
 
Son düzenleme:
39 satırda writeDigit yerine sadece write dene. Kütüphane koduna bakılınca writeDigit sadece bir hane yazdığı görülüyor.
 

Forum istatistikleri

Konular
5,833
Mesajlar
99,481
Üyeler
2,478
Son üye
TA3CD

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top