Arduino While Kullanımı

Arduino While Kullanımı içeriğimizde, While Loop yani While Döngüsü kullanımını anlatıyoruz. Bazen belirli bir koşul doğruyken programdaki her şeyin durmasını istersiniz. Bunu bir while döngüsü kullanarak yapabilirsiniz. Bu içerik aslında bir analog sensörün değerini kalibre etmek için bir while döngüsünün nasıl kullanılacağını gösterir.

Ana döngüde, aşağıdaki çizim analog pin 0’daki bir foto direnç(LDR) değerini okur ve bunu pin 9’daki bir LED’i yakmak için kullanır. Ancak dijital pin 2’ye bağlı bir butona basıldığında program calibrate() adlı bir fonksiyonu çalıştırır. Bu, analog sensörün en yüksek ve en düşük değerlerini arar. Düğmeyi bıraktığınızda program ana döngü ile devam eder.

Bu teknik, aydınlatma koşulları değiştiğinde foto direnç(LDR) için maksimum ve minimum değerleri güncellemenizi sağlar.

Gerekli Malzemeler

  • Arduino Geliştirme Kartı
  • Buton
  • Foto direnç(LDR)
  • 10kΩ direnç x 2

Devre Şeması

Analog giriş 2’deki analog sensörünüzü (örn. potansiyometre, ışık sensörü) 10k ohm’luk bir dirençle toprağa(gnd) bağlayın. Butonu tekrar toprağa 10k ohm’luk bir dirençle dijital pine bağlayın. LED’inizi seri olarak 220 ohm’luk bir dirençle dijital pin 9’a bağlayın.

Arduino While Kullanımı arduino while kullanımı,arduino while break kullanımı,arduino while döngüsü kullanımı,arduino while komutu kullanımı

Arduino Kodu

const int sensorPin = A0;
const int ledPin = 9;          
const int indicatorLedPin = 13; 
const int buttonPin = 2;       


int sensorMin = 1023; 
int sensorMax = 0;     
int sensorValue = 0;         

void setup() {

  pinMode(indicatorLedPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  while (digitalRead(buttonPin) == HIGH) {

    calibrate();

  }

  digitalWrite(indicatorLedPin, LOW);

  sensorValue = analogRead(sensorPin);

  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  sensorValue = constrain(sensorValue, 0, 255);

  analogWrite(ledPin, sensorValue);
}

void calibrate() {

  digitalWrite(indicatorLedPin, HIGH);

  sensorValue = analogRead(sensorPin);

  if (sensorValue > sensorMax) {

    sensorMax = sensorValue;

  }

  if (sensorValue < sensorMin) {

    sensorMin = sensorValue;

  }
}