01_Light-LED

暗くなったらLEDを光らせる

光センサーで周囲の明るさを測り、暗いときにLEDを点灯します。

光センサーモジュールLEDモジュール
1

準備する

CherryIoTとモジュールを接続する

CherryIoTの指定コネクタに以下のモジュールを接続し、CherryIoTをPCのUSB-A挿入口に接続します。

光センサーモジュール

光センサーモジュール

接続先:A

LEDモジュール

LEDモジュール

接続先:B

2

サンプルコード

GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。

01_Light-LED.ino
GitHubで開く
GitHubからコードを読み込んでいます...
3

プログラムを書き込む

上のサンプルコードをコピーし、Arduino IDEに貼りつけます。

ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。

初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。

4

動作確認

Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

Arduino IDEでシリアルモニターを表示する場所

暗いときにLEDが点灯し、明るくすると消灯するなら成功です。

動作中、シリアルモニターには測定した明るさと、判定結果の「Bright」または「Dark」が表示されます。

5

コードの解説

測定した明るさをしきい値と比較し、暗いときだけLED出力をHIGHにします。

01_Light-LED.ino
GitHubで開く
GitHubからコードを読み込んでいます...

const int litsnsrPin = 3;コネクタAの光センサーに対応するGPIO3を、定数litsnsrPinへ保存します。

const int ledPin = 4;コネクタBのLEDに対応するGPIO4を、定数ledPinへ保存します。

void setup() {setup関数は、CherryIoTの電源を入れたときやリセットしたときに1回だけ実行されます。ここでシリアル通信と、光センサーおよびLEDの端子を使う準備をします。

Serial.begin(115200);明るさと判定結果をPCへ表示するため、115200bpsでシリアル通信を開始します。

pinMode(litsnsrPin, INPUT);光センサーから届く信号を読み取れるように、litsnsrPinをINPUT(入力)に設定します。

pinMode(ledPin, OUTPUT);LEDへ信号を送れるように、ledPinをOUTPUT(出力)に設定します。

void loop() {loop関数はsetup関数のあとに繰り返し実行されます。光センサーで明るさを測り、その結果に応じてLEDの点灯と消灯を切り替えます。

float litsnsr_ad = analogRead(litsnsrPin);analogReadで光センサーのアナログ信号を読み取り、0から4095までの数値をfloat型の変数litsnsr_adへ保存します。float型は小数を扱える変数の型です。

float litsnsr_v = litsnsr_ad * 3.3 / 4096;読み取った値に3.3を掛けて4096で割り、電圧へ換算した結果をlitsnsr_vへ保存します。

float lux = 10000 * litsnsr_v / (3.3 - litsnsr_v) / 1000;電圧から明るさの目安となるルクスを計算し、luxへ保存します。ルクスは明るさを表す単位です。

Serial.print(lux);計算した明るさをシリアルモニターへ表示します。Serial.printは、表示後に改行しない命令です。

Serial.print(" Lux : ");数値に続けて「 Lux : 」と表示し、このあとの判定結果を同じ行へ並べます。

if (lux > 20) {if文でluxが20より大きいかを確認します。20は明るいか暗いかを分ける基準値で、設置する場所に合わせて変更できます。

digitalWrite(ledPin, LOW);明るい場合はledPinへLOWを出力し、LEDを消灯します。

Serial.println("Bright");明るいと判定したことを示す「Bright」を表示して改行します。

delay(500);0.5秒待ちます。

} else {luxが20以下の場合は、else以降の処理を実行します。

digitalWrite(ledPin, HIGH);暗い場合はledPinへHIGHを出力し、LEDを点灯します。

Serial.println("Dark");暗いと判定したことを示す「Dark」を表示して改行します。

delay(500);0.5秒待ちます。