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
130,118
Mesajlar
933,300
Kullanıcılar
453,190
Son üye
LegaLiss

Yeni konular

Geri
Üst