電子スコアボードは、スポーツトーナメント中に誰もが持つことができる最も重要なガジェットの1つです。従来の方法を使用した古い手動スコアボードは非常に時間がかかり、エラーが発生しやすいため、表示ユニットをリアルタイムで変更する必要がある場合は、コンピューター化されたスコアボードが必要になります。そのため、このプロジェクトでは、Androidアプリケーションを使用するだけでボード上のスコアを変更できるBluetooth制御のワイヤレススコアボードを構築します。このプロジェクトの頭脳はArduinoNanoであり、ディスプレイ部分では、P10LEDマトリックスを使用してスコアをリモートでリアルタイムに表示します。
P10LEDディスプレイマトリックス
P10 LEDマトリックスディスプレイは作るために利用可能な最良の方法であるLEDボードを屋外や屋内での使用のために。このパネルには、最高の表示結果が得られるように設計されたプラスチックハウジングに取り付けられた合計512個の高輝度LEDがあります。また、防水のIP65定格が付属しているため、屋外での使用に最適です。これにより、任意の行と列の構造でこのようなパネルをいくつでも組み合わせて、大きなLED看板を作成できます。
モジュールのサイズは32 * 16です。つまり、各行に32個のLEDがあり、各列に16個のLEDがあります。したがって、各LED看板には合計512個のLEDがあります。それ以外に、それは防水のためのIP65定格を持っており、単一の5V電源から電力を供給でき、非常に広い視野角を持ち、明るさは最大4500ニットに達することができます。だから、あなたはそれを持ってきた日光の下ではっきりと見ることができるでしょう。以前は、このP10ディスプレイをArduinoで使用して、シンプルなLEDボードを構築していました。
ピンの説明のP10 LEDマトリックス:
このLEDディスプレイボードは、入力および出力接続に10ピンのメールヘッダーを使用します。このセクションでは、このモジュールに必要なすべてのピンについて説明しました。また、モジュールの中央に、外部電源をボードに接続するために使用される外部5Vコネクタがあることがわかります。
- 有効化:このピンは、PWMパルスを与えることにより、LEDパネルの輝度を制御するために使用されます。
- A、B:これらはマルチプレックス選択ピンと呼ばれます。それらは、デジタル入力を使用して、任意の多重行を選択します。
- シフトクロック(CLK)、ストアクロック(SCLK)、およびデータ:これらは通常のシフトレジスタ制御ピンです。ここでは、シフトレジスタ74HC595が使用されています。
P10 LEDディスプレイモジュールとArduinoのインターフェース:
P10マトリックスディスプレイ モジュールをArduinoに接続するのは非常に簡単なプロセスです。この回路では、Arduinoのピン9をイネーブルピン、ピン6をピンA、ピン7をピンB、ピン13をCLK、ピン8を構成しました。 SCLK、ピン11はデータ、最後にピンGNDはモジュールとArduinoのGNDピンです。以下の完全な表でピン構成を明確に説明しています。
P10LEDモジュール |
Arduino UNO |
有効にする |
9 |
A |
6 |
B |
7 |
CLK |
13 |
SCLK |
8 |
データ |
11 |
GND |
GND |
注: 512個のLEDは大量の電力を消費するため、P10モジュールの電源端子を外部5V電源に接続します。5V、3アンペアのDC電源を1台のP10LEDモジュールに接続することをお勧めします。より多くの番号モジュールを接続することを計画している場合は、それに応じてSMPS容量を増やします。
Arduinoスコアボードに必要なコンポーネント
これは非常に単純なプロジェクトであるため、コンポーネントの要件は非常に一般的です。必要なコンポーネントのリストを以下に示します。リストされているすべての資料を地元のホビーショップで見つけることができます。
- Arduino Nano
- P10LEDマトリックスディスプレイ
- ブレッドボード
- 5V、3 AMP SMPS
- HC-05Bluetoothモジュール
- 接続線
Arduinoスコアボードの回路図
このプロジェクトは非常に単純であるため、Arduino LEDスコアボードの回路図を以下に示します。私は、人気のあるソフトウェアフリッツを使用して回路図を開発しました。
回路の動作は非常に簡単です。AndroidアプリケーションとBluetoothモジュールがあります。Bluetoothモジュールと正常に通信するには、HC-05モジュールをAndroidアプリケーションとペアリングする必要があります。接続したら、表示したい文字列を送信できます。文字列が送信されると、Arduinoは文字列を処理し、データがシフトに送信された後、内部の74HC595シフト抵抗が理解できる信号に変換します。抵抗器、表示する準備ができています。
Arduinoスコアボードコードの説明
ハードウェアのセットアップが正常に完了したら、ArduinoNanoのプログラミングの時間です。コードの段階的な説明を以下に示します。また、このチュートリアルの下部にある完全なArduinoスコアボードコードを入手できます。
まず、すべてのライブラリを含める必要があります。P10 LEDディスプレイを制御するために、DMD.hライブラリを使用しました。指定されたGitHubリンクからダウンロードして含めることができます。その後、コードに割り込みプログラミングに使用されるTimerOne.hライブラリを含める必要があり ます。
このライブラリには多くのフロントがあります。このプロジェクトでは「 Arial_black_16 」を使用しました。
#include
次のステップでは、LEDマトリックスボードの行と列の数を定義します。このプロジェクトではモジュールを1つしか使用していないため、ROW値とCOLUMN値の両方を1として定義できます。
#define ROW 1 #define COLUMN 1 #define FONT Arial_Black_16 DMD led_module(ROW、COLUMN);
その後、コードで使用されるすべての変数が定義されます。文字変数はAndroidアプリからシリアルデータを受信するために使用され、2つの整数値はスコアを格納するために使用され、配列はマトリックスに表示される最終データを格納するために定義されます。
文字入力; int a = 0、b = 0; intフラグ= 0; char cstr1;
関数scan_module()が定義されており、SPIを介してArduinoNanoからの着信データを継続的にチェックします。はいの場合、プログラムでユーザーが定義した特定のイベントを実行するための割り込みがトリガーされます。
void scan_module() { led_module.scanDisplayBySPI(); }
setup()内で、タイマーが初期化され、割り込みが前述の関数scan_moduleにアタッチされます。最初に、関数clear screen(true)を使用して画面がクリアされました。これは、すべてのピクセルがオフとして定義されていることを意味します。
セットアップでは、関数Serial.begin(9600)を使用してシリアル通信も有効にしました。ここで、9600はBluetooth通信のボーレートです。
void setup() { Serial.begin(9600); Timer1.initialize(2000); Timer1.attachInterrupt(scan_module); led_module.clearScreen(true); }
ここでは、Arduinoからの有効なデータがあるかどうかにかかわらず、シリアルデータの可用性がチェックされます。アプリから受信したデータは変数に保存されます。
if(Serial.available()> 0) { フラグ= 0; input = Serial.read();
次に、受信した値を事前定義された変数と比較しました。ここで、Androidアプリケーションでは、2つのボタンを使用して、両方のチームのスコアを選択します。ボタン1を押すと、文字「a」がArduinoに送信され、ボタン2を押すと、文字「b」がArduinoに送信されます。したがって、このセクションでは、このデータが一致し、一致した場合は、コードに示されているように、それぞれのスコア値が増分されます。
if(input == 'a' && flag == 0) { flag = 1; a ++; } else if(input == 'b' && flag == 0) { flag = 1; b ++; } else;
次に、P10行列関数は文字データ型しか表示できないため、受信したデータは文字配列に変換されます。これが、すべての変数が文字配列に変換および連結される理由です。
(String( "HOME:")+ String(a)+ String( "-")+ String( "AWAY:")+ String(b))。toCharArray(cstr1、50);
次に、モジュールに情報を表示するために、selection()関数を使用してフォントを選択します。次に、drawMarquee()関数を使用して、P10ボードに必要な情報を表示します。
led_module.selectFont(FONT); led_module.drawMarquee(cstr1,50、(32 * ROW)、0);
最後に、スクロールメッセージ表示が必要なため、特定の期間を使用してメッセージ全体を右方向から左方向にシフトするコードを記述しました。
ロングスタート=ミリス(); 長いタイミング=開始; ブールフラグ= false; while(!flag) { if((timming + 30)<millis()) { flag = led_module.stepMarquee(-1、0); タイミング=ミリ秒(); } }
これでコーディングプロセスは終了です。これで、アップロードの準備が整いました。
スマートフォン制御スコアボード -テスト
Arduinoにコードをアップロードしたら、プロジェクトをテストします。その前に、Androidアプリケーションをスマートフォンにインストールする必要があります。所定のリンクから P10スコアボードアプリケーションをダウンロード でき ます 。インストールしたら、アプリを開くと、ホーム画面は次の画像のようになります。
[スキャン]ボタンをクリックして、アプリでBluetoothモジュールを追加します。これにより、電話機のペアリングされたBluetoothデバイスのリストが表示されます。以前にHC-05Bluetoothモジュールをペアリングしたことがない場合は、電話機のBluetooth設定を使用してモジュールをペアリングしてから、この手順を実行します。画面は次のようになります。
次に、リストから「HC-05」をクリックします。これは、ここで使用されているBluetoothモジュールの名前です。それをクリックすると、画面に接続済みと表示されます。次に、スコアボードに進むことができます。
アプリに表示されているように、「ホーム」と「アウェイ」の間の任意のボタンをクリックします。ホームボタンを選択すると、P10ディスプレイでホームのスコアが増加します。同様に、[退席中]ボタンを選択すると、退席中のスコアが増加します。下の画像は、最終画面がどのように見えるかを示しています。
プロジェクトが気に入って、何か新しいことを学んだことを願っています。プロジェクトに関して他に質問がある場合は、以下にコメントするか、フォーラムで質問してください。