Arduino While Döngüsü Örneği – Uygulaması

0
3651
Okunma

Arduino While Döngüsü Örneği

Arduino While Döngüsü Örneği

Arduino While Döngüsü Örneği. Bazen belirli bir koşul doğru iken programdaki her şeyin durmasını istersiniz. Bunu bir while döngüsü kullanarak yapabilirsiniz. Bu örnek, 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 çizimde analog pin 0’daki bir fotoresistörün değeri okur ve bunu pin 9 üzerinde bir LED’in sönmesi için kullanır. Ancak dijital pin 2’ye bağlı bir düğmeye basıldığında, program calibrate() adında bir yöntem ç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, çizim ana döngüde devam eder.

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

Donanım

  • Arduino veya Genuino
  • buton veya anahtar
  • photoresistor veya başka bir analog sensör
  • 2 adet 10k ohm dirençler
  • breadboard

“Arduino UNO, elektronik ve kodlamaya başlamak için en iyi tahtadır. Bu, platformla birlikte çalıştığınız ilk deneyiminizse, Arduino UNO, denemelere başlayabileceğiniz en iyi seçimdir. UNO, tüm Arduino ailesinin en çok kullanılan ve içeriği bulunan kartıdır.

Arduino Uno, ATmega328P tabanlı bir mikro denetleyici karttır. 14 adet dijital giriş / çıkış pini (6’sı PWM çıkışı olarak kullanılabilir), 6 analog giriş, 16 MHz kristali, bir USB bağlantısı, bir güç girişi, bir ICSP başlığı ve bir sıfırlama düğmesi vardır. Mikrodenetleyiciyi desteklemek için gereken her şeyi içerir; Başlamak için bir USB kablosuyla bir bilgisayara bağlayın ya da AC-DC adaptörü ya da pille çalıştırın. UNO’yu, yanlış bir şey yapmadan çok fazla endişe etmeden tamir edebilir, en kötü durum senaryosunu değiştirebilirsiniz. Birkaç dolara çip alır ve tekrar kullanabilirsiniz.”

Devre

Analog sensörünüzü (örn. Potansiyometre, ışık sensörü) analog girişe (2) 10K ohm dirençle toprağa bağlayın. Düğmenizi toprağa 10K ohm dirençle tekrar dijital pime bağlayın. LED’inizi, seri olarak 220 ohm dirençli dijital pin 9’a bağlayın.

Kod

/*
Koşullar - while ifadesi
Bu örnek while () ifadelerinin kullanımını göstermektedir.
Basma düğmesine basıldığında, taslak kalibrasyon rutinini çalıştırır.
While döngüsü sırasında sensör okumaları minimum ve maksimum değerini tanımlar.
photoresistor'dan beklenen değerler.

Bu, kalibrasyon örneğindeki bir varyasyondur.

Devre:
- Pim 0'da + 5V'den analoga bağlanan fotodirenç
- Pim 0'da toprağa analog olarak bağlı 10 kilohm direnç
- Dijital pin 9'dan 220 ohm direnç ile toprağa bağlanan LED
- pim 2'den + 5V'ye bağlı buton
- Pin 2'den toprağa bağlanan 10 kilohm direnç

oluşturuldu 17 Oca 2009
değiştirildi 30 Ağu 2011
Tom Igoe tarafından
20 Ocak 2017'de değişiklik
Arturo Guadalupi tarafından

Bu örnek kod kamu malıdır.
http://www.arduino.cc/en/Tutorial/WhileLoop
*/

// Bu sabitler değişmeyecek:
const int sensorPin = A0;       // sensörün bağlı olduğu pin
const int ledPin = 9;           // LED'in bağlı olduğu pin
const int indicatorLedPin = 13; // dahili LED'in takılı olduğunu
const int buttonPin = 2;        // düğmenin bağlı olduğu pin

// Bu değişkenler değişecek:
int sensorMin = 1023;  // minimum sensör değeri
int sensorMax = 0;     // maksimum sensör değeri
int sensorValue = 0;         // sensör değeri

void setup() {
  // LED pinlerini çıkışlar olarak ve switch pinini giriş olarak ayarlayın:
  pinMode(indicatorLedPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
 // düğmesine basıldığında, kalibrasyon okumalarını yapın:
  while (digitalRead(buttonPin) == HIGH) {
    calibrate();
  }
  // kalibrasyon periyodunun sonunu bildirme
  digitalWrite(indicatorLedPin, LOW);

  / sensörü oku:
  sensorValue = analogRead(sensorPin);

  // kalibrasyonun sensör okumasına uygulanması
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  // sensör değeri kalibrasyon sırasında görülen aralık dışındaysa
  sensorValue = constrain(sensorValue, 0, 255);

  // kalibre edilmiş değeri kullanarak LED'i söner:
  analogWrite(ledPin, sensorValue);
}

void calibrate() {
 // Kalibrasyonun gerçekleştiğini göstermek için gösterge LED'ini açınız:
  digitalWrite(indicatorLedPin, HIGH);
  // sensörü oku:
  sensorValue = analogRead(sensorPin);

  // maksimum sensör değerini kaydetmek
  if (sensorValue > sensorMax) {
    sensorMax = sensorValue;
  }

  // minimum sensör değerini kaydetmek
  if (sensorValue < sensorMin) {
    sensorMin = sensorValue;
  }
}

Kaynak:arduino.cc

CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.