volatile unsigned int sayac = 0;
volatile bool olcuyor = false;
const uint8_t kirmizi = PD2,sari = PD3, yesil = PD4,mavi = PD5,sensor = PD7;
const int kirmizi_alt_limit = 100,kirmizi_ust_limit = 130;
const int sari_alt_limit = 130,sari_ust_limit = 150;
const int yesil_alt_limit = 150,yesil_ust_limit = 1550;
//Alt limit ve üst limitler buraya eklenecek
void setup() {
DDRD = (1<<kirmizi)|(1<<sari)|(1<<yesil)|(1<<mavi);
TCCR1A = 0;
TCCR1B = 0x0C;
TCNT1 = 0;
OCR1A = 625;
TIMSK1 = 0x02;
sei();
}
void loop() {
}
ISR(TIMER1_COMPA_vect){
if((PIND & (1<<sensor))>0){
if(!olcuyor){
sayac = 0;
olcuyor = true;
}
else
sayac++;
}
else{
olcuyor = false;
if(sayac >= kirmizi_alt_limit && sayac <= kirmizi_ust_limit)
PORTD = (1<<kirmizi);
if(sayac >= sari_alt_limit && sayac <= sari_ust_limit)
PORTD = (1<<sari);
if(sayac >= yesil_alt_limit && sayac <= yesil_ust_limit)
PORTD = (1<<yesil);
//Diğer ledler için aynıları eklenecek
}
}