Arduino LCD(Nokia 5110)とモーションセンサー(HC-SR501):6ステップ

Arduino LCD(Nokia 5110)とモーションセンサー(HC-SR501):6ステップ

目次:

Anonim

こんにちは、

このチュートリアルへようこそ。

あなたが私のようで、同じ日にメールでHC-SR501とノキア5110 LCDを手に入れたのであれば、あなたはおそらく何かクールなものにしたい、そして/またはあなたの新しいユニットをテストしたいと思うでしょう。このチュートリアルでは、HC-SR501 pirセンサーとNokia 5110を組み合わせて接続して、クールで小さな「インターフェース」を作成する方法を説明します。私はあなたが私をここで動揺させたくないと思うので私達は始めます、最初に少し理論。

用品:

ステップ1:ユニットのしくみ

5110はそれがどのように動作するかについてはかなり一目瞭然です、あなたは基本的にそれを差し込み、何らかのコードを書き、そしてディスプレイはあなたのコードを読むことでピクセルをオンまたはオフにします。

一方、HC-SR501はそれほどわかりやすいものではありません。それは基本的に赤外光を検出します。赤外線は、私、あなた、猫、犬など、動いているものすべてから放出されます。センサーが赤外光を受け取ると(動き、高い信号を発します)、赤外線がない場合(もう一度、動き)は基本的に低い信号を発します。

これで、このプロジェクトを構築するための準備が整いました。

ステップ2:部品

もちろん、あなたはこのプロジェクトを任意のarduinoで作成することができます。私はほとんどのarduinoユーザーがこのボードを使い始めるときに理解しやすくするためにUNOを使用しています。このチュートリアルの大部分はNokia 5110 LCDの使用方法とHC-SR501の動作方法を示すことを目的としているので、もちろんこれらを使用しますが、必要なLCDを使用することもできますが、すべて接続する必要があります。あなたのつながり、あなたのコード、そしてあなた自身のためのすべてを編集しなさい、それは結局複雑になるかもしれません。ブレッドボードなしでこれを行うこともできますが、プロトタイプ作成にはもちろん非常に便利です。どちらにしても、 これが私が使う部品です:

Arduino UNO(3〜22ドル)

ブレッドボード(1〜3ドル)

ジャンパーケーブル(1〜4ドル)

A Nokia 5110(2 $)

HC-SR501(1ドル)

どこでどのように私が製品を手に入れたかに関して何か質問があれば私に連絡するかコメントしてください。 LCDの配線を続けましょう。

ステップ3:接続(LCD)

上の写真でわかるように、ディスプレイは8ピンで動作します。

GND、一目瞭然

これをGNDに直接差し込むとバックライトが点灯します。それ以外の場合は、バックライトがVCCに接続されるか、何も接続されていないとバックライトは消灯します。

VCC、arduinoの力に行きます。ディスプレイは3.3Vで動作します。5Vに接続すると、燃え尽きることがあります。

CLK、クロック信号用ピン

DIN(MOSI)、データ転送用ピン

DC、レジスタ選択用ピン。あなたがコマンドやデータをLCDに送りたいのであればほとんど。

CE別名CSチップセレクト/イネーブル用ピン。

RST、リセット用ピン

これがわかったので、すべてを接続しましょう。写真または/および以下の情報に従ってそれを接続してください。

GND - > GND

- > GND(バックライトが必要な場合はそれ以外、VCC)

VCC - > Arduino 3.3V

CLK - > Arduinoピン7

DIN - > Arduinoのピン4

DC - > Arduinoピン5

CE - > Arduinoピン6

RST - > Arduinoのピン2

これで、これらを任意のピンに接続できますが、このチュートリアルでは説明しないコードに変更を加える必要があります。 今、私たちが使用しようとしているセンサーの配線:

ステップ4:接続(センサー)

このセンサは、基本的にGND、VCC、およびデジタル出力ピンを接続するのがかなり簡単です。 同じ取引、センサーを接続するために写真や以下の情報を使用してください。

ジャンパーケーブルをセンサーに接続してから、

GND - > Arduino GND

