Millis() fonksiyonu kullanarak MultiTasking (Çoklu İşlem Örneği)

int maviled = 6; int beyazled = 7; int mavileddurum, beyazleddurum = 0; unsigned long simdikizaman, oncekizaman, oncekizaman2; void setup() { pinMode(maviled, OUTPUT); pinMode(beyazled, OUTPUT); Serial.begin(9600); } void loop() { beyaz(); mavi(); } void beyaz() { simdikizaman = millis(); if (simdikizaman - oncekizaman >= 1000) { if (beyazleddurum == 0) { digitalWrite(beyazled, HIGH); beyazleddurum = 1; } else if (beyazleddurum == 1) { digitalWrite(beyazled, LOW); beyazleddurum = 0; } oncekizaman = millis(); } } void mavi() { if (simdikizaman - oncekizaman2 >= 150) { if (mavileddurum == 0) { digitalWrite(maviled, HIGH); mavileddurum = 1; } else if (mavileddurum == 1) { digitalWrite(maviled, LOW); mavileddurum = 0; } oncekizaman2 = millis(); } }
delayMicroseconds() gecikmesi kullanımı
int maviled = 6; void setup() { pinMode(maviled, OUTPUT); } void loop() { digitalWrite(maviled, HIGH); delayMicroseconds(10000); digitalWrite(maviled, LOW); delayMicroseconds(10000); }
delayMicroseconds() parametre olarak aldığı değer Unsigned Int olduğu için en fazla 16383 değeri alır bunuda gözlerimizle fark etmemiz oldukça zordur. bunun yerine delay() gecikmesi kullanılmalıdır.
delay() gecikmesi kullanımı
int maviled = 6; void setup() { pinMode(maviled, OUTPUT); } void loop() { digitalWrite(maviled, HIGH); delay(1000); // 1 Saniye Bekle digitalWrite(maviled, LOW); delay(1000); // 1 Saniye Bekle }
For Döngüsü kullanarak MultiTasking (Çoklu İşlem Örneği)

int maviled = 6; int yesilled = 5; bool mavileddurum = false; int buton = 3; void setup() { pinMode(maviled, OUTPUT); pinMode(yesilled, OUTPUT); pinMode(buton, INPUT_PULLUP); } void loop() { mavileddurum = !mavileddurum; for (int i = 0; i < 300; i++) { delay(1); digitalWrite(maviled, mavileddurum); } if (digitalRead(buton) == 0) { digitalWrite(yesilled, HIGH); } if (digitalRead(buton) == 1) { digitalWrite(yesilled, LOW); } }