Arduino ile 7 Segment Sayıcı (0-9 Sayıcı)

Arduino ile yapılmış temel devrelerden birisi. Ortak Anot 7 segment display kullanılarak 0-9 sayıcı devresi yapılmıştır. Similayonda ortak anoda bağlı direnç digital olarak ayarlanmalıdır.

#define btnUp  8
#define btnDwn 9
//-------------------------
uint8_t ledKod[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};//ortak anot kod
uint8_t sayi=0;
//--------------------------------
void setup() {
  DDRD=0xFF;  //PORTD çıkış
  pinMode(btnUp,INPUT_PULLUP); //giriş ve dahili pullup aktif
  pinMode(btnDwn,INPUT_PULLUP);//giriş ve dahili pullup aktif
  PORTD=ledKod[sayi]; //başlangıç değeri
}
//-------------------------------------
void loop() {
  if(!digitalRead(btnUp)&&sayi<9)
  {
    sayi++;
    PORTD=ledKod[sayi];
    delay(100);
    while(!digitalRead(btnUp));  //butondan el çekene kadar bekle
  }
 if(!digitalRead(btnDwn)&&sayi>0)
  {
  sayi--;
  PORTD=ledKod[sayi];
  delay(100);
  while(!digitalRead(btnDwn)); //butondan el çekene kadar bekle 
  } 
}

Kodlarda tekrarlar  sadeleştirilirse aşağıdaki gibi yazılabilir.

#define btnUp  8
#define btnDwn 9
//----------------------
uint8_t ledKod[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};//ortak anot kod
uint8_t sayi=0;
//------------------------------
void setup() {
  DDRD=0xFF;  //PORTD çıkış
  pinMode(btnUp,INPUT_PULLUP); //giriş ve dahili pullup aktif
  pinMode(btnDwn,INPUT_PULLUP);//giriş ve dahili pullup aktif
  PORTD=ledKod[sayi]; //başlangıç değeri
}
//---------------------------
void loop() {
  if(!digitalRead(btnUp)||!digitalRead(btnDwn)
  {
    if(!digitalRead(btnUp)&&sayi<9)  sayi++;
    if(!digitalRead(btnDwn)&&sayi>0) sayi--;
    PORTD=ledKod[sayi];
    delay(180);// buton arkı iiçin bekle
  }
}

Yorum bırakın