Arduino millis ile aynı anda birden fazla işlem yapma – 2.bölüm – Ders 26 –

Arduino içerisinde millis ve micros komutları ile aynı anda aynı zamanda yapılacak işlerin kontrolü sağlanmaktadır. Bir işlem yaparken arada gecen zamanı yada geçmesini istediğimiz zamanı bu komutlar ile sağlarız. Zaman komutlarıyla bir ledin yanması, bir fanın çalışma süresi, bir sensörün ölçüm aralığı gibi bir çok donanımı kontrol edebiliriz. Delay ve delaymicroseconds arduino içerisinde kullanıldığı satırda algoritmayı bekletirken millis ve micros komutları algoritmayı bekletmeden işlemler yapmaktadır.

Bu yazımızda millis fonksiyonun kullanımına örnek bir proje yapacağız. Basit bir proje olmasına rağmen bir çok projenize ışık tutacak bir örnek olacaktır.

Elimizde 3 adet led olacak bu ledleri yakıp söndüreceğiz. Bir ledin yanıp sönmesi için ledin nekadar yanacağı ve nekadar sönük kalacağını daha önceden delay komutu ile yapmıştık. Delay komutunun kullanım kolaylığının getirdiği avantaja rağmen dezavantajı bizi rahatsız ediyordu. delay kullandığımız satırda algoritma delayın süresi kadar beklemeye geçiyordu yani arduinomuz delayı gördüğü yerde o an ne yapıyorsa o işi yapmaya devam ediyor başka işlere bakmıyordu bu kısa süreli delay kullanımlarında sorun teşkil etmese de uzun zamanlı kullanımda başımıza bela olabiliyordu. İşte tamda burada devreye can kurtaran gibi millis giriyor. millis arduinomuzun elektriği verildiği anda çalışmaya başlayan ve siz millis komutunu kullansanızda kullanmasanızda arka plan sürekli sayan bir kronemetre çalışıyor. Bu kronemetreyi biz delayın yerine kullanabiliyoruz ve üstelik delay gibi kullandığımız zaman algoritmayı durdurmuyor sadece kullandığımız komutların zaman aralığıyla işler yapıyor.
milli ile birden fazla ledi farklı zaman aralıklarıyla yakıp söndürdüğümüz videomu izleyerek millis fonksiyonun kullanımını öğrenebilir ve sizlerde artık delaydan sıkılmışsanız millis’i kullanabilirsiniz.

Videoyu İzlemek İçin Tıklayınız
arduino millis
arduino millis

//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı millis-2.Bölüm - kullanımı örnek Kodları


int sayac;
unsigned long simdikizaman;
unsigned long oncekizaman = 0;
unsigned long oncekizaman_yesil = 0;
unsigned long oncekizaman_sari = 0;
#define kirmizi 2
#define yesil 3
#define sari 4
bool led_durum = HIGH;
bool led_durum_yesil = HIGH;
bool led_durum_sari = HIGH;
void setup() {

  pinMode(kirmizi,OUTPUT);
  pinMode(yesil,OUTPUT);
  pinMode(sari,OUTPUT);
  Serial.begin(9600);
 
}

void loop() {
  
simdikizaman = millis();

    

  if(simdikizaman-oncekizaman >= 500)

  {
      Serial.print("burası ifin icerisi kirmizi:");
      Serial.println(simdikizaman);
      led_durum = !led_durum;
      digitalWrite(kirmizi, led_durum);
      oncekizaman = simdikizaman;
  }



if(simdikizaman-oncekizaman_yesil >= 100)

  {
      Serial.print("burası ifin icerisi yesil :");
      Serial.println(simdikizaman);
      led_durum_yesil = !led_durum_yesil;
      digitalWrite(yesil, led_durum_yesil);
      oncekizaman_yesil = simdikizaman;
  }


if(simdikizaman-oncekizaman_sari >= 1000)

  {
      Serial.print("burası ifin icerisi sari :");
      Serial.println(simdikizaman);
      led_durum_sari = !led_durum_sari;
      digitalWrite(sari, led_durum_sari);
      oncekizaman_sari = simdikizaman;
  }


   
}

//Diğer ledlerin tanımlamasını ve farklı aralıklarla yanmasını siz yapınız