LoginSignup
4
3

More than 5 years have passed since last update.

ESP8266/ESP-wroom-02 Advent Calendar 2016 の枠が空いているので調子こいて小ネタを投稿しています。。。


ESP8266でLチカする場合、モード設定用の IO0,IO2,IO15 は避けがちです。

しかし、起動後は普通のGPIOとして使えるので、使わないのは勿体ないです。

IO2 に LED

IO2 に LED をつなぐと、IO2への出力でLチカすることができます。(IO2 → LED → 抵抗 → 3.3V とつなぎます。)

IO2にLEDをつなぐと、副作用(?)として、書き込み中に点滅してくれます。これは、IO2が2番目のUART出力ピンにもなっており、書き込み中に何か出力しているからのようです。

IO0 のボタン

書き込みモードと、普通のブートモードの切り替えのために、IO0 にはタクトスイッチなどをつなぐことが多いと思います。

これも、ユーザープログラムから普通に入力として扱うことができるので、有効活用してみましょう。

IO15 は?

IO15 は GND に落とさなければなりません。ここにLEDを(と抵抗を経由してGNDに)つないでみたのですが、GNDに引っ張り切れないのか、うまく動きませんでした。。。
(回路を工夫すれば使えないことはないのですが、ピンの空きがなくなった場合に考えましょう。。。)

サンプルプログラム

サンプルとして、「ボタンを押してた時間が、点滅の間隔となる」というプログラムを作ってみました。

当然、IO2 に LED、IO0 にボタンをつないでいる前提です。

blink2.ino
int interval = 100;

long prevMillis;
boolean prevButton = false;
boolean bLed = true;

#define PORT_LED 2
#define PORT_SW 0

void setup() {
  Serial.begin(74880);  // 起動時に合わせて74880bpsにする
  delay(10);

  pinMode(PORT_LED, OUTPUT);
  pinMode(PORT_SW, INPUT_PULLUP);
}

void loop() {
  boolean sw = (digitalRead(PORT_SW)==LOW);  // 押されてる:true  離されている:false
  long t = millis();

  if ( sw ) {
    if ( !prevButton) {
      // 押された
      Serial.println("BUTTON_DOWN");
      digitalWrite(PORT_LED, LOW);
      prevMillis = t;
      prevButton = sw;
    }
    // else 押され中→なにもしない
  }
  else {
    if ( prevButton ) {
      // 離された
      Serial.println("BUTTON_UP");
      digitalWrite(PORT_LED, HIGH);
      interval = t - prevMillis;
      prevMillis = t;
      prevButton = sw;
      boolean bLed = false;
    }
    else {
      // 通常時
      if ( prevMillis + interval < t ) {
        bLed = !bLed;
        Serial.println(bLed ? "LOW" : "HIGH");
        digitalWrite(PORT_LED, bLed ? LOW : HIGH);
        prevMillis = t;
      }
    }
  }
  delay(10);  // チャタリング対策とか
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3