Arduino Unoのサンプルスケッチ: フェード

オリジナルのコードでは9番ピンで設定されています。このピンはパルス幅変調(PWM)をサポートするピンの1つであるため、このピンを使用する必要があります。Arduinoの「~」印の出力ピンも、PWM出力に対応しています。analogWrite()関数の値は、引数(0~255)に対してパルス間の間隔を表します。

初期コード例

/*
 Fade

 This example shows how to fade an LED on pin 9
 using the analogWrite() function.

 The analogWrite() function uses PWM, so if
 you want to change the pin you're using, be
 sure to use another PWM capable pin. On most
 Arduino, the PWM pins are identified with 
 a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11.

 This example code is in the public domain.
 */

int led = 9;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 9:
  analogWrite(led, brightness);

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}

初期コード配線図

初期コード例では、搭載されているLEDを使用しているので配線図はありません。

拡張コード

私自身の小さなプロジェクトを行うために、9番ピンにLEDと抵抗を追加し、フェード量と輝度値も変更しました。

整数の「輝度(brightness)」では、初期値を0から10に変更し、薄暗いところからではなく、明るいところからスタートするようにしました。また、整数の「フェード量(fadeAmount)」を5から2に変更しました。そのため、フェードの周期が遅くなります。「if」文の中で、フェードする範囲を0~255から2~150に制限しました。そのため、LEDは初期コード例のように明るくなることはありません。

int led = 9;           // the PWM pin the LED is attached to
int brightness = 10;    // how bright the LED is
int fadeAmount = 2;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 9:
  analogWrite(led, brightness);

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness <=  2|| brightness >= 150) {
    fadeAmount = -fadeAmount;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}

拡張コードの配線図

fadeimage

部品表

カートへのリンク: https://www.digikey.jp/short/w9vmfwq0




オリジナル・ソース(English)