注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
光敏アレイ
このプログラムは、光依存抵抗器からの読み取りを対応する数の点灯するLEDライトに変換し、光の明るさのシンプルなインジケータを作成します。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
全体のキットを購入すると便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
|---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから別々に購入することもできます。
コンポーネント紹介 |
購入リンク |
|---|---|
- |
|
配線図
回路図
コード
注釈
ファイル
04_light_sensitive_array.inoをelite-explorer-kit-main\fun_project\04_light_sensitive_arrayのパスから直接開くことができます。または、このコードをArduino IDEにコピーしてください。
1/*
2 The code reads the ambient light level through a photoresistor and lights up
3 a certain number of LEDs based on the light level. The LEDs serve as a "light level bar."
4
5 Board: Arduino Uno R4
6 Component: Photoresistor and LED
7*/
8
9// Constants for the number of LEDs and their pins
10const int NbrLEDs = 8;
11const int ledPins[] = { 5, 6, 7, 8, 9, 10, 11, 12 };
12
13// Pin for the photoresistor
14const int photocellPin = A0;
15
16// Variables to store sensor and LED level values
17int sensorValue = 0; // value read from the sensor
18int ledLevel = 0; // sensor value converted into LED 'bars'
19
20void setup() {
21 // Initialize all LED pins as outputs
22 for (int led = 0; led < NbrLEDs; led++) {
23 pinMode(ledPins[led], OUTPUT);
24 }
25}
26
27void loop() {
28 sensorValue = analogRead(photocellPin); // Read the ambient light level from the photoresistor
29 ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); // Map the sensor value to the number of LEDs to be lit
30
31 // Update the state of each LED based on the mapped value
32 for (int led = 0; led < NbrLEDs; led++) {
33 if (led < ledLevel) {
34 digitalWrite(ledPins[led], HIGH); // Turn ON LEDs that are below the level
35 } else {
36 digitalWrite(ledPins[led], LOW); // Turn OFF LEDs that are above the level
37 }
38 }
39}
どのように動作しますか?
以下はコードの詳細な説明です:
定数と変数の定義:
NbrLEDs:8個のLEDの存在を定義します。ledPins[]:LEDはArduinoのピン5から12に接続されています。photocellPin:フォトレジスタはArduinoのA0ピンに接続されています。sensorValue:この変数はフォトレジスタから読み取った値を保存します。ledLevel:この変数はsensorValueの変換に基づいてLEDの数を保存します。setup():ピン5から12を出力として設定し、LEDを駆動します。
loop():フォトレジスタのアナログ値をピンA0から読み取ります。通常は0から1023の範囲です。 map関数を使用して、フォトレジスタの値を300-1023の範囲から0-8の範囲にマップします。 これは、光依存抵抗器からの読み取りが300の場合、LEDは点灯しないことを意味します。 読み取りが1023以上の場合、8個のLEDすべてが点灯します。
続くforループは、各LEDをチェックします。そのインデックスがledLevel未満の場合、 LEDを点灯させます。それ以外の場合は、LEDを消灯させます。