我正试着数一下在Picaxe14M2上输入引脚按下一个按钮的次数。然后,我想有一个‘模式’设置b.4高,持续5秒,然后低。这种“模式”需要重复按下按钮的次数。
如果这有意义的话,我该怎么做?
这是我到目前为止..。
init:
let b0 = 0
main:
low B.1
low B.2
low B.3
low B.4
low B.5
if pinC.4 = 1
let b0 = b0 +1
goto mode
Endif
goto main
mode:
high B.4
wait 5
low B.4
goto main发布于 2014-01-14 16:47:35
如果我理解你的问题,你想先数几下按钮,然后输出那5秒的脉冲。但是,您的程序将如何决定您已经完成了您的一系列按钮按下,并希望它继续和产生的脉冲序列?
这里有一个可能的解决方案,但您必须决定它是否合适,如果不是,您必须对其进行调整:
b0 = 0 ' initialise counting variable
w1 = 0 ' initialise timing variable (a 2-byte word)
countpresses:
pause 10 ' wait for 10 ms
w1 = w1 + 1 ' increment the timing variable
if pinC.4 = 0 then countpresses ' loop until button pressed
wait_release:
pause 10
w1 = w1 + 1 ' increment the timing variable
if pinC.4 = 1 then wait_release ' loop until button released
b0 = b0 + 1 ' increment the counter
if w1 < 200 then countpresses ' keep counting until 4 seconds have elapsed
if b0 > 0 then
for b1 = 1 to b0
high B.4
pause 5000 ' take B.4 high for 5 seconds
low B.4
pause 1000 ' and low for 1 second between pulses
next b1
endif这将计算你在4秒内按下按钮的次数(200 x 20毫秒),然后输出这个脉冲数。暂停语句确保不计算按钮按下或释放后几毫秒内可能发生的开关联系人的“反弹”,第二个循环确保每次按下按钮时只计算一次,而不是按下按钮后PICAXE的增长速度!你没有说在5秒的高脉冲之间,B.4应该低多久--在上面的代码中,我已经做了1秒。
如果这不是您想要的,那么应该不难找到如何修改它,例如,在您上一次释放按钮后等待几秒钟。
我在计时计数器上使用了一个单词变量,这样等待的最长时间就不限于255个计数--如果您愿意,可以将代码中的200更改为任意值,最多可达65535 (但您应该考虑如果接近该值可能会发生什么)。如果您是PICAXE初学者,那么请阅读手册中关于字节和单词变量如何相互关联的部分,这可能并不明显。
https://stackoverflow.com/questions/20292299
复制相似问题