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 } }