注釈
こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!ラズベリーパイ、アルドゥイーノ、ESP32について、同じ趣味を持つ人々とさらに深く探求しましょう。
参加する理由は?
専門家によるサポート: コミュニティとチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学びと共有: 技術を磨くためのヒントやチュートリアルを交換しましょう。
独占プレビュー: 新製品の発表やちら見せに早期アクセスが可能です。
特別割引: 最新製品を特別割引価格でお楽しみください。
祝祭プロモーションとギブアウェイ: ギブアウェイや休日のプロモーションに参加しましょう。
👉 私たちと一緒に探求し、創造しませんか?[こちら]をクリックして今すぐ参加!
2.12 光を感じる
このレッスンでは、 フォトレジスター (光依存型抵抗器またはLDRとも呼ばれる)をRaspberry Pi Pico 2と共に使用して光の強度を測定する方法を学びます。フォトレジスターは受け取る光の量に基づいて抵抗値が変化します。明るい光では抵抗値が低くなり、周囲の光の変化を検出するのに理想的です。
必要なもの
このプロジェクトには、以下のコンポーネントが必要です。
全てのキットを購入するのが便利ですが、こちらがリンクです:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
Newton Lab Kit |
450以上 |
個別に購入することもできます。以下のリンクからどうぞ。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(10KΩ) |
||
6 |
1 |
回路図

この回路では、10Kの抵抗器とフォトレジスターが直列に接続され、電圧分割器を形成しています。GP28はフォトレジスターの電圧を読み取り、10Kの抵抗器は電流を制限することで保護します。
明るい光: フォトレジスターの抵抗値が減少し、その電圧とGP28の読み取り値が低下します。強い光の下で、その抵抗値はほぼゼロに近づき、GP28はほぼ0を読み取ります。この時、10Kの抵抗器が保護役割を果たし、3.3VとGNDが短絡するのを防ぎます。
暗闇: フォトレジスターの抵抗値が増加し、その電圧とGP28の値が上がります。完全な暗闇では、その抵抗値はほぼ無限大に近く(10Kの抵抗器は無視できます)、GP28はほぼ1023を読み取ります。
計算式は以下の通りです。
Digital Value = (Analog Voltage/3.3V) * 1023
配線図

コードの書き方
注釈
ファイル
2.12_feel_the_light.inoをnewton-lab-kit/arduino/2.12_feel_the_lightから開くことができます。あるいは、このコードを Arduino IDE にコピーしてください。
Raspberry Pi Pico 2 ボードと正しいポートを選択し、「Upload」をクリックします。
const int sensorPin = 28; // GP28(ADC2)に接続されたフォトレジスター
void setup() {
Serial.begin(115200); // シリアルモニターを初期化
}
void loop() {
// フォトレジスターからアナログ値を読み取る
int sensorValue = analogRead(sensorPin);
// シリアルモニターにセンサー値を出力
Serial.println(sensorValue);
delay(500); // 次の読み取り前に半秒待つ
}
コードが実行され、シリアルモニターが開かれている時:
センサー値の観察:
フォトレジスターからのアナログ値を表す数字の流れが見えるはずです。
フォトレジスターとのインタラクション:
フラッシュライトやランプをフォトレジスターに当てると、センサー値は減少します(光が多いほど抵抗が減少するため)。
フォトレジスターを手で覆ったり、暗い場所に置くと、センサー値は増加します(光が少ないほど抵抗が増加するため)。
コードの理解
センサーピンの定義:
sensorPinをGPIO 28に割り当てます。これはアナログ入力に接続されています。
const int sensorPin = 28; // GP28(ADC2)に接続されたフォトレジスター
シリアル通信の初期化:
シリアル通信を開始し、シリアルモニターにメッセージを出力できるようにします。
Serial.begin(115200);
アナログ値の読み取り:
sensorPinでアナログ電圧を読み取り、0から1023の間の値を返します。
int sensorValue = analogRead(sensorPin);
センサー値の出力:
センサー値をシリアルモニターに出力します。
Serial.println(sensorValue);
ディレイの追加:
次の読み取りまで500ミリ秒待ちます。
delay(500);
電圧への変換
実際に読み取られる電圧値を見たい場合は、コードを以下のように修正できます:
const int sensorPin = 28; // GP28(ADC2)に接続されたフォトレジスター
void setup() {
Serial.begin(115200); // シリアルモニターを初期化
}
void loop() {
int sensorValue = analogRead(sensorPin);
// アナログ読み取りを電圧に変換
float voltage = sensorValue * (3.3 / 1023.0);
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" Voltage: ");
Serial.print(voltage);
Serial.println(" V");
delay(500);
}
さらなる探求
光に基づいてLEDを制御する:
フォトレジスターを使用して、光のレベルに基づいてLEDの明るさを制御するか、オン/オフします。
データログ:
環境の変化を監視するために、時間とともに光の強度を記録します。
ナイトライトの作成:
暗くなると自動的に点灯するライトを作成します。
まとめ
このレッスンでは、フォトレジスターをRaspberry Pi Picoと共に使用して光の強度を測定する方法を学びました。電圧分割回路からアナログ電圧を読み取ることにより、光のレベルの変化を検出し、この情報をプロジェクトに活用できます。