4 Digit 7 Segment Display Uygulaması

4 Digit 7 Segment Display Uygulaması

4 Digit 7 Segment Display Uygulaması

 

Kodlar:

int say=0;
int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;
int digit4 = 9;
int digit3 = 10;
int digit2 = 11;
int digit1 = 12;
int dizi[10][7] = {{0,0,0,0,0,0,1},  // 0 rakamı
                 {1,0,0,1,1,1,1},    // 1 rakamı
                 {0,0,1,0,0,1,0},    // 2 rakamı
                 {0,0,0,0,1,1,0},    // 3 rakamı
                 {1,0,0,1,1,0,0},    // 4 rakamı
                 {0,1,0,0,1,0,0},    // 5 rakamı
                 {0,1,0,0,0,0,0},    // 6 rakamı
                 {0,0,0,1,1,1,1},    // 7 rakamı
                 {0,0,0,0,0,0,0},    // 8 rakamı
                 {0,0,0,0,1,0,0}};   // 9 rakamı
void setup() 
{
   for(int i=2;i<=12;i++)
   {
      pinMode(i, OUTPUT);              
   }
   digitalWrite(digit1, 0);
   digitalWrite(digit2, 0);
   digitalWrite(digit3, 0);
   digitalWrite(digit4, 0); 

   cli();
   TCCR1A = 0;
   TCCR1B = 0;
   TCNT1  = 0;

   OCR1A = 15624;
   TCCR1B |= (1 << WGM12);
   TCCR1B |= (1 << CS12) | (1 << CS10);  
   TIMSK1 |= (1 << OCIE1A);
   sei();
}
ISR(TIMER1_COMPA_vect)
{
   say++; // buradaki kodlar saniyede bir kez çalışır.
}
void loop() 
{
   digitalWrite(digit1, 1);
   digitalWrite(digit2, 0);
   digitalWrite(digit3, 0);
   digitalWrite(digit4, 0);
   for(int j=0;j<=6;j++)
   {
      digitalWrite(j+2, dizi[say%10][j]); 
   }
   delay(5);

   digitalWrite(digit1, 0);
   digitalWrite(digit2, 1);
   digitalWrite(digit3, 0);
   digitalWrite(digit4, 0);
   for(int j=0;j<=6;j++)
   {
      digitalWrite(j+2, dizi[(say/10)%10][j]); 
   }
   delay(5); 

   digitalWrite(digit1, 0);
   digitalWrite(digit2, 0);
   digitalWrite(digit3, 1);
   digitalWrite(digit4, 0);
   for(int j=0;j<=6;j++)
   {
      digitalWrite(j+2, dizi[(say/100)%10][j]); 
   }
   delay(5); 

   digitalWrite(digit1, 0);
   digitalWrite(digit2, 0);
   digitalWrite(digit3, 0);
   digitalWrite(digit4, 1);
   for(int j=0;j<=6;j++)
   {
      digitalWrite(j+2, dizi[(say/1000)%10][j]); 
   }
   delay(5); 
}