You are here

ESP8266でのLED操作

ESP8266-BLADE/LEAF/VEINを対象として、Arduino for ESP8266の利用例を示します。



BLINK:LEDの単純な点滅

Arduino IDEの[ファイル] => [スケッチの例] => [01.Basics]からBlinkを選択してください。
ESP8266-BLADE/LEAFのLEDは16番ピンに接続されているので、スケッチのpinMode(),digitalWrite()の第1引数の13を16に変更します。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(16, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(16, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(16, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

上記のスケッチをコンパイルし、ESP8266-BLADE/LEAFに書き込むと、ボードのLEDが点滅します。



FADE:PWMによるLEDの点滅

Arduino IDEの[ファイル] => [スケッチの例] => [01.Basics]からFadeを選択してください。
ESP8266-BLADE/LEAFのLEDは16番ピンに接続されているので、スケッチの変数ledを9から16に変更します。

通常のArduinoのanalogWrite()の第2引数で指定するPWMの強度は0-255ですが、ESP8266のArduinoの実装の初期値では0-1023になっています。
この上限の値1023は、analogWriteRange()を使用して変更することができるので、setup()の中でanalogWriteRange(255)を実行して、PWMの強度の範囲を通常のArduinoに合わせます。

int led = 16;          // the pin that 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 16 to be an output:
  pinMode(led, OUTPUT);

  analogWriteRange(255) ; // for ESP8266
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 16:
  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);
}

上記のスケッチをコンパイルし、ESP8266-BLADE/LEAFに書き込むと、ボードのLEDが段階的に明るくなったり暗くなったりします。

なお、通常のArduinoも同様ですが、analogWrite()を利用する場合には、必ずしもpinMode()を利用して操作対象のピンを明示的に出力にする必要はありません。したがって、setup()のpinMode()は削除してもLEDは同様に点滅します。

開発ソフト: 
チップファミリー: 
MCUチップ: 
技術: