Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Diğer => Konuyu başlatan: Andromeda - 16 Mart 2021, 16:49:27

Başlık: Arduino pin low süresi okuma ve dallanma?
Gönderen: Andromeda - 16 Mart 2021, 16:49:27
Bir pinin low(veya high) olma süresini milisaniye cinsinden okuyup belirli değerler arasında ise 4 adet ledi değişik şekilde yakacağım.. bunu en basit şekilde nasıl yapabilirim..timer ve if yapısı kullanacağım ama özellikle timer yapısına yabancıyım arduino da..örneğin 1000 ms den küçükse kırmızı yansın,1000-1300 arası ise sarı led yansın gibi..
devre alt yapısı şu şekilde hazır;
ışık sensörü digital girişe bağlı,4 adet led digital çıkışa bağlı..
basit bir program yazdım..
ışığı engel ile kesince bir adet ledi yakıyorum.. engel kalkınca sönüyor..
bu noktadan ilerleyebilirmiyiz..
0
void setup() {
// put your setup code here, to run once:
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(11,INPUT);
unsigned int sayac;
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2,LOW);
int sayac = digitalRead(11); // 11 nolu pini oku ve sayac değişkenine ata
if (sayac==1)
digitalWrite(2,HIGH);
}
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: sadogan - 16 Mart 2021, 21:00:54
pulseIn fonsiyonu var.
low da kalma süresini bü şekilde ölçebilirsiniz.
sayac=pulseIn(pin,HIGH)
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: fide - 16 Mart 2021, 21:14:36
@sadogan çözümüne alternatif olarak şunu deneyebilirsiniz.
#define sw 11
state=digitalRead(sw);
sayac=0;
while(state==0)
{sayac+=1;
delay(1);
state=digitalRead(sw);
}

Döngü çıkışındaki sayac değeri milisaniye cinsinden beklediği süreyi verir.
if (sayac <1000)
{Bla;bla;bla

}



if ((sayac >=1000)&& (sayac<1300))
{Bla;bla;bla

}

...
Şeklinde devam edersin.
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: Andromeda - 16 Mart 2021, 21:21:55
Sağolun.. :)
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: Andromeda - 17 Mart 2021, 10:13:28
Aşağıdaki kodu çalıştıramadım..sensör çıkışı normalde 0..
engel gelince 1 oluyor..
amaç: engel 3 saniyeden uzunsa kırmızı yansın..küçükse yeşil 1 saniye yanıp sönsün..
ama yeşil led sürekli yanıp sönüyor..
kafam durdu..  :)
unsigned long darbe;

void setup() {
  // put your setup code here, to run once:
   pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(11,INPUT);
   unsigned int sayac;
   
}

void loop() {
 digitalWrite(3,LOW);
  darbe = pulseIn(11, HIGH);
  if (darbe>3000000)
 
  digitalWrite(2,HIGH); //kırmızı led
 
  digitalWrite(3,HIGH);// yeşil led
  delay(1000);
   digitalWrite(3,LOW);
}
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: muuzoo - 17 Mart 2021, 10:18:48
Kodunuzda sadece darbe 3 sn'den uzunsa kırmızı yansın demişsiniz. Ardından da hiç bir koşula bağlı olmadan yeşil ledi yakmışsınız. O yüzden yeşil ledin yandığını görmeniz normal.
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: Andromeda - 17 Mart 2021, 10:25:44
doğru.. kafa durdu dedim ya..gosub gibi birşey yok bu dilde, etiket var ..alışamadım..
ne yapacam..?
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: Andromeda - 17 Mart 2021, 13:07:58
Alıntı yapılan: Andromeda - 17 Mart 2021, 10:25:44doğru.. kafa durdu dedim ya..gosub gibi birşey yok bu dilde, etiket var ..alışamadım..
ne yapacam..?
google a arduino dallanma diye yaz ..herşeyide sorma..kendin uğraş..
Başlık: Ynt: Arduino pin low süresi okuma ve dallanma?
Gönderen: ilyas KAYA - 17 Mart 2021, 14:02:35
void dallanma()    // Basic de  dallanma :

{
.... işlemler

}



void main()

{

dallanma ();  // gosub dallanma gibi 


}


C ve türevlerinde bu şekilde yapılıyor bu arduino ya has bir durum değil. Sanırım Pic basic kullanıyorsun yada proton. Bu şekilde daha çok avantajı var kullanmaya başlayınca göreceksiniz.