電子記分牌是任何人在任何體育比賽中都可以擁有的最重要的小工具之一。使用傳統(tǒng)方法的舊手動(dòng)記分牌非常耗時(shí)且容易出錯(cuò),因此在需要實(shí)時(shí)更改顯示單元的情況下,必須使用計(jì)算機(jī)記分牌。這就是為什么在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)藍(lán)牙控制的無(wú)線記分牌,我們可以通過(guò)使用一個(gè)安卓應(yīng)用程序來(lái)更改板上的分?jǐn)?shù)。這個(gè)項(xiàng)目的大腦是一個(gè) Arduino Nano,對(duì)于顯示部分,我們將使用 P10 LED 矩陣來(lái)實(shí)時(shí)遠(yuǎn)程顯示分?jǐn)?shù)。
P10 LED顯示矩陣
P10 LED 矩陣顯示器是制作戶外或室內(nèi)LED 廣告板的最佳方式。該面板共有 512 個(gè)高亮度 LED,安裝在塑料外殼上,旨在實(shí)現(xiàn)最佳顯示效果。它還具有 IP65 防水等級(jí),非常適合戶外使用。有了這個(gè),您可以通過(guò)在任何行和列結(jié)構(gòu)中組合任意數(shù)量的此類(lèi)面板來(lái)制作大型LED 招牌。
我們的模組尺寸為32*16,也就是說(shuō)每行32個(gè)LED,每列16個(gè)LED。因此,每個(gè) LED 招牌中共有 512 個(gè) LED。除此之外,它的防水等級(jí)為IP65,可以由單個(gè)5V電源供電,具有非常寬的視角,亮度可以達(dá)到4500尼特。因此,您將能夠在日光下清楚地看到它。之前我們也使用這個(gè)P10 顯示器和 Arduino來(lái)構(gòu)建一個(gè)簡(jiǎn)單的 LED 板。
P10 LED 矩陣管腳說(shuō)明:
該LED 顯示板使用 10 針郵件頭進(jìn)行輸入和輸出連接,在本節(jié)中,我們已經(jīng)描述了該模塊的所有必要針腳。此外,您可以看到模塊中間有一個(gè)外部 5V 連接器,用于將外部電源連接到電路板。
啟用:此引腳用于控制 LED 面板的亮度,通過(guò)給它一個(gè) PWM 脈沖。
A、B:這些稱為多路復(fù)用選擇引腳。它們采用數(shù)字輸入來(lái)選擇任何多路復(fù)用行。
移位時(shí)鐘 (CLK)、存儲(chǔ)時(shí)鐘 (SCLK) 和數(shù)據(jù):這些是正常的移位寄存器控制引腳。這里使用了移位寄存器 74HC595。
將 P10 LED 顯示模塊連接到 Arduino:
將P10矩陣顯示 模塊連接到 Arduino 是一個(gè)非常簡(jiǎn)單的過(guò)程,在我們的電路中,我們將 Arduino 的引腳 9 配置為使能引腳,引腳 6 為引腳 A,引腳 7 為引腳 B,引腳 13 為 CLK,引腳 8 為SCLK,引腳11是DATA,最后引腳GND是模塊和Arduino的GND引腳,下面的完整表格清楚地解釋了引腳配置。
P10 LED模組Arduino UNO
注意:將P10模塊的電源端接外接5V電源,因?yàn)?12個(gè)LED會(huì)消耗很多功率。建議將 5V、3 Amp 直流電源連接到單個(gè) P10 LED 模塊。如果您計(jì)劃連接更多號(hào)碼模塊,請(qǐng)相應(yīng)增加您的 SMPS 容量。
Arduino 記分板所需的組件
由于這是一個(gè)非常簡(jiǎn)單的項(xiàng)目,組件要求非常通用,所需組件列表如下所示,您應(yīng)該可以在當(dāng)?shù)氐膼?ài)好商店中找到所有列出的材料。
Arduino納米
P10 LED矩陣顯示
面包板
5V、3 安培開(kāi)關(guān)電源
HC-05 藍(lán)牙模塊
連接電線
Arduino記分牌電路圖
Arduino LED Scoreboard的原理圖如下所示,因?yàn)檫@個(gè)項(xiàng)目非常簡(jiǎn)單,我使用了流行的軟件 fritzing 來(lái)開(kāi)發(fā)原理圖。
電路的工作很簡(jiǎn)單,我們有一個(gè)安卓應(yīng)用程序和一個(gè)藍(lán)牙模塊,要成功與藍(lán)牙模塊通信,你必須將HC-05模塊與安卓應(yīng)用程序配對(duì)。連接好后就可以發(fā)送我們想要顯示的字符串了,一旦發(fā)送了字符串,Arduino會(huì)處理這個(gè)字符串,并將其轉(zhuǎn)換為內(nèi)部74HC595移位電阻可以理解的信號(hào),數(shù)據(jù)發(fā)送到移位后電阻,它準(zhǔn)備顯示。
Arduino記分牌代碼說(shuō)明
成功完成硬件設(shè)置后,現(xiàn)在是 Arduino Nano 編程的時(shí)候了。下面給出代碼的逐步描述。此外,您可以在本教程的底部獲取完整的Arduino 記分板代碼。
首先,我們需要包含所有的庫(kù)。我們使用DMD.h庫(kù)來(lái)控制 P10 LED 顯示屏。您可以從給定的 GitHub 鏈接下載并包含它。之后,您需要包含TimerOne.h庫(kù),它將用于在我們的代碼中進(jìn)行中斷編程。
這個(gè)庫(kù)中有很多可用的前端,我們?cè)谶@個(gè)項(xiàng)目中使用了“Arial_black_16”。
#include#include #include #include "SystemFont5x7.h" #include "Arial_black_16.h"
在下一步中,為我們的 LED 矩陣板定義行數(shù)和列數(shù)。我們?cè)谶@個(gè)項(xiàng)目中只使用了一個(gè)模塊,所以 ROW 值和 COLUMN 值都可以定義為 1。
#define ROW 1 #define COLUMN 1 #define FONT Arial_Black_16 DMD led_module (ROW, COLUMN);
之后,定義了代碼中使用的所有變量。一個(gè)字符變量用于接收來(lái)自 Android App 的串行數(shù)據(jù),兩個(gè)整數(shù)值用于存儲(chǔ)分?jǐn)?shù),并定義了一個(gè)數(shù)組來(lái)存儲(chǔ)最終要顯示在 Matrix 上的數(shù)據(jù)。
字符輸入; 整數(shù)a = 0,b = 0; 整數(shù)標(biāo)志 = 0; 字符 cstr1[50];
定義了一個(gè)函數(shù)scan_module(),它通過(guò)SPI持續(xù)檢查來(lái)自 Arduino Nano 的任何傳入數(shù)據(jù)。如果是,那么它將觸發(fā)中斷以執(zhí)行用戶在程序中定義的某些事件。
無(wú)效 scan_module() { led_module.scanDisplayBySPI(); }
在setup()內(nèi)部,定時(shí)器被初始化,中斷被附加到函數(shù)scan_module,這在前面已經(jīng)討論過(guò)了。最初,使用函數(shù)clear screen(true) 清除屏幕,這意味著所有像素都定義為 OFF。
在設(shè)置中,還使用函數(shù)Serial.begin(9600)啟用了串行通信,其中 9600 是藍(lán)牙通信的波特率。
無(wú)效設(shè)置() { 序列.開(kāi)始(9600); Timer1.initialize(2000); Timer1.attachInterrupt(scan_module); led_module.clearScreen(真); }
在這里,檢查串行數(shù)據(jù)的可用性,是否有來(lái)自 Arduino 的有效數(shù)據(jù)。從 App 接收到的數(shù)據(jù)存儲(chǔ)在一個(gè)變量中。
if(Serial.available() > 0) { flag = 0; 輸入 = Serial.read();
然后,將接收到的值與預(yù)定義的變量進(jìn)行比較。在這里,在 Android 應(yīng)用程序中,使用兩個(gè)按鈕來(lái)選擇兩支球隊(duì)的分?jǐn)?shù)。當(dāng)按下按鈕 1 時(shí),字符“a”被傳輸?shù)?Arduino,當(dāng)按下按鈕 2 時(shí),字符“b”被傳輸?shù)?Arduino。因此,在本節(jié)中,此數(shù)據(jù)是匹配的,如果匹配,則相應(yīng)的分?jǐn)?shù)值會(huì)增加,如代碼所示。
if (input == 'a' && flag == 0) { flag = 1; 一個(gè)++; } else if (input == 'b' && flag == 0) { flag = 1; b++; } 其他;
然后,將接收到的數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組,因?yàn)?P10 矩陣函數(shù)只能顯示字符數(shù)據(jù)類(lèi)型。這就是為什么所有變量都被轉(zhuǎn)換并連接成一個(gè)字符數(shù)組的原因。
(String("HOME:")+String(a) + String(" - ") + String("AWAY:")+String(b)).toCharArray(cstr1, 50);
然后,為了在模塊中顯示信息,使用selection()函數(shù)選擇字體。然后drawMarquee()函數(shù)用于在 P10 板上顯示所需的信息。
led_module.selectFont(字體); led_module.drawMarquee(cstr1,50, (32 * ROW), 0);
最后,由于我們需要滾動(dòng)消息顯示,我編寫(xiě)了一個(gè)代碼,使用特定周期將整個(gè)消息從右向左移動(dòng)。
長(zhǎng)開(kāi)始 = 毫秒(); 長(zhǎng)時(shí)間的計(jì)時(shí)=開(kāi)始; 布爾標(biāo)志 = 假; while (!flag) { if ((timming + 30) < millis()) { flag = led_module.stepMarquee(-1, 0); 計(jì)時(shí) = 毫秒(); } }
這標(biāo)志著我們編碼過(guò)程的結(jié)束。現(xiàn)在可以上傳了。
智能手機(jī)控制的記分牌 - 測(cè)試
將代碼上傳到 Arduino 后,就該測(cè)試項(xiàng)目了。在此之前,需要在我們的智能手機(jī)上安裝 android 應(yīng)用程序。您可以從給定的鏈接下載 P10 Score Board 應(yīng)用程序。安裝后,打開(kāi)應(yīng)用程序,主屏幕應(yīng)如下圖所示。
點(diǎn)擊SCAN按鈕,添加帶有 App 的藍(lán)牙模塊。這將顯示手機(jī)的配對(duì)藍(lán)牙設(shè)備列表。如果您之前沒(méi)有配對(duì)過(guò)HC-05 藍(lán)牙模塊,請(qǐng)使用手機(jī)的藍(lán)牙設(shè)置配對(duì)模塊,然后執(zhí)行此步驟。屏幕將如下所示:
然后,從列表中單擊“HC-05”,因?yàn)檫@是我們此處使用的藍(lán)牙模塊的名稱。單擊它后,它將在屏幕上顯示已連接。然后我們可以繼續(xù)使用記分牌。
單擊“主頁(yè)”和“離開(kāi)”之間的任何按鈕,如應(yīng)用程序所示。如果選擇 Home 按鈕,則 Home 的分?jǐn)?shù)將在 P10 顯示中遞增。同樣,如果選擇了離開(kāi)按鈕,離開(kāi)的分?jǐn)?shù)將增加。下圖顯示了最終屏幕的外觀。
#include
#include
#include
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#定義第 1 行
#define 第 1 列
#define 字體 Arial_Black_16
字符輸入;
整數(shù)a = 0,b = 0;
整數(shù)標(biāo)志 = 0;
字符 cstr1[50];
DMD led_module(行,列);
無(wú)效掃描模塊()
{
led_module.scanDisplayBySPI();
}
無(wú)效設(shè)置()
{
序列號(hào).開(kāi)始(9600);
Timer1.initialize(2000);
Timer1.attachInterrupt(scan_module);
led_module.clearScreen(真);
}
無(wú)效循環(huán)()
{
如果(串行??捎茫ǎ? 0)
{
標(biāo)志 = 0;
輸入 = Serial.read();
如果(輸入 == 'a' && 標(biāo)志 == 0)
{
標(biāo)志 = 1;
一個(gè)++;
}
else if (input == 'b' && flag == 0)
{
標(biāo)志 = 1;
b++;
}
別的;
}
(String("HOME:")+String(a) + String(" - ") + String("AWAY:")+String(b)).toCharArray(cstr1, 50);
led_module.selectFont(字體);
led_module.drawMarquee(cstr1,50, (32 * ROW), 0);
長(zhǎng)開(kāi)始 = 毫秒();
長(zhǎng)時(shí)間的計(jì)時(shí)=開(kāi)始;
布爾標(biāo)志 = 假;
而(!標(biāo)志)
{
if ((timming + 30) < 毫秒())
{
flag = led_module.stepMarquee(-1, 0);
計(jì)時(shí) = 毫秒();
}
}
}
-
LED顯示
+關(guān)注
關(guān)注
0文章
361瀏覽量
38087 -
Arduino
+關(guān)注
關(guān)注
188文章
6474瀏覽量
187442 -
藍(lán)牙控制
+關(guān)注
關(guān)注
0文章
12瀏覽量
2699
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論