3502浏览
查看: 3502|回复: 7

[求助问答] 请教关于子线程模块的问题

[复制链接]
我使用mind+子线程模块做了如下程序,想在设定时间到达时,灯带14颗灯全亮
但实际执行时,只有5个灯亮
请高手帮我分析一下,到底是哪里的问题,谢谢。

硬件:Ardinuo Mega 2560
          DS1307
          OLED12864
          串口MP3模块
          7颗灯的RGB灯带X2 串联


捕获.JPG

海上东山  学徒
 楼主|
来自手机

发表于 2021-1-28 08:54:52

szjuliet 发表于 2021-1-28 08:43
是哪5个灯亮?尝试分别只接一条灯带进行调试,看看是灯带的问题还是连接线的问题 ...

亮灯的那个模块,放在主程序里面,14个灯都会亮,所以两个灯带之间的连线应该没问题。

现在只有最靠近主控的5个灯亮
回复

使用道具 举报

海上东山  学徒
 楼主|
来自手机

发表于 2021-1-28 09:36:39

szjuliet 发表于 2021-1-28 09:23
放在主程序里是顺序执行,所以会点亮所有灯才执行下一语句。放到子线程里是并行执行,所以会和主程序的语 ...

我主程序里面只有按了按键才会熄灭灯,不按按键灯不会熄灭的。
还有即使按了按键,是全部熄灭,不是只熄灭一部分呀。

从我的测试看,子程序里面可以控制1-5个灯亮,再多了就不受控了。
回复

使用道具 举报

szjuliet  版主

发表于 2021-1-28 11:09:13

本帖最后由 szjuliet 于 2021-1-28 11:26 编辑
海上东山 发表于 2021-1-28 09:36
我主程序里面只有按了按键才会熄灭灯,不按按键灯不会熄灭的。
还有即使按了按键,是全部熄灭,不是只熄 ...

在主程序中原先点灯的位置加一条调用子线程的语句
回复

使用道具 举报

海上东山  学徒
 楼主|

发表于 2021-1-28 14:24:22

szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句

现在没有办法试,等回去试试,但我估计应该还会是一样的结果。

我昨天本来想开一个子线程,用来获取DS1307的时间,并在OLED12864上显示,结果发现无法显示。
然后又想简单点,看看子线程是否执行了,所以使用灯带来指示,发现只能亮5颗以下的灯,实在没办法了,才在论坛里发帖的。

总感觉不是程序问题,应该是子线程模块执行机理或资源冲突的问题。

版主能否讲一下子线程模块的执行机理,我学习学习。
回复

使用道具 举报

海上东山  学徒
 楼主|

发表于 2021-1-28 19:17:26

szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句

这样一个灯都不亮了
捕获11.JPG
回复

使用道具 举报

海上东山  学徒
 楼主|

发表于 2021-1-28 19:42:54

szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句

对程序进行了简化,图1所示程序运行时14个灯全部,图2所示程序运行时只有5个灯亮
捕获2.JPG
捕获3.JPG
回复

使用道具 举报

szjuliet  版主

发表于 2021-1-29 00:11:57

海上东山 发表于 2021-1-28 19:42
对程序进行了简化,图1所示程序运行时14个灯全部,图2所示程序运行时只有5个灯亮 ...

这样调试清晰多了。我觉得你分析的对,有可能是资源冲突。你再把硬件极简化,只保留灯的模块,其余都不要,看看子线程能否正常把灯点亮。本来想帮你试试,但我手头只有UNO和NANO,在Mind+里都不支持子线程,明天再找找看有没有其他板子可以试一下。
https://mc.dfrobot.com.cn/thread-273911-1-1.html,这里有一个子线程的帖子,你可以看看。
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail