问题:近几天自制了一个4功能型arduino模拟赛车仪表,在找资料的过程中,发现大佬们都是展示了一下成品,然后说怎么向arduino烧录功能程序,但是还差一步:如何在软件设置中,让挡位、发动机转速、车速、发动机转速百分比等信息如何显示到正确的数码管及LED灯条上。本文结合我设置过程中的体会,做一番说明,作为该软件后继功能的记录,也希望能帮到自己DIY的其他朋友。
一、硬件及软件情况
如下图,是我自己在某宝购买的成品组件搭建的工程样机。
1. 主要构成部件:
Arduino nano 板 1pcs
MAX7219 单色LED阵列屏8x8 1pcs
MT1637 0.56" 4位-7段数码管 1pcs
MT1637 0.36" 6位-7段数码管 1pcs
WS2812 8位LED灯条 1pcs ### 后继要加到2pcs,形成16位显示
PCB端子 5mm间距 2P型 1pcs ### 主要是将5v和 GND 引脚扩展出来,每个都要接
2. 软件
没什么好说的 SIMHUB, 自己搜索下载就可以了。可能在第一次设置 “My Hardware”,点击 “Open arduino setup tool”的时候需要一些魔法,否则需要的 SimHub.ArduinoIDE.1.0.0.7z 这个东西很可能下载不成功。
3.关于组装
这里参见官方提供的说明即可。 引脚从 D2-D13 都可以用,作为 DIN 和CLK 都可以,只要后继在软件中选对引脚的功能就好了。
注:稍微说一下总体流程。 采购组件→焊接引线→插接组装→开SIMHUB识别Ardunio→开启接入的显示单元类型→确认插接的引脚序号→确认并烧录进Ardunio→软件中配置信息的显示区域和类型
二、先配置Arduino,让每块显示单元和板子绑定
2.1如下图所示,先点击左侧的 Arduino选项,再点最右侧的 “My Hardware”,
参考官网: Arduino Setup · SHWotever/SimHub Wiki · GitHub
2.2 打开配置工具后,在对应的设备中开启. 按加号,加1 以及将 OFF 切换为 ON
2.3 烧录。 主要是选对板子和对应的接口。
三、让需要的信息显示在正确的屏幕上
这一点有难的,也有简单的。我们由易到难
3.1 挡位显示
这个比较简单,一般都是直接默认在 Martix 屏,也就是矩阵屏中显示,不用过多的调整,仅需要调一下亮度,在使用的时候看显示方向是否正确,是否要旋转一下。
因为我们使用的是 MAX7219 单色LED阵列屏,直接在 “Display&Alerts”中调节就可以了。图中 “SINGLE COLOR MATRIX GEAR INDICATOR",就是 单色矩阵档位指示器。 下方的+-号是调节亮度的。
右侧的”SEVEN SEGMENT MODULES",这个是调整数码管显示单元的,我们有两个,所以#1,#2 可以调,也是调节亮度,顺便看一下两个屏的顺序。 我的是 #1为4位的,#2为6位的。 注意后面的 Reverse display 是让字符反转显示的。一般小数点在下方是正显。 3.2 直接的 ws2812B 8x8 矩阵板显示屏
这种屏是RGB三色的,调整项比较多,官方也有教程
Arduino RGB Matrix · SHWotever/SimHub Wiki · GitHub
配置界面是从左往右第2个
3.3 LED灯条的配置
在绑定显示单元到Arduino中时,leds count 一定不要忘记填,我们这里是8位,就填8。 最开始配置只填写了1,结果只有1颗亮,还以为灯条有问题,花费了不少时间。
配置截面在最左侧第1个
要注意,有用的灯效才打开,也就是该配置的右上角显示绿色。 上图中的RPMS 是点击 Add effect 新加的。 主要是设置从第几颗灯开始亮,以及分成几个阶段,每段的显示灯珠数量、颜色,还有在引擎转速达到百分之多少时亮那个段的灯。
官方教程: LED Editor guide · SHWotever/SimHub Wiki · GitHub
四、数码管显示内容的配置
这一部分单独拿出来讲,因为比较繁琐
4.0 这是修改后的步骤,4.1→4.5是最开始写的,逻辑有些不清,但也可以看。
4.0.1 如下图位置,可以增加一个新的屏幕配置项,并将其命名为自己喜欢的名称。也就是说,我们的两块数码管屏,都在这个配置项内配置,为其配置内容。
4.0.1双击点开你要编辑的屏幕配置的名称,开始配置。
先点击 0,“Display4F-module 1” ;→然后点击 1 ,ADD,增加要显示的内容;→点击2,“SimHub Property”,从SimHub中链接一个信息到当前编辑的屏幕;→点击3,PICK弹出可选属性参数的对话框;→点击4,输入参数的关键字,比如 time;→点击5,也就是我们找到的要添加的信息;→点击6,ok,对话框结束,在7的位置出现我们选择显示的内容的🔗链接名称;→点击8,Save,保存配置结果
4.0.3 显示位数的设定
因为这个配置项是针对 TM1637芯片驱动的数码管的,一般默认是4位,而我们有一个6位的,因此要调节显示的位数的信息。例如下图中,我们对6位的数码管进行了年、月、日信息的配置。
先点击我们要配置的数码管,1 处;→再点击🔗名称,这样3的整个区域才会显示;→点击4处的+,增加到6;→再配置5,设置格式,可以手动输入,这里 yy.MM.dd 就是年月日,其他属性的参数可能格式不一样;第6处,选中表示字符从右往左显示;点击上一步中的 8 Save保存,即可
我的配置结果的图, 6位管显示的是24年04.08;4位管显示的是当前时间 10.07
4.0.4 如何让配置完成的配置项起效。
首先在配置项的上方选上 Ingame screen 和Ldle screen,游戏内和游戏外使用该配置
其次,也是真正起效的,在配置完成后,将你想要起效的 配置项拖动到最上方,使其名称前面显示一个很短的绿色竖条,即表示当前的配置项起作用。
小技巧:增加一个新的空配置项,命名为 Empty,什么都不配置,只打开Ldle screen,然后 Save,将其拖到最上方起效。可以让两个数码管什么都不显示,起到节能和延长使用寿命的目的。
********************以下为旧版的说明,也有一定的参考价值********************
4.1 软件内置了多个效果,一般是 TimeScreen,我们这里不是要显示时间,而是要显示车速和发动机转速,所以,点击配置单元右侧的 New Screen, 添加一个新 屏,将其命名为 Speed
4.2 双击打开新添加的屏,将上方的 ingame screen, ldle screen 都调成绿色,起效。 也记得将其他不用的屏的该项,调整为灰色。
下面是我添加过内容的,可以看到,第1个屏,有一个🔗 符号,显示 SpeedLocal,表示显示本地速度。第2个屏则显示Rpms,也就是发动机转速。
第1块 4位屏显示的内容
第2块 6位屏 显示的内容
4.3 如何添加这些信息?
假设我们还有第3块屏,则选往下的第3个方框(Display4F-module 3),点击ADD 是添加显示数据,点击 REMOVE SELECTED ,表示删除选中的带有🔗符号的数据内容。
4.4 在上面的步骤中点击 ADD,弹出下面的选项,输入你要的关键字,选定,ok,最后 Save
4.5 根据自己的设备的屏幕顺序,多实验几次,找到合适的。
五、其他的配置 LCD屏等
5.1 下图中的 TM1638 Leds 是另外一种数码管显示模块,因为我没有采用,所以也无从配置。可以看官方教程:Arduino Tm1638 Display Wiring · SHWotever/SimHub Wiki · GitHub
5.2 下图中显示的是如何配置可显示的发动机最高转速的
5.3 下图是配置 20x4 分辨率 的 LCD屏模块的。
官方教程: Arduino 20x4 or 16x2 I2C LCD · SHWotever/SimHub Wiki · GitHub