风筝
发表于: 2020-12-23 10:11:31 | 显示全部楼层

电子记分牌是体育比赛中最重要的小工具之一。使用手动计分牌非常耗时且容易出错,因此在需要实时更新显示内容时,必须使用计算机化的计分牌。因此,在本篇文章中,我们将制作一个蓝牙控制的无线计分牌,我们可以使用android应用程序来更改分数。该项目的主要部分采用的是Arduino Nano开发板,显示部分,我们将使用P10 LED点阵模块实时远程显示得分。


LED点阵模块P10

LED点阵显示模块P10制作户外或室内LED广告板的最佳方法。该面板在塑料外壳上安装了总共512个高亮度LED,以实现最佳显示效果。它还具有IP65防水等级,非常适合户外使用。这样,您可以通过以任意行和列结构组合任意数量的此类面板来制作大型LED标牌。

The-P10-LED-Display-Matrix.jpg


我们使用的模块尺寸为32 * 16,这意味着每行有32个LED,每列有16个LED。因此,每个LED广告牌中共有512个LED。除此之外,它还具有IP65防水等级,可以由单个5V电源供电,具有非常宽的视角,亮度可以达到4500尼特。因此,您将可以在阳光下清晰地看到它。


LED点阵的引脚说明

该LED显示板使用10针插头进行输入和输出连接,在本节中,我们介绍了该模块的所有必需针脚。另外,您可以看到模块中间有一个外部5V连接器,用于将外部电源连接到电路板。

P10-LED-Matrix-Pin-Description.jpg

●    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来开发原理图。

Arduino-LED-Score-Board-Circuit-Diagram.png

电路的工作非常简单,我们有一个Android应用程序和一个蓝牙模块,要与蓝牙模块成功通信,您必须将HC-05模块与android应用程序配对。连接后,我们可以发送要显示的字符串,发送完字符串后,Arduino将处理该字符串,并将其转换为内部74HC595移位器可以理解的信号,然后再将数据发送至移位电阻,就可以准备显示。


Arduino记分牌代码说明

成功完成硬件设置后,现在该对Arduino Nano进行编程了。该代码的分步说明如下。


首先,我们需要包括所有库。我们使用DMD.h库来控制P10 led显示屏。您可以从给定的GitHub链接下载。之后,您需要包括TimerOne.h库,该库将在我们的代码中用于中断编程。


这个库有很多可用的字体,我们在这个项目中使用了“ Arial_black_16”。

  1. #include <SPI.h>
  2. #include <DMD.h>
  3. #include <TimerOne.h>
  4. #include "SystemFont5x7.h"
  5. #include "Arial_black_16.h"
复制代码

下一步,为我们的LED点阵板定义行数和列数。我们在此项目中仅使用了一个模块,因此ROW值和COLUMN值都可以定义为1。

  1. #define ROW 1
  2. #define COLUMN 1
  3. #define FONT Arial_Black_16
  4. DMD led_module (ROW, COLUMN);
复制代码

之后,定义代码中使用的所有变量。字符型变量用于从Android App接收串行数据,两个整型值用于存储分数,并且定义了一个数组,该数组存储要在矩阵上显示的最终数据。

  1. char input;
  2. int a = 0, b = 0;
  3. int flag = 0;
  4. char cstr1[50];
复制代码

定义了一个函数scan_module(),该函数连续检查通过SPI从Arduino Nano传入的任何数据。如果有数据,则它将触发中断,以执行程序中用户定义的某些事件。

  1. void scan_module()
  2. {
  3.   led_module.scanDisplayBySPI();
  4. }
复制代码

setup()函数中,初始化了定时器,并将中断附加到函数scan_module上。首先,使用clear screen(true)函数擦除了屏幕,这意味着所有像素都定义为“关闭”。


在setup函数中,还使用函数Serial.begin(9600)启用了串口通信,其中9600是蓝牙通信的波特率。

  1. void setup()
  2. {
  3.   Serial.begin(9600);
  4.   Timer1.initialize(2000);
  5.   Timer1.attachInterrupt(scan_module);
  6.   led_module.clearScreen( true );
  7. }
复制代码

在loop函数中,检查串口是否有来自Arduino的有效数据。从应用程序接收的数据存储在变量中。

  1. if(Serial.available() > 0)
  2.   {
  3.     flag = 0;
  4.     input = Serial.read();
复制代码

然后,将接收到的值与预定义变量进行比较。在这里,在Android应用程序中,采用了两个按钮来选择两个团队的得分。当按下按钮1时,字符“ a”被传输到Arduino,而当按下按钮2时,字符“ b”被传输到Arduino。因此,在此部分中,检查数据是否匹配,如果匹配,则各个得分值将按代码所示递增。

  1. if (input == 'a' && flag == 0)
  2.   {
  3.     flag = 1;
  4.     a++;
  5.   }
  6.   else if (input == 'b' && flag == 0)
  7.   {
  8.     flag = 1;
  9.     b++;
  10.   }
  11.   else;
复制代码

然后,将接收到的数据转换为字符数组,因为P10点阵函数只能显示字符数据类型。

  1. (String("HOME:")+String(a) + String(" - ") + String("AWAY:")+String(b)).toCharArray(cstr1, 50);
复制代码

然后,要在模块中显示信息,请使用selection()函数选择字体。然后使用drawMarquee()函数在P10模块上显示所需的信息。

  1. led_module.selectFont(FONT);
  2. led_module.drawMarquee(cstr1,50, (32 * ROW), 0);
复制代码

最后,由于需要滚动显示消息,因此我编写了一段代码,以在一定时间段内将整个消息从右向左移动。

  1. long start = millis();
  2.     long timming = start;
  3.     boolean flag = false;
  4.     while (!flag)
  5.     {
  6.       if ((timming + 30) < millis())
  7.       {
  8.         flag = led_module.stepMarquee(-1, 0);
  9.         timming = millis();
  10.       }
  11.     }
复制代码

使用智能手机测试计分牌

将代码上传到Arduino之后,现在就可以测试项目了。在此之前,需要在我们的智能手机上安装android应用程序。您可以从给定的链接下载P10计分板应用程序。安装后,打开应用程序,主屏幕应如下图所示。

Smartphone-Controlled-Scoreboard-App.png


单击“SCAN”按钮以通过App添加蓝牙模块。这将显示已配对的手机蓝牙设备列表。如果您之前尚未配对HC-05蓝牙模块,请使用手机的蓝牙设置配对该模块,然后执行此步骤。屏幕将如下所示:

HC-05-Bluetooth-Module-Pairing.png


然后,从列表中单击“ HC-05”,这是使用的蓝牙模块的名称。单击后,它将在屏幕上显示已连接。


单击应用程序中所示的“Home”和“Away”的任何按钮。如果选择“Home”按钮,则“Home”的分数将在P10显示屏中增加。同样,如果选择“Away”按钮,则“Away”的分数将增加。下图显示了最终屏幕的效果。

Smartphone-Controlled-Scoreboard.jpg


以上就是本篇文章的所有内容,如果您对该项目还有其他疑问,请随时在本帖下面进行回复。


跳转到指定楼层
lala5
发表于: 2020-12-25 11:49:36 | 显示全部楼层

非常喜欢您的帖子~感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 13:34 , Processed in 0.147221 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表