AnalogWriteMega

Bu örnek 12 LED'i yukarı ve aşağı, birer birer Arduino veya Genuino Mega kartta soluyor ve bu kartın artan PWM özellikli dijital pinlerinden faydalanıyor.

Gerekli Donanım

  • Arduino veya Genuino Mega Kurulu
  • 12 Kırmızı LED
  • 12 220 ohm direnç
  • bağlantı telleri
  • breadboard

Devre

12 LED'in daha uzun, pozitif bacaklarını (anotları) 2-13 ila 220 ohm akım sınırlama dirençlerine sahip dijital pimlere bağlayın. Daha kısa, negatif bacakları (katotlar) toprağa bağlayın.

Şematik

Kod

Aşağıdaki kodun setup() işlevinde, Mega'nın dijital pimlerini 2-13'ü çıkış olarak atamak for() bir for() döngüsü kullanılır.

Ardından, aşağıdaki programın loop() işlevinde, for() döngülerinin iç içe üçlüsü kullanılır.

Bu döngülerin ilki,

for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++)

LED'lerin her birini en alt pimden en yükseğe doğru tek tek hareket ettirir. Bu halkanın bir pimden diğerine hareket etmesine izin verilmeden önce iki şey yapılmalıdır. İlk olarak, LED'i bu kod satırlarından aydınlatırsınız:

for (int brightness = 0; brightness < 255; brightness++) {
analogWrite(thisPin, brightness);
delay(2);
}

Yukarıdaki döngüden her geçişte, değişken parlaklık bir puan artar ve bu değer şu anda ana döngüye seçilmiş olan pime yazılır. Pim maksimum PWM değerine (255) ulaştığında, aşağıdaki döngü devreye girer:

for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(thisPin, brightness);
delay(2);
}

Bu döngü parlaklık değişkeninden bir noktayı çıkarır ve LED'i 0'a düşürür. Sıfıra ulaşıldığında, for() döngüsü için ana devreye girer ve program yukarıda belirtilen tüm adımları tekrarlayarak bir sonraki LED pinine geçer.

/*
  Mega analogWrite() test

  This sketch fades LEDs up and down one at a time on digital pins 2 through 13.
  This sketch was written for the Arduino Mega, and will not work on other boards.

  The circuit:
  - LEDs attached from pins 2 through 13 to ground.

  created 8 Feb 2009
  by Tom Igoe

  This example code is in the public domain.

  http:egitim.aspx?e=AnalogWriteMega
*/


// These constants won't change. They're used to give names to the pins used:
const int lowestPin = 2;
const int highestPin = 13;


void setup() {
  // set pins 2 through 13 as outputs:
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}

void loop() {
  // iterate over the pins:
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    // fade the LED on thisPin from off to brightest:
    for (int brightness = 0; brightness < 255; brightness++) {
      analogWrite(thisPin, brightness);
      delay(2);
    }
    // fade the LED on thisPin from brightest to off:
    for (int brightness = 255; brightness >= 0; brightness--) {
      analogWrite(thisPin, brightness);
      delay(2);
    }
    // pause between LEDs:
    delay(100);
  }
}
[Kodu Al]

See Also

  • for()
  • analogWrite()
  • delay()

  • AnalogInOutSerial- Bir analog giriş pinini okuyun, sonucu eşleyin ve ardından bir LED'i kısmak veya aydınlatmak için bu verileri kullanın.
  • AnalogInput- Bir LED'in yanıp sönmesini kontrol etmek için bir potansiyometre kullanın.
  • Calibration- Beklenen analog sensör değerleri için bir maksimum ve minimum tanımlayın.
  • Fading- Bir LED'in solması için bir analog çıkış (PWM pin) kullanın.
  • Smoothing- Bir analog girişin çoklu okumalarını düzgünleştirin.