0

我正在尝试计算在 picaxe 14M2 上的输入引脚 C.4 上按下按钮的次数。然后我想要一个“模式”,将 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
4

1 回答 1

2

如果我理解您的问题,您想先计算按下按钮的次数,然后输出 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 就能跑得最快!你没有说 B.4 在 5 秒的高脉冲之间应该变低多长时间 - 在上面的代码中我已经做了 1 秒。

如果这不是您想要的,那么不难弄清楚如何修改它,例如在您最后一次释放按钮后等待几秒钟。

我为计时计数器使用了一个单词变量,因此最长等待时间不限于 255 个计数 - 如果您愿意,您可以将代码中的 200 更改为最高 65535 的任何值(但您应该考虑一下如果它接近该值可能会发生什么)。如果您是 PICAXE 初学者,请阅读手册中有关字节和字变量如何相互关联的部分,这可能并不明显。

于 2014-01-14T16:47:35.000 回答