Seven Segment Display Sürme Hata

Amacın SSD de 0 dan 9 a kadar sırayla yazdırmak. Yazdığım kod aşağıdaki gibi. Kodu derleyince hata vermiyor. Fakat Seven iş Seven Segment Dislayi breadboard üzerine kurmaya gelince sıkıntı çıkıyor. Bazen hiç yanmıyor. Bazen enteresan, saçma sapan digit ler yanıyor. Hala üzerinde çalışıyorum fakat beni çok yordu, kafayı takıp tüm pazarımı buna harcadım diyebilirim. Yardımcı olacak arkadaşlara şimdiden teşekkürler. /* Seven Segment Display tüm ledleri sırasıyla yakan program */ int dizi[7]; #define wait_time 1000 void setup() { for(int i=0; i<7; i++) { pinMode(dizi[i], OUTPUT); } } void loop() { int k; for(k=0; k<10; k++) { rakamgoster(k); delay(wait_time); } } void rakamgoster(int rakam) { switch(rakam) { case 0: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); break; case 1: digitalWrite(0, HIGH); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); break; case 2: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); break; case 3: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, LOW); break; case 4: digitalWrite(0, HIGH); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); break; case 5: digitalWrite(0, LOW); digitalWrite(1, HIGH); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); break; case 6: digitalWrite(0, LOW); digitalWrite(1, HIGH); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); break; case 7: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); break; case 8: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); break; case 9: digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); break; } }

kod doğru gibi displayin datasheetine bakın pinleri ve ortak + mı ortak - mi ona göre bir kontrol edin.

Kodun doğru olmasına çok sevindim. Dislayin datasheet ine bakmamıştım, baktıktan sonra deneyip sonucu yazacağım. Çok teşekkür ederim. Sağlıcakla kalın

http://darcy.rsgc.on.ca/ACES/TEI3M/Datasheets/KPS-5161BHBD15.pdf Elimdeki Display in datasheeti bu. Ortak anotmuş yani. Şimdi ne gibi bir değişiklik yapmam lazım tam olarak anlamış değilim

Breadboard’unuzda temassızlıklar da olabilir, tutarlı olarak çalışmıyorsa. Onun dışında pin bağlantılarını kontrol edin. Kodlar ortak anot için yazılmış zaten

Bir sorum daha olacak. Biz ortak katod lu bir display kullansaydık switch içindeki HIGH ve LOW ler yer mi değiştirecekti ve son olarak ben devreyi kurarken direnç kullanmıyorum. Bunun sonuca bir etkisi olur mu ?

ortak katot kullandığınızda lojiği terse çevirmek yeterli olabilir bazı durumlarda araya transistörde skıştırmak gerekebilir. arduino portu ile display arasında 330ohm luk dirençler olmasında fayda var ledler aşırı akım çekip bozulabilir arduinoda aşırı çekilen akımdan dolayı çıkışlar parlak sönük arasında gider gelir. direnç koyun yani. birde sadece tek ledi yakacak şekilde bir blink kodu yazın ledleri tek tek deneyip kontrolu ele alın. yani sırasıyla a-b-c-d-e-f-e-g-x çıkışlarını açıp kapatın ancak bu şekilde bağlantıların doğru ve çalışır olduğundan emin olabilirsiniz sonra 7 segment kodlamasına geçersiniz