请教关于子线程模块的问题
我使用mind+子线程模块做了如下程序,想在设定时间到达时,灯带14颗灯全亮但实际执行时,只有5个灯亮
请高手帮我分析一下,到底是哪里的问题,谢谢。
硬件:Ardinuo Mega 2560
DS1307
OLED12864
串口MP3模块
7颗灯的RGB灯带X2 串联
szjuliet 发表于 2021-1-28 08:43
是哪5个灯亮?尝试分别只接一条灯带进行调试,看看是灯带的问题还是连接线的问题 ...
亮灯的那个模块,放在主程序里面,14个灯都会亮,所以两个灯带之间的连线应该没问题。
现在只有最靠近主控的5个灯亮
szjuliet 发表于 2021-1-28 09:23
放在主程序里是顺序执行,所以会点亮所有灯才执行下一语句。放到子线程里是并行执行,所以会和主程序的语 ...
我主程序里面只有按了按键才会熄灭灯,不按按键灯不会熄灭的。
还有即使按了按键,是全部熄灭,不是只熄灭一部分呀。
从我的测试看,子程序里面可以控制1-5个灯亮,再多了就不受控了。 本帖最后由 szjuliet 于 2021-1-28 11:26 编辑
海上东山 发表于 2021-1-28 09:36
我主程序里面只有按了按键才会熄灭灯,不按按键灯不会熄灭的。
还有即使按了按键,是全部熄灭,不是只熄 ...
在主程序中原先点灯的位置加一条调用子线程的语句 szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句
现在没有办法试,等回去试试,但我估计应该还会是一样的结果。
我昨天本来想开一个子线程,用来获取DS1307的时间,并在OLED12864上显示,结果发现无法显示。
然后又想简单点,看看子线程是否执行了,所以使用灯带来指示,发现只能亮5颗以下的灯,实在没办法了,才在论坛里发帖的。
总感觉不是程序问题,应该是子线程模块执行机理或资源冲突的问题。
版主能否讲一下子线程模块的执行机理,我学习学习。 szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句
这样一个灯都不亮了
szjuliet 发表于 2021-1-28 11:09
在主程序中原先点灯的位置加一条调用子线程的语句
对程序进行了简化,图1所示程序运行时14个灯全部,图2所示程序运行时只有5个灯亮 海上东山 发表于 2021-1-28 19:42
对程序进行了简化,图1所示程序运行时14个灯全部,图2所示程序运行时只有5个灯亮 ...
这样调试清晰多了。我觉得你分析的对,有可能是资源冲突。你再把硬件极简化,只保留灯的模块,其余都不要,看看子线程能否正常把灯点亮。本来想帮你试试,但我手头只有UNO和NANO,在Mind+里都不支持子线程,明天再找找看有没有其他板子可以试一下。
https://mc.dfrobot.com.cn/thread-273911-1-1.html,这里有一个子线程的帖子,你可以看看。
页:
[1]