Arduino pin low süresi okuma ve dallanma?

..PIND=0 ı göremedim...
PORTD mi?
 
..teşekkürler.Peki sensörün bir kare dalga gönderdiğini düşünürsek, dalganın peryodunu ölçüp
yine aynı şekilde peryodun belirli süre aralıklarında ilgili ledi yakmak istersek nasıl bir değişiklik yapmam gerekir programda..
çünkü portd=0 satırını silsemde her başlangıçda ilk önce ilk ledi (burada kırmızı) yakıyor..
 
sensör için bi değişken atayıp sensör on iken süreyi kaydedip ona göre ledi yakan bi kısım eklenmesi lazım. Yarın akşam bakarım.
 
C++:
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 
  }
}
 

Forum istatistikleri

Konular
129,664
Mesajlar
928,872
Kullanıcılar
452,354
Son üye
brkcmn

Yeni konular

Çevrimiçi üyeler

Geri
Üst