电子记分牌是体育比赛中最重要的小工具之一。使用手动计分牌非常耗时且容易出错,因此在需要实时更新显示内容时,必须使用计算机化的计分牌。因此,在本篇文章中,我们将制作一个蓝牙控制的无线计分牌,我们可以使用android应用程序来更改分数。该项目的主要部分采用的是Arduino Nano开发板,显示部分,我们将使用P10 LED点阵模块实时远程显示得分。
LED点阵模块P10
LED点阵显示模块P10制作户外或室内LED广告板的最佳方法。该面板在塑料外壳上安装了总共512个高亮度LED,以实现最佳显示效果。它还具有IP65防水等级,非常适合户外使用。这样,您可以通过以任意行和列结构组合任意数量的此类面板来制作大型LED标牌。
我们使用的模块尺寸为32 * 16,这意味着每行有32个LED,每列有16个LED。因此,每个LED广告牌中 共有512个LED。除此之外,它还具有IP65防水等级,可以由单个5V电源供电,具有非常宽的视角,亮度可以达到4500尼特。因此,您将可以在阳光下清晰地看到它。
LED点阵的引脚说明
该LED显示板使用10针插头进行输入和输出连接,在本节中,我们介绍了该模块的所有必需针脚。另外,您可以看到模块中间有一个外部5V连接器,用于将外部电源连接到电路板。
[attach]1404703[/attach]
● Enable:此引脚用于通过向其提供PWM脉冲来控制LED面板的亮度。
● A,B:这些称为复用选择引脚。他们采用数字输入来选择任何多路复用行。
● 移位时钟(CLK)、存储时钟(SCLK)和数据:这些是常规移位寄存器控制引脚。这里使用了移位寄存器74HC595。
将LED显示模块P10连接到Arduino
将P10点阵显示模块连接到Arduino是一个非常简单的过程,在我们的电路中,我们将Arduino的引脚9配置为Enable引脚,将引脚6配置为引脚A,将引脚7配置为引脚B,引脚13是CLK,引脚8是SCLK,引脚11是数据,最后模块的引脚GND连接到Arduino的GND引脚。
注意:将P10模块的电源端子连接到外部5V电源,因为512个LED会消耗大量电流。建议将5V、3 Amp直流电源连接到单个P10 LED模块。
Arduino计分牌所需的组件
由于这是一个非常简单的项目,因此组件要求非常简单,下面显示了所需组件的列表。
● Arduino Nano开发板
● P10 LED点阵显示器
● 面包板
● 5V、3A SMPS电源
● HC-05蓝牙模块
● 连接线
Arduino记分牌电路图
Arduino LED计分牌的原理图如下所示,因为该项目非常简单,我使用了软件fritzing来开发原理图。
[attach]1404704[/attach]
电路的工作非常简单,我们有一个Android应用程序和一个蓝牙模块,要与蓝牙模块成功通信,您必须将HC-05模块与android应用程序配对。连接后,我们可以发送要显示的字符串,发送完字符串后,Arduino将处理该字符串,并将其转换为内部74HC595移位器可以理解的信号,然后再将数据发送至移位电阻,就可以准备显示。
Arduino记分牌代码说明
成功完成硬件设置后,现在该对Arduino Nano进行编程了。该代码的分步说明如下。
首先,我们需要包括所有库。我们使用DMD.h库来控制P10 led显示屏。您可以从给定的GitHub链接下载。之后,您需要包括TimerOne.h库,该库将在我们的代码中用于中断编程。
这个库有很多可用的字体,我们在这个项目中使用了“ Arial_black_16”。
下一步,为我们的LED点阵板定义行数和列数。我们在此项目中仅使用了一个模块,因此ROW值和COLUMN值都可以定义为1。
之后,定义代码中使用的所有变量。字符型变量用于从Android App接收串行数据,两个整型值用于存储分数,并且定义了一个数组,该数组存储要在矩阵上显示的最终数据。
定义了一个函数scan_module(),该函数连续检查通过SPI从Arduino Nano传入的任何数据。如果有数据,则它将触发中断,以执行程序中用户定义的某些事件。
在setup()函数中,初始化了定时器,并将中断附加到函数scan_module上。首先,使用clear screen(true)函数擦除了屏幕,这意味着所有像素都定义为“关闭”。
在setup函数中,还使用函数Serial.begin(9600)启用了串口通信,其中9600是蓝牙通信的波特率。
在loop函数中,检查串口是否有来自Arduino的有效数据。从应用程序接收的数据存储在变量中。
然后,将接收到的值与预定义变量进行比较。在这里,在Android应用程序中,采用了两个按钮来选择两个团队的得分。当按下按钮1时,字符“ a”被传输到Arduino,而当按下按钮2时,字符“ b”被传输到Arduino。因此,在此部分中,检查数据是否匹配,如果匹配,则各个得分值将按代码所示递增。
然后,将接收到的数据转换为字符数组,因为P10点阵函数只能显示字符数据类型。
然后,要在模块中显示信息,请使用selection()函数选择字体。然后使用drawMarquee()函数在P10模块上显示所需的信息。
最后,由于需要滚动显示消息,因此我编写了一段代码,以在一定时间段内将整个消息从右向左移动。
欢迎光临 数码之家 (https://www.mydigit.cn/) | Powered by Discuz! X3.4 |