for循环,为什么i值进不去程序,只有s2舵机在运行
-
import time from pyb import Servo s1 = Servo(1) # P7 x轴 s2 = Servo(2) # P8 y轴 s1.pulse_width(1500) s2.pulse_width(1500) begin = 2 while(1): if begin >= 2: for i in range(300): for u in range(400): s1.pulse_width(1500 - i) s2.pulse_width(1500 - u) time.sleep(20)
-
希望999小姐姐给小白作个解答 谢谢了!
-
现在看这个思维是错的。我的初衷是想让两个舵机分别在两个for 里面,同时运行,请问需要怎么修改
-
好了琢磨出来了用了 list 和zip
-
@rkn5 竟然只调用一组数据。。。还是不行。。求解答啊
-
![0_1598532827976_VAU4XLNH5W480O6)]ZLOKAH.png](https://fcdn.singtown.com/1588249b-1e49-4b6c-a783-90081a466f75.png)
“ zip()一旦第一个迭代器用尽,将停止迭代。如果您要继续进行到最后一次操作,并提供其他填充值,则可以使用itertools.zip_longest()。 ”“
但是micro python 没有这个itertools.zip_longest()。 啊啊 苦恼
-
问题就是如何让两个舵机,分别在两个for循环里同时运行,且它们迭代的范围不同@kidswong999
-
故障分析:因为u循环在i循环里面,所以顺序是:
i: 0 u: 1 i: 0 u: 2 i: 0 u: 3 i: 0 u: 4 i: 0 u: 5 i: 0 u: 6 i: 0 u: 7 i: 0 u: 8 i: 0 u: 9 i: 0 u: 10 i: 0 u: 11
一直等到u到了400,i才会变成1。u每数400下,i才加1。
解决办法:改一下代码,用两个变量:
import time from pyb import Servo s1 = Servo(1) # P7 x轴 s2 = Servo(2) # P8 y轴 s1.pulse_width(1500) s2.pulse_width(1500) begin = 2 i = 0 u = 0 while(1): if begin >= 2: i+=1 u+=1 if i>300: i=0 if u>400: u=0 s1.pulse_width(1500 - i) s2.pulse_width(1500 - u) print(i,u) time.sleep(20)
-
@kidswong999 万分感谢! 还可以请问一下怎么让i到300就停下吗 不让它继续生成
296 296
297 297
298 298
299 299
300 300
0 301
1 302
2 303
3 304
4 305
5 306
6 307
7 308
-
@kidswong999 或者就像我描述的那样 让两个舵机,分别在两个for循环里同时运行,且它们迭代的范围不同
-
@kidswong999 我把
if i>300:
i=0
if u>400:
u=0
改成
if i>300:
i=300
if u>400:
u=400
现在可以符合我自己的需求了 谢谢你!!!