描述
在本教程中,我们将学习如何使用 LED 矩阵 MAX7219、温度和湿度传感器 DHT11 和 RTC DS1307 模块来显示当前温度、湿度、时间和日期。
观看视频!
第 1 步:您需要什么
-
Arduino UNO(或任何其他 Arduino)
-
LED矩阵。我们将使用 FC-16 模块,它具有四个级联的 8×8 LED 矩阵显示器和每个显示器的内置 MAX7219 LED 驱动器。
-
面包板
-
跳线
-
RTC DS1307 模块
-
DHT11传感器
-
Visuino 程序:下载 Visuino
第 2 步:电路
-
将 RTC DS1307 模块引脚[VCC] 连接到 Arduino 引脚[5V]
-
将 RTC DS1307 模块引脚[GND] 连接到 Arduino 引脚[GND]
-
将 RTC DS1307 模块引脚[SDA] 连接到 Arduino 引脚[SDA]
-
将 RTC DS1307 模块引脚[SCL] 连接到 Arduino 引脚[SCL]
-
将 DHT11 传感器引脚 [GND] 连接到 Arduino 引脚 [GND]
-
将 DHT11 传感器引脚 [VCC] 连接到 Arduino 引脚 [5V]
-
将 DHT11 传感器信号引脚 [S] 连接到 Arduino 数字引脚 [4]
-
将 LED 矩阵引脚 [VCC] 连接到 Arduino 引脚 [5V]
-
将 LED 矩阵引脚 [GND] 连接到 Arduino 引脚 [GND]
-
将 LED 矩阵引脚 [DIN] 连接到 Arduino 数字引脚 [11]
-
将 LED 矩阵引脚 [CS] 连接到 Arduino 数字引脚 [10]
-
将 LED 矩阵引脚 [CLK] 连接到 Arduino 数字引脚 [13]
注意:另请阅读下面的故障排除部分
第 3 步:启动 Visuino,并选择 Arduino UNO 板类型
Visuino:https ://www.visuino.eu也需要安装。下载免费版本或注册免费试用。
启动Visuino,如第一张图所示点击Visuino中Arduino组件(图1)上的“工具”按钮出现对话框时,选择“Arduino UNO”,如图2所示
第 4 步:在 Visuino 中添加组件
-
添加2X“比较整数值”组件
-
添加 2X“数字(布尔)值”组件
-
添加“延迟”组件
-
添加“数字多源合并”组件
-
添加“时钟发生器”组件
-
添加2X“计数器”组件
-
添加“ Maxim LED Display Controller SPI MAX7219/MAX7221 ”组件
-
添加“日期/时间值”组件
-
添加“实时时钟(RTC)DS1307 ”组件
-
添加“解码(拆分)日期/时间”组件
-
添加4X“格式化文本”组件
-
添加“ DHT11 ”组件
-
添加“ Text Mux(多通道切换) ”组件
-
添加“整数多源”组件
第 5 步:在 Visuino 设置组件中
-
选择“ Delay1 ”并在属性窗口中将“Interval (uS)”设置为 5000000
-
选择“ DigitalValue2 ”并在属性窗口中将“ Value ”设置为 True
-
选择“ ClockGenerator1 ”并在属性窗口中将“频率”设置为 10 并选择“启用”并单击 Pin 图标并选择“ Boolean SinkPin ”
-
选择“ Counter1 ”并在属性窗口中将Max>Roll Over设置为 False 并将Max>Value设置为 5
-
选择“ Counter1 ”并在属性窗口中将Min>Value设置为 -8
-
选择“ Counter1 ”并在属性窗口中将“ Reversed ”设置为 True
-
选择“ CompareValue1 ”并在属性窗口中将“ Value ”设置为 5
-
选择“ Counter2 ”并在属性窗口中将Max>Value设置为 3
-
选择“ Counter2 ”并在属性窗口中将Min>Value设置为 0
-
选择“ IntegerMultiSource1 ”并在属性窗口中设置为Output Pins to 3
-
双击“ LedController1 ”并在“Pixel Groups”窗口中将“ 2D Graphics ”拖到左侧
-
并在属性窗口中将“水平镜像”设置为真,将“水平反转”设置为真,并将“宽度”设置为 32
-
还在属性窗口中选择“元素”,然后单击 3 点按钮
在元素窗口中拖动:
-
左侧的“ Text Field ”并在属性窗口中将“ Wrap ”设置为False,然后单击“ X ”引脚按钮并选择“ Integer Sink Pin ”并单击“ Y ”引脚按钮并选择“ Integer Sink销"
-
“填充屏幕”到左侧
关闭“元素”窗口
关闭“像素组”窗口
-
选择“ DateTimeValue1 ”并在属性窗口中将“ Value ”设置为您当前的日期和时间
-
选择“ TextMux1 ”并在属性窗口中将“ Input Pins ”设置为 4
-
选择“ FormattedText1 ”并在属性窗口中将“ Text ”设置为%0%1
-
双击“ FormattedText1 ”并在元素窗口中
-
将“ Analog Element ”拖到左侧并在属性窗口中将“ Precision ”设置为1
-
将“文本元素”拖到左侧并在属性窗口中将“初始值”设置为 C
关闭元素窗口
-
选择“ FormattedText2 ”并在属性窗口中将“ Text ”设置为%0%1
-
双击“ FormattedText2 ”并在元素窗口中
-
将“ Analog Element ”拖到左侧并在属性窗口中将“ Precision ”设置为0
-
将“文本元素”拖到左侧并在属性窗口中将“初始值”设置为 %
关闭元素窗口
-
选择“ FormattedText3 ”并在属性窗口中将“ Text ”设置为%0:%1
-
双击“ FormattedText3 ”并在元素窗口中
-
将2X “文本元素”拖到左侧
关闭元素窗口
-
选择“ FormattedText4 ”并在属性窗口中将“Text”设置为%0.%1
-
双击“ FormattedText4 ”并在元素窗口中
-
将 2X“文本元素”拖到左侧
关闭元素窗口
第 6 步:在 Visuino Connect 组件中
-
将“ DateTimeValue1 ”引脚输出连接到“ RealTimeClock1 ”引脚设置
-
将“ RealTimeClock1 ”引脚控制 I2C 连接到Arduino引脚 I2C In
-
将“ RealTimeClock1 ”引脚输出连接到“ DecodeDateTime1 ”引脚输入
-
将“ DecodeDateTime1 ”引脚“月”连接到“ FormattedText4 >“ TextElement2 ”引脚
-
将“ DecodeDateTime1 ”引脚“Day”连接到“FormattedText4 > “TextElement1”引脚 In
-
将“ DecodeDateTime1 ”引脚“Hour”连接到“FormattedText3 > “TextElement1”引脚
-
将“ DecodeDateTime1 ”引脚“Minute”连接到“FormattedText3 > “TextElement2”引脚
-
将“ HumidityThermometer1 ”引脚传感器连接到Arduino板数字引脚 [4]
-
将“ HumidityThermometer1 ”引脚温度连接到“FormattedText1> AnalogElement1”引脚输入
-
将“HumidityThermometer1”引脚湿度连接到“FormattedText2>AnalogElement1”引脚输入
-
将“ FormattedText1 ”引脚输出连接到“ TextMux1 ”引脚[0]
-
将“ FormattedText2 ”引脚输出连接到“ TextMux1 ”引脚[1]
-
将“ FormattedText3 ”引脚输出连接到“ TextMux1 ”引脚[2]
-
将“ FormattedText4 ”引脚输出连接到“ TextMux1 ”引脚[3]
-
将“ TextMux1 ”引脚输出连接到“LedController1 > Text Field”引脚输入
-
将“ CompareValue2 ”引脚输出连接到“ Delay1 ”引脚“Start”和“ DigitalValue1 ”引脚时钟
-
将“ Delay1 ”引脚输出连接到“ DigitalValue2 ”引脚时钟
-
将“ DigitalValue1 ”引脚输出连接到“ DigitalMultiMerger1 ”引脚[0]
-
将“ DigitalValue2 ”引脚输出连接到“ DigitalMultiMerger1 ”引脚 [1]
-
将“ DigitalMultiMerger1 ”引脚输出连接到“ ClockGenerator1 ”引脚“启用”
-
将“ ClockGenerator1 ”引脚时钟连接到“ Counter1 ”引脚输入
-
将“ Counter1 ”引脚输出连接到“ IntegerMultiSource1 ”引脚输入,“ CompareValue1 ”引脚输入和“ CompareValue2 ”引脚输入
-
将“ CompareValue1 ”引脚输出连接到“ Counter2 ”引脚输入
-
将“ Counter2 ”引脚输出连接到“ TextMux1 ”引脚选择
-
将“ IntegerMultiSource1 ”引脚 [0] 连接到“LedController1 > 文本字段”引脚 Y
-
将“ IntegerMultiSource1 ”引脚 [1] 连接到“LedController1 > Fill Screen”引脚时钟
-
将“ IntegerMultiSource1 ”引脚 [2] 连接到“LedController1 > Text Field”引脚时钟
-
将“ LedController1 ”引脚输出 SPI 连接到Arduino 板引脚 SPI In
-
将“ LedController1 ”引脚芯片选择连接到Arduino 板数字引脚 [10]
第 7 步:生成、编译和上传 Arduino 代码
在 Visuino 中,在底部单击“构建”选项卡,确保选择了正确的端口,然后单击“编译/构建和上传”按钮。
第 8 步:播放
如果您为 Arduino UNO 模块供电,LED 矩阵将开始从底部到顶部显示温度、湿度、时间和日期。
恭喜!您已经使用 Visuino 完成了您的项目。还附上了我为本教程创建的 Visuino 项目文件,您可以下载并在 Visuino 中打开它:
第 9 步:故障排除
在我的情况下,当为 Arduino 供电时,LED 矩阵闪烁并且文本没有完全显示。这是因为 MAX7219 芯片对任何电压干扰都非常敏感。
为了解决这个问题,我在 LED Matrix VCC(+) 和 GND(-) 之间添加了一个 47uf 电解电容,确保正确连接电容,+ on (VCC) 和 - on (GND)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