Arduino 7 segment 0-99 sayacı 10'u atlıyor

iamironman

Hectopat
Katılım
3 Kasım 2019
Mesajlar
280
Kod aşağıda sorun şu segmentte 9 yandıktan sonra 11 yanıyor 10 hiç yazmıyor. Diğer sayılarda bir problem yok bir türlü çözemedim. Yardım eder misiniz mantığı ile? Teşekkürler.

Kod:
int sayac = 0;
int segmentPin[7] = {2, 3, 4, 5, 6, 7, 8};
int nDisplayPin[2] = {11, 12};
int sayi[10][7] = {
 {1, 1, 1, 1, 1, 1, 0}, // 0
 {0, 1, 1, 0, 0, 0, 0}, // 1
 {1, 1, 0, 1, 1, 0, 1}, // 2
 {1, 1, 1, 1, 0, 0, 1}, // 3
 {0, 1, 1, 0, 0, 1, 1}, // 4
 {1, 0, 1, 1, 0, 1, 1}, // 5
 {1, 0, 1, 1, 1, 1, 1}, // 6
 {1, 1, 1, 0, 0, 0, 0}, // 7
 {1, 1, 1, 1, 1, 1, 1}, // 8
 {1, 1, 1, 1, 0, 1, 1} // 9
};

void setup()
{
 Serial.begin(9600);
 for (int i = 0; i <= 7; i++)
 {
 pinMode(segmentPin[i], OUTPUT);
 }

 for (int i = 0; i <= 2; i++)
 {
 pinMode(nDisplayPin[i], OUTPUT);
 }
}

void loop()
{
 Serial.println("seri haberlesme");
 if (sayac <= 9)
 {
 digitalWrite(nDisplayPin[0], HIGH);
 digitalWrite(nDisplayPin[1], LOW);

 for (int i = 0; i <= 9; i++)
 {
 for (int j = 0; j <= 7; j++)
 {
 digitalWrite(segmentPin[j], sayi[i][j]);
 }
 delay(500);
 sayac++;
 }
 }
 else
 {
 String number = (String)sayac;
 int dsp1 = ((String)number[0]).toInt();
 int dsp2 = ((String)number[1]).toInt();

 for ( int t = 0; t < 25; t++)
 {
 digitalWrite(nDisplayPin[0], LOW);
 digitalWrite(nDisplayPin[1], HIGH);

 for (int j = 0; j <= 7; j++)
 {
 digitalWrite(segmentPin[j], sayi[dsp1][j]);
 }
 delay(10);

 digitalWrite(nDisplayPin[0], HIGH);
 digitalWrite(nDisplayPin[1], LOW);

 for (int j = 0; j <= 7; j++)
 {
 digitalWrite(segmentPin[j], sayi[dsp2][j]);
 }
 delay(10);
 }
 }

 if (sayac >= 99)
 {
 sayac = 0;
 }
 else
 {
 sayac++;
 }
}
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı