Arduino içerisinde bazı işlerimizi döngüye girmeden önce en az bir kere çalıştırmak isteyebiliriz. Do while ile loop gibi çalışabilen fakat şart sağlandığı zaman doğrudan şart devam ettiği sürece çalışabilen while döngüsü şart sağlanmamış dahi olsa do while ile bir kez çalıştırılır.
Do While döngüsü içerisindeki kodların çalışması için bir şart belirtiliyor ve o şart sağlanır sağlanmaz while döngüsü içerisindeki kodlar şart devam ettikçe çalıştırılıyor ve o andaki şart devam ettiği sürece sadece while içerisindeki kodlar çalışıyor. Loop içinde do while kullanılmış ise while ile çalışacak kodlar bir kez çalıştırılıyor.
While döngüsü ile arduino içerisindeki bütün kod blokları sorgusu durur ve sadece while içerisine yönelip o kodlar çalışır. Do while ile şart sağlanmasa dahi bir kez çalışır ve whileden çıkar. Diğer türlü şart sağlanırsa while içine girilir ne zaman şart bozulursa while içerisisinden çıkılır ve diğer kod blokları çalışır daha sonra do ile while arasındaki kod bloğu bir kez çalışır.
Örneğin bir butona basılmışsa while içine girilir butona basıldığı sürece while bloğunun içi çalışır. Lakin do while kullanılmış ise butona basılmamış dahi olsa basılmış gibi bir kez while içindeki kod çalışır yada bir sensörden sıcaklık bilgisi okunurken sıcaklık belirtilen değere ulaşırsa sıcaklık belirtilen değerin altına düşene kadar while içerisi çalışır. Ama do while kullanılmış ise sıcaklık şstenşlen değere gelmese dahi while ile çalışacak kod kod birkez çalıştırılır.
Aşağıdaki kodlardan ve şemadan do while döngüsünün çalışma mantığını kavrayabilirsiniz.
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı do while kullanımı örnek Kodları
int led=2;
int ldr=A0;
int buzzer=3;
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(ldr,INPUT);
pinMode(buzzer,OUTPUT);
}
void loop() {
int ldr_deger = analogRead(ldr);
Serial.println(ldr_deger);
do
{
digitalWrite(led,1);
digitalWrite(buzzer,1);
delay(150);
digitalWrite(led,0);
digitalWrite(buzzer,0);
delay(150);
Serial.println( " while icindeyiz ");
ldr_deger = analogRead(ldr);
}
while(ldr_deger>500);
Serial.println( " while disindayiz ");
digitalWrite(led,1);
delay(500);
digitalWrite(led,0);
delay(500);
}
I really like your writing style, wonderful information, appreciate it for posting :D. “Nothing sets a person so much out of the devil’s reach as humility.” by Johathan Edwards.