Eğitimler
WhileStatementConditional
Bazen belirli bir koşul geçerliyken 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 while döngüsünün nasıl kullanılacağını gösterir.
Ana döngüde, aşağıdaki çizim, analog pim 0'daki bir fotorezistörün değerini okur ve pim 9'daki bir LED'i solmak için kullanır. Ancak dijital pim 2'ye eklenmiş bir düğmeye basıldığında, program calibrate()
adlı bir yöntem çalıştırır. analog sensörün en yüksek ve en düşük değerlerini arar. Düğmeyi bıraktığınızda, çizim ana döngü ile devam eder.
Bu teknik, aydınlatma koşulları değiştiğinde fotodirenç için maksimum ve minimum değerleri güncellemenizi sağlar.
Gerekli Donanım
- Arduino veya Genuino Kurulu
- buton veya anahtar
- fotodirenç veya başka bir analog sensör
- 2 adet 10k ohm direnç
- breadboard
Devre
Analog sensörünüzü (örn. Potansiyometre, ışık sensörü) 10K ohm direnç ile analog giriş 2'ye bağlayın. Düğmenizi tekrar 10K ohm dirençle toprağa dijital pime bağlayın. LED'inizi 220 ohm'luk bir seri dirençle dijital pim 9'a bağlayın.
büyütmek için resme tıklayın
Şematik
büyütmek için resme tıklayın
Kod
Conditionals - while statement
This example demonstrates the use of while() statements.
While the pushbutton is pressed, the sketch runs the calibration routine.
The sensor readings during the while loop define the minimum and maximum of
expected values from the photoresistor.
This is a variation on the calibrate example.
The circuit:
- photoresistor connected from +5V to analog in pin 0
- 10 kilohm resistor connected from ground to analog in pin 0
- LED connected from digital pin 9 to ground through 220 ohm resistor
- pushbutton attached from pin 2 to +5V
- 10 kilohm resistor attached from pin 2 to ground
created 17 Jan 2009
modified 30 Aug 2011
by Tom Igoe
modified 20 Jan 2017
by Arturo Guadalupi
This example code is in the public domain.
http:egitim.aspx?e=WhileLoop
*/
// These constants won't change:
const int sensorPin = A0; // pin that the sensor is attached to
const int ledPin = 9; // pin that the LED is attached to
const int indicatorLedPin = 13; // pin that the built-in LED is attached to
const int buttonPin = 2; // pin that the button is attached to
// These variables will change:
int sensorMin = 1023; // minimum sensor value
int sensorMax = 0; // maximum sensor value
int sensorValue = 0; // the sensor value
void setup() {
// set the LED pins as outputs and the switch pin as input:
pinMode(indicatorLedPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
// while the button is pressed, take calibration readings:
while (digitalRead(buttonPin) == HIGH) {
calibrate();
}
// signal the end of the calibration period
digitalWrite(indicatorLedPin, LOW);
// read the sensor:
sensorValue = analogRead(sensorPin);
// apply the calibration to the sensor reading
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
// in case the sensor value is outside the range seen during calibration
sensorValue = constrain(sensorValue, 0, 255);
// fade the LED using the calibrated value:
analogWrite(ledPin, sensorValue);
}
void calibrate() {
// turn on the indicator LED to indicate that calibration is happening:
digitalWrite(indicatorLedPin, HIGH);
// read the sensor:
sensorValue = analogRead(sensorPin);
// record the maximum sensor value
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// record the minimum sensor value
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
See Also
- while()
- digitalRead()
- digitalWrite()
- analogRead()
- analogWrite()
- map()
- constrain()
- if()
- Arrays- Loop için bir dizinin nasıl kullanılacağını gösteren bir varyasyon.
- ForLoopIteration- for döngüsü ile birden fazla LED'i kontrol edin.
- IfStatementConditional- Giriş koşullarını değiştirmek için çıkış koşullarını değiştirmek üzere bir 'if deyimi' kullanın.
- switchCase- Farklı sayıda değer arasında seçim yapma.
- switchCase2- Seri bağlantı noktasında alınan karakterlere göre farklı eylemlerin nasıl yapılacağını gösteren ikinci bir anahtar durum örneği.