Arduino’da Zaman fonksiyonları ve Çoklu işlem

Arduino’da Zaman fonksiyonları ve Çoklu işlem

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);
  }
}
Yorumlar kapalı.

nurullahozkan@outlook.com.tr