目次
ESP32で明るさセンサを使って「部屋が暗くなったらLEDを点灯」させてみた
こんにちは!今回はフォトトランジスタを使い、夜になったら光るあれを作ってみました。いわば光スイッチです。
動いている様子
ESP32で「暗くなるとLEDが点灯するやつ」。フォトトランジスタの値がある閾値を下回った時にLEDが点灯します。#ESP32 #電子工作 pic.twitter.com/eENFZ13tcA
— ????????????-???????????????? (@wak_tech) January 4, 2019
前提知識
この記事はESP32でフォトトランジスタ(明るさセンサ)を使うの続きです。明るさセンサの使い方を知りたい方は上記記事を先にご覧ください。
実行環境
ソフトウェア関連
- windows10 home
- Arduino 1.8.5
- ESP32 core for arduino 1.0.0
使用部品
- ESP32 dev module
- サンハヤト ブレッドボード
- ジャンプワイヤ
- フレキシブルジャンプワイヤ
- 赤色LED
- フォトトランジスタ
- 抵抗(フォトトランジスタ側は10kΩ、LED側は510Ω)
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
ご覧いただきありがとうございました!
arduino と変わらないなあ
ピンバック: ESP32で始めるIoT電子工作入門【20個のチュートリアル】 | Wak-tech