Arduino支持包:数字输入和输出
在这个例子中,我们再次使用Arduino MEGA的数字输出,使用四位七段指示器5461as-1上的动态指示。 此外,我们将使用数字输入来切换显示的数据,我们将使用有限状态机实现输入信号的边缘选择。
导言
在前面的例子中,我们已经考虑过:编程一个[七段指标](https://engee.com/community/ru/catalogs/projects/arduino-semisegmentnyi-indikator )和动态显示。 在这个例子中,我们将结合这两个模型-5461as指示器的数字将动态切换,为每个数字显示相应的点火段序列。
由于该指标为四位数,并且该项目正在2026新年前夕开发,我们将通过触摸按钮实现年份变化的指示。
在示例中,我们还使用带有数字输入/输出的Arduino MEGA:30-36用于段,40-44用于数字,2用于按钮。
此外,该电路还需要:一个面包板,一个按钮,4个用于放电的330欧姆电阻,1个10kOhm电阻和一个用于防抖动电路的68nF电容。
硬件部分
连接图如下所示。
根据下表进行连接很方便:
|
Arduino引脚 |
联络电话5461AS-1 |
联络名称5461AS-1 |
图中电缆的颜色 |
|
2 |
- |
- |
粉红色 |
|
30 |
11 |
a |
红色 |
|
31 |
7 |
b |
橙色 |
|
32 |
4 |
c |
黄色 |
|
33 |
2 |
d |
绿色 |
|
34 |
1 |
e |
蓝色 |
|
35 |
10 |
f |
蓝色 |
|
36 |
5 |
g |
紫罗兰 |
|
40 |
12 |
D1 |
棕色(330欧姆后) |
|
41 |
9 |
D2 |
赭石(通过330欧姆) |
|
42 |
8 |
D3 |
灰色(330欧姆后) |
|
43 |
6 |
D4 |
白色(通过330欧姆) |
|
5V |
- |
- |
红色 |
|
GND |
- |
- |
黑色 |
示例模型
示例模型如下面的屏幕截图所示。:
动态显示(段切换)的控制方式与[LED矩阵](https://engee.com/community/ru/catalogs/projects/6b153737-49ec-451b-a9b7-a7728410833b ),除了只有4位数字从最低切换到最高。
座 on_digit 它还确定了点燃的放电的数量,所有的段都在放电夹杂物之间熄灭。 所以块中的序列是这样定义的:
on_digit_data = [1, 0, 2, 0, 3, 0, 4, 0];
包括区段的序列的形成与用[七区段指示符]的示例类似地实施(https://engee.com/community/ru/catalogs/projects/arduino-semisegmentnyi-indikator )。 用于在块中启用序列段的控制数据 Repeating Sequence Stair,其中,根据接通的数字指示器,将一个或另一个数字传送到输出以供显示。 以下输入数据在模型中设置:
year25_data = [2, 11, 0, 11, 2, 11, 5, 11];
year26_data = [2, 11, 0, 11, 2, 11, 6, 11];
在这里,向量包含一个数字 11 -对于开关 multiportswitch 它超出了输入数字的范围,这导致它切换到默认输入,将序列转移到段。 [0, 0, 0, 0, 0, 0, 0].
用于切换输入数据的信号源是来自[Arduino-digitalRead]支持包的Arduino外设单元(https://engee.com/helpcenter/stable/ru/hardware-arduino/arduino-digitalread.html )。 块中设置数字输入号。 - 2. 使用有限状态机 edge_detector (座 Chart)输入信号的前沿被选择。 也就是说,当您单击按钮时,指示器的输入数据源将从块切换 year25 每块 year26.
准备工作
使用这段代码,我们自动启动Engee服务器程序。综合服务:
import .engee.package as epkg
const PKGNAME = "Engee-Device-Manager"
function epkg_start(pkg::String)
if !epkg.isinstalled(pkg)
@info "Package not installed. Installing and Starting..."
epkg.install(pkg)
@info "Package is up to date. Starting..."
# println("链接连接到服务器:\n"*epkg.开始(pkg))
else
updates = epkg.checkupdates(pkg)
if isnothing(updates)
@info "Package is up to date. Starting..."
# println("链接连接到服务器:\n"*epkg.开始(pkg))
else
@info "Updates available. Reinstalling and Starting..."
epkg.update(pkg)
@info "Package is up to date. Starting..."
# println("链接连接到服务器:\n"*epkg.开始(pkg))
end
end
end
epkg_start(PKGNAME)
同样在幕后,[像往常一样](https://engee.com/community/ru/catalogs/projects/bc465b1d-9127-43a4-b73a-de7999ea6510 ),让我们启动Engee客户端程序。集成和连接我们的设备.
模型执行
让我们在独立模式下运行模型。
在记录中,我们可以看到所有嵌入的功能:
-按数字动态显示,
-将设定的数值输出成段,
-沿输入信号前沿切换显示数据
按预期实施。
结论
在这个例子中,我们结合了前面两个使用支持包的Arduino MEGA数字输出的例子,动态显示和七段数字的输出。 此外,我们添加了一个数字输入,并使用有限状态机实现了分配信号前沿的逻辑。