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++;
 }
}
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…