VCC - > Arduino 5V(このセンサーは5Vでうまく動作すると思うので、5ボルトを使用しました)

デジタル出力 - > Arduinoピン8

それは、ごく単純なことですね。 それでは、コードを紹介しましょう。これはそれほど複雑ではありません。

ステップ5:コード

コード、おかしな部分:)コードは非常に単純ですが、理解するためにはある程度の知識が必要です(それがあなたの目的であれば、コードを理解するために)、私はコードを理解しやすくするためにほとんどのコードをコメント付けします。理解している、しかし私は私が良い仕事をしたかどうかわからない。 LCD_5110_Graphライブラリもダウンロードする必要があります。これを作成してくれてHenning Karlsenに感謝します!

これがコードです、お楽しみください:

#含める

int calibrationTime = 20。 // PIRセンサーは調整する必要があります。この間はあまり動かさないでください。unsigned int lowIn; long unsigned int pause = 5000; //モーションブールがないと仮定するまでにセンサーが低くならなければならない時間lockLow = true; //センサーが時々低くなって、そのboolを修正するという事実のための変数takeLowTime;

int motionPin = 8; //ピン8に接続されていますint ledPin = 13; //ピン13でモーションが検出されたかどうかも表示します(HIGH =モーション、LOW =モーションなし)

LCD5110液晶(7、4、5、3、6)。 // lcdオブジェクトを作る

extern unsigned char SmallFont; //私たちのsmallfont(これはライブラリに含まれています)を含みます

void setup(){Serial.begin(9600); //シリアル通信を開始します。lcd.InitLCD(); // LCDの起動lcd.setFont(SmallFont); //フォントを小さく設定する

//センサーにキャリブレーションのための時間を与えます(前述のように、この間は最小限の動きで行います)。

Serial.println( "Calibrating sensor"); //シリアルモニタを介してユーザーにキャリブレーション中であることを通知します。lcd.clrScr(); lcd.print( "校正"、CENTER、16); //同じ取引lcd.update(); (int i = 0; i <calibrationTime; i ++){Serial.print( "。");遅延(1000)。 Serial.println( "Calibration done"); Serial.println( "センサーがアクティブになり、コードが実行されています"); lcd.clrScr(); lcd.print( "Done"、CENTER、16); lcd.update();遅延(100)。 //すべてがスムーズに実行されていることを確認するためだけの小さな遅延。lcd.clrScr(); lcd.print( "No motion"、CENTER、14); lcd.print( "detected"、CENTER、24); lcd.update(); }

void loop(){

if(digitalRead(motionPin)== HIGH){//動きがあるかどうかを確認するdigitalWrite(ledPin、HIGH); //(lockLow){//これ以上の出力が行われるのを防ぐため、ledはセンサー出力を視覚化します。lockLow = false; Serial.println( "---"); Serial.println( "Motion detected"); lcd.clrScr(); lcd.print( "Motion"、CENTER、14); lcd.print( "detected"、CENTER、24); lcd.update();遅延(20)。 takeLowTime = true; if(digitalRead(motionPin)== LOW){digitalWrite(ledPin、LOW); if(takeLowTime){

lowIn = millis(); // HIGHからLOWへの遷移時間を節約するtakeLowTime = false; //これがLOWフェーズの開始時にのみ行われるようにする

//センサーが所定の休止時間を超えてローである場合、//(!lockLow && millis() - lowIn> pause){lockLow = true;}の場合、これ以上モーションは発生しないと想定します。 lcd.clrScr(); lcd.print( "No motion"、CENTER、14); lcd.print( "detected"、CENTER、24); lcd.update(); digitalWrite(ledピン、LOW); Serial.println( "motion finished");遅延(10)。

}

}

}

ステップ6:ゴールライン

今あなたがすべてを正しくしたならば、上の写真を見て、それはマッチしますか?もしそうなら、素晴らしいと私はあなたがチュートリアルを楽しんだことを願っています。いいえの場合、私に連絡するかコメントを投稿することを躊躇しないでください、私はあなたに戻ります。

読んでくれてありがとう、そして素晴らしい一日を!

サミュエル