ESP32で明るさセンサを使って「部屋が暗くなったらLEDを点灯」させてみた

ESP32で明るさセンサを使って「部屋が暗くなったらLEDを点灯」させてみた

こんにちは!今回はフォトトランジスタを使い、夜になったら光るあれを作ってみました。いわば光スイッチです。

動いている様子

前提知識

この記事はESP32でフォトトランジスタ(明るさセンサ)を使うの続きです。明るさセンサの使い方を知りたい方は上記記事を先にご覧ください。

実行環境

ソフトウェア関連

  • windows10 home
  • Arduino 1.8.5
  • ESP32 core for arduino 1.0.0

使用部品

ESP32のピン配置

回路



前回と同様、センサーの値を読み取るピンをGPIO34(ADC6)に設定。
GPIO22をLED点灯のための出力ピンとして割り当てます。

ソースコード

void setup() {
  pinMode(A6,INPUT);//ADC6を入力に設定
  pinMode(22,OUTPUT);//GPIO22を出力に設定(LED用)
  Serial.begin(115200);//シリアル通信を開始
  delay(1000);//シリアル通信待ち
}

double analogValue;//アナログ変換値を格納する変数
void loop() {
    analogValue = analogRead(A6);//ADC6のアナログ変換値を取得
    Serial.println(analogValue);
    delay(200);

    if(analogValue < 100){ //暗いとき
      digitalWrite(22,HIGH);  //GPIO22のLEDを点灯
    }else{
      digitalWrite(22,LOW);   //LEDを消灯
    }
}

アナログ変換、アナログ変換値については「ESP32でフォトトランジスタ(明るさセンサ)を使う」をご覧ください。

今回は取得したアナログ変換値を閾値としてLEDを点灯するかどうかを決めています。私の部屋の環境では、電気を消した状態で60ぐらいになったので、閾値を100とします。各自の環境でこの値は変えてみてください。

if(analogValue < 100){
    digitalWrite(22,HIGH);
}

の部分。暗いときにはanalogValueは60ぐらいなので、この条件に当てはまり、digitalWrite(22,HIGH) が実行されます。これでLEDが点灯します。
明るくなったらLEDを消灯したいので、全体としてこうしましょう。

if(analogValue < 100){ //暗いとき
  digitalWrite(22,HIGH);  //GPIO22のLEDを点灯
}else{        //明るいとき
  digitalWrite(22,LOW);   //LEDを消灯
}

最後に

今回は明るさの値を使い、いわば光スイッチを作りました。
フォトトランジスタは微弱な明るさの変化も読み取れるので、人が前を通ったら何かをするような人感センサーとしても使用できます。いろいろ夢が広がりますね!

twitterアカウントの方で最新記事のお知らせや記事にならないような小さな情報を小出ししています。もしよろしければフォローお願いいたしますm(__)m

ご覧いただきありがとうございました!

2件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です