Delay komutu yerıne ne kullanılabılır

MERHABA arkadaşlar delay komutunu cok fazla od ıcınde kullanmam gerekıyor buda motorun garip garip donmesıne neden oluyor kod ıyı calısmıyor yerıne millis komutunumu kullanayım daha once kllanmadım servo step rölede kod olarak nasıl yazabilirim delay gibi mi calısıyor mantıgı yada baska cozum var mı

delay komutu kodun akışını durdur. Delay içerisine girilen değer süresince hiç bir işlem yapılamaz. Bu da senkronize çalışan fonksiyonları etkiler. Bu yüzden delay yerine millis komutu tercih edilir. Ancak millis kod akışını durdurmaz. Kartın çalışmaya başladığı andan itibaren geçen süreyi milisaniye cinsinden verir.

Aşağıya örnek kod bırakıyorum. Eğer anlaşılmayan yerler olursa buradan sorman yeterli.

Bu senaryoda bir düğmenin olduğunu düşünelim. Bu düğmeye basıldığında dugmeye_basildi() fonksiyonunun çalıştığını ve düğmeye basıldıktan sonra 5 saniye boyunca basılmasına izin verilmeyeceği bir kod yazalım.

unsigned long simdiki_zaman;
unsigned long dugmeye_basilma_zamani;

void loop(){
    simdiki_zaman = millis();
}

void dugmeye_basildi(){ 
    if ( simdiki_zaman >  duygmeye_basilma_zamani + 5000 ){ 
        duygmeye_basilma_zamani  = simdiki_zaman;

        Serial.println("Düğmeye basıldı.");
    }
    else
    {
        Serial.print("Düğmeye basma engellendi.")
    }

}