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