ブザーと点滅LEDを備えたArduino光センサー:5ステップ

ブザーと点滅LEDを備えたArduino光センサー:5ステップ

目次:

Anonim

これは私が私の娘と一緒に作成したかなりクールなプロジェクトです。最終的な製品は楽しいですし、彼らが訪問しに来たときにショーアンドテルのために学校に連れて行くかあなたの親戚を見せるためにあなたにクールな何かを与えます!

それは他の3つの小さなArduinoプロジェクトの組み合わせです。

- フォトセルを使った光センサー

- ピエゾブザーを使用して、さまざまなトーンと速度のビープ音を作成し、

- 可変速度で一連のLEDを点滅させる

最終製品は、(a)より多くの光でより速く(そしてより少なくより遅く)点滅し、(b)より速くそしてより高いピッチでより多くの光で(そしてより遅くそしてより低いピッチでより少なく)一連のLEDを有する光センサーである。

Fritzingを使用してブレッドボードダイアグラムを作成したときに、元のブレッドボードから調整を加えて、ワイヤなどを視覚化することが明確になるようにしました。

必要なもの

- ブレッドボード

- Arduino Uno

- 5つのLED

- 太陽電池

- ピエゾスピーカー

- 5×220Ω抵抗(LED用)

- 500Ω抵抗器(太陽電池用)

- 100オーム抵抗(圧電ブザー用)

正直に言うと、他の人が行った作業やオンラインで見つけた他のプロジェクトに基づいてこれらの抵抗器を選択しました。その背後に科学と公式があると確信していますが、あなたはそれをこのInstructableで見つけることができないでしょう、申し訳ありません。

用品:

ステップ1:ステップ1 - 最初のLEDを配線する

基本から始めましょう。基板をGNDと5Vピンに接続し、プラスとマイナスのレールをブレッドボードの反対側に接続するジャンパがあることを確認します。それらを「アクティブ」にして、ブレッドボードをまたがずに回路を構築できます。過度に。

私たちは、独立して動作するLEDのシーケンスを作りたいと思います。

最初のLEDを接続しましょう。 LEDのプラス側はピン13に接続します。LEDのマイナス側は220オームの抵抗器に接続します。そしてそれは次にGNDに接続されます。

ステップ2:ステップ2 - 他の4つのLEDを配線する

同じ計画に従って、他の4つのLEDを配線します。それぞれ220オームの抵抗を使用して、プラス側をそれぞれピン12、11、10、9に、マイナス側をグランドに接続します。

LEDの準備が整いました。個別のPINを介してLEDを個別に制御できます。

ステップ3:ステップ3 - ピエゾを配線する

私達は私達のセンサーがビープ音を発したいと思います。そのためにはPiezoブザーを使用しますので、配線しましょう。

マイナス線はGNDに接続し、プラス線は最初に7番ピンではなく100オームの抵抗に接続します。前に述べたように、100オームの抵抗は私がオンラインで見つけた他のプロジェクトで提案されています。

ステップ4:ステップ4 - 太陽電池セルを配線する

光電池は、光にさらされるとより導電性になる単純な抵抗器です。そのため、ゼロの光では100%の電流が遮断され、フルライトでは電流が流れます。 Arduinoがこれを「読む」方法は、ゼロライトが0の値を返し、フルライトが1024の値を返すことです。

太陽電池には、マイナス面とプラス面がありません。そのため、片側をボードのプラス側のレールに配線します。マイナス側の配線は少し複雑です:あなたはそれを接続します 両方 (a)500オームの抵抗を使って負のレールに そして (b)直接ピンA0に。

回路は準備ができています。コードを見てみましょう。

ステップ5:ステップ5 - コード

あなたはカットアンドペーストするために以下の完全なコードを見つけるでしょう。どこに何が起きているのか理解できるように、//コメントがあります。

これがコードがしていることです。

1 - センサーは光のレベルを読み取り、0〜1024の範囲で測定します

2 - この測定値を、ブザーを鳴らしてLEDを点滅させる命令に「翻訳」します。

3 - LEDの場合、ライトの読み取り値をミリ秒単位の点滅に変換します。光が少ないほど、ゆっくり点滅します。いくつかのテストをして、たとえ光が強い時でさえ、それは700か800(1024に到達するのが難しい)ではないので、私は私の「最高の」光レベルとして700を使いました。 MAP関数が機能する方法のために、光が700以上に達すると、それは点滅時間を負の数に変えるでしょう - そして全体がクラッシュします。そのため、Blink_Timeを20ミリ秒より短くすることはできないという規則を作成しました。

4 - LEDが順番に点灯します(つまり、最初のLEDが点灯し、次に消灯すると次のLEDが点灯します)。

5 - ブザーについては、光の読み(0 - 1024)をヘルツ(120 - 1500)に変換するので、光が多いほどピッチが高くなります。

6 - 1番目、3番目、5番目のLEDと同時に(そして販売期間中)ブザーが鳴り、LEDが一時停止します。これは脈動する効果、光と音を同じリズムで作ります。

これです。楽しめ!

コード:

//空港のようなビープ音とLEDの並びを持つ光センサー

//点滅のための整数

int Blink_Time = 20。 //点滅と間隔の長さに使用されるこの変数を作成します

int Light_Level = 0。 //光のレベルに使用されるこの変数を作成します

int Light_Pin = A0。 //ピン0はフォトセルに使用されます

//ブザー用の整数

int Buzz_Tone = 300; //ブザー音用にこの変数を作成します

int Buzz_Tone_Max = 1500; //バズトーンの最大ヘルツ

int Buzz_Tone_Min = 120。 //話題のトーンの最小ヘルツ

void setup(){

pinMode(9、OUTPUT); // Pint 9 - 13をledの出力として初期化する

pinMode(10、OUTPUT);

pinMode(11、OUTPUT);

pinMode(12、OUTPUT);

pinMode(13、出力);

pinMode(7、OUTPUT); //ブザーを設定します - ピン7はブザーの出力として

Serial.begin(9600); Serial.println( "Ready"); //変数の動作を監視するために9600ボーでシリアルポートを開く

}

void loop(){

Light_Level = analogRead(Light_Pin); //光量を読み取ります

Blink_Time = map(Light_Level、0、700、300、1); //明るさのレベルに応じて点滅時間を設定します

if(Blink_Time <= 20){Blink_Time = 20;} //点滅時間の最小制限を設定します。ライトレベルが700を超える可能性があるため、マッピング機能により瞬き時間がマイナスになることがあり、その場合はプログラムがフリーズします。

//明るさに応じてバズ音を設定します(明るさが増し、ヘルツが大きくなり、ピッチが高くなります)。

Buzz_Tone = map(Light_Level、0、700、Buzz_Tone_Min、Buzz_Tone_Max);

//シリアルモニタにすべての変数を表示して、何が起こっているのかを確認します。

Serial.print( "Light level =");

Serial.print(Light_Level);

Serial.print( "Blink time =");

Serial.print(Blink_Time);

Serial.print( "Buzz_Tone =");

Serial.print(Buzz_Tone);

Serial.println( "");

//最初のLED

トーン(7、Buzz_Tone)。 //最初のLEDが点灯するのと同時にビープ音を鳴らす

digitalWrite(9、HIGH); // LEDを点灯させる(HIGHは電圧レベル)

遅延(Blink_Time); // 点滅時間を待つ

digitalWrite(9、LOW); //電圧をLOWにしてLEDを消灯

noTone(7)。 //ビープ音を止める

//セカンドLED

//ここではビープ音は鳴らず、ビープ音は3回しか必要ないので、1、3、5番目のLEDに表示します。

digitalWrite(10、HIGH); // LEDを点灯させる(HIGHは電圧レベル)

遅延(Blink_Time); // 点滅時間を待つ

digitalWrite(10、LOW); //電圧をLOWにしてLEDを消灯

// 3番目のLED

トーン(7、Buzz_Tone)。 //ビープ

digitalWrite(11、HIGH); // LEDを点灯させる(HIGHは電圧レベル)

遅延(Blink_Time); // 点滅時間を待つ

digitalWrite(11、LOW); //電圧をLOWにしてLEDを消灯

noTone(7)。

// 4番目のLED

digitalWrite(12、HIGH); // LEDを点灯させる(HIGHは電圧レベル)

遅延(Blink_Time); // 点滅時間を待つ

digitalWrite(12、LOW); //電圧をLOWにしてLEDを消灯

// 5番目のLED

トーン(7、Buzz_Tone)。

digitalWrite(13、HIGH); // LEDを点灯させる(HIGHは電圧レベル)

遅延(Blink_Time); // 点滅時間を待つ

digitalWrite(13、LOW); //電圧をLOWにしてLEDを消灯

noTone(7)。

遅延(5 * Blink_Time)。 //点滅している一連のLEDの間で一時停止+ビープ音

}