SwitchCase

Bir if ifadesi, iki ayrık seçenek arasından seçim yapmanızı sağlar: TRUE veya FALSE. İkiden fazla seçenek olduğunda, birden fazla if ifadesi kullanabilir veya switch ifadesini kullanabilirsiniz. Anahtar, çeşitli ayrık seçenekler arasından seçim yapmanızı sağlar. Bu eğiticide, bir fotoğraf direncinin istenen dört durumu arasında geçiş yapmak için nasıl kullanılacağı gösterilmektedir: gerçekten karanlık, loş, orta ve parlak.

Bu program önce fotodirenç okur. Ardından, çıktısını dört değerden birine eşlemek için map() işlevini kullanır: 0, 1, 2 veya 3. Son olarak, aşağıdakilerden hangisine bağlı olarak bilgisayara dört iletiden birini yazdırmak için switch() deyimini kullanır. dört değer döndürülür.

Gerekli Donanım

  • Arduino veya Genuino Kurulu
  • fotodirenç veya başka bir analog sensör
  • 10k ohm dirençler
  • bağlantı telleri
  • breadboard

Devre

Fotodirenç, bir voltaj bölücü devresi kullanılarak pim 0'daki analoga bağlanır. 10K ohm'luk bir direnç, voltaj bölücünün diğer tarafını oluşturur ve Analog'dan 0'a topraklama yapar. analogRead() işlevi, makul şekilde aydınlatılmış bir iç mekanda bu devreden yaklaşık 0 ila 600 arasında bir aralık döndürür.

büyütmek için resme tıklayın

Şematik

büyütmek için resme tıklayın

Kod


/*
  Switch statement

  Demonstrates the use of a switch statement. The switch statement allows you
  to choose from among a set of discrete values of a variable. It's like a
  series of if statements.

  To see this sketch in action, put the board and sensor in a well-lit room,
  open the Serial Monitor, and move your hand gradually down over the sensor.

  The circuit:
  - photoresistor from analog in 0 to +5V
  - 10K resistor from analog in 0 to ground

  created 1 Jul 2009
  modified 9 Apr 2012
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/SwitchCase
*/

// these constants won't change. They are the lowest and highest readings you
// get from your sensor:
const int sensorMin = 0;      // sensor minimum, discovered through experiment
const int sensorMax = 600;    // sensor maximum, discovered through experiment

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop() {
  // read the sensor:
  int sensorReading = analogRead(A0);
  // map the sensor range to a range of four options:
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);

  // do something different depending on the range value:
  switch (range) {
    case 0:    // your hand is on the sensor
      Serial.println("dark");
      break;
    case 1:    // your hand is close to the sensor
      Serial.println("dim");
      break;
    case 2:    // your hand is a few inches from the sensor
      Serial.println("medium");
      break;
    case 3:    // your hand is nowhere near the sensor
      Serial.println("bright");
      break;
  }
  delay(1);        // delay in between reads for stability
}

See Also

  • serial.begin()
  • analogRead()
  • map()
  • Serial.println()

  • 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.
  • 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.
  • WhileStatementConditional- Bir düğme okunurken bir sensörü kalibre etmek için while döngüsü nasıl kullanılır?