EmirBeyhan Arduino'da yazdığım kod if döngüsünün içinde bu yüzden her şart sağlandığında 1 defa çalışmalı Kod = Digitalwrite(role, High); Delay(6000); Digitalwrite(role, Low); 6 Saniyelik delay yerine millis kullanmalıyım ama burada Low'dan sonra bir bekletme verilmemeli.
Halil Han BADEM EmirBeyhan Merhabalar, güzel bir örnek buldum: void setup() { pinMode(13,OUTPUT); Serial.begin(9600); } /* zaman değerlerinin tutulması için değişkenler tanımlanmalı */ unsigned long eskiZaman=0; unsigned long yeniZaman; int LEDdurumu = 0; void loop() { /* Arduinonun çalışma suresi milisaniye cinsinden alınıyor */ yeniZaman = millis(); /* bir önceki turdan itibaren 1000 milisaniye geçmiş mi yani yeniZaman ile eskiZaman farkı 1000den büyük mü */ if(yeniZaman-eskiZaman > 1000){ if(LEDdurumu == 1){ digitalWrite(13,LOW); LEDdurumu = 0; }else{ digitalWrite(13,HIGH); LEDdurumu = 1; } /* Eski zaman değeri yeni zaman değeri ile güncelleniyor */ eskiZaman = yeniZaman; } /*Ekrana sürekli olarak mesaj yazdırılıyor */ Serial.println("Arduino burada baska islemler de yapabilir."); /* Bekleme fonksiyonunun kullanılmasına gerek yok fakat ekrana çok hızlı yazdırmamak için biraz bekleme kullanıyoruz */ delay(10); } Kaynak: https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-201/millis-fonksiyonu-nedir-ve-nerelerde-kullanilir
EmirBeyhan Halil Han BADEM buradaki problem malesef şu led yanıp sönüyor yani blink uygulamasına denk. örneğin, butona basıldığında if buton hıgh ise millis tekniği ile led 6 saniye yansın sonra hemen sönük if ten çıksın ve şart sağlanmadığı durumlarda asla döngüye girmsin. Bununla ilgili örnek yok. Millis konusu fazla detaya inilerek ve fazla örneklerle hiçbir yerde anlatılmıyor 🙁
Halil Han BADEM EmirBeyhan Merhaba, bildiğiniz üzere loop() fonksiyonu sürekli kodu tekrarlayan kod alanıdır. Milis ile saniyeyi tutup if ile kontrol edip eğer döngüden çıkmasını sağlayabilirsiniz. Aklıma bu şekilde bir mantık geldi 🙂