2013-11-29 4 views
0

Я пытаюсь подсчитать количество нажатий кнопки на входе C.4 на пикасе 14M2. Тогда я хотел бы иметь «режим», который устанавливает 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 

ответ

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 х 20 мс), затем вывести это количество импульсов. Операторы паузы удостоверяются, что вы не считаете «отскоками» контактов переключателя, которые могут возникнуть в течение нескольких миллисекунд после нажатия или отпускания кнопки, а второй цикл гарантирует, что вы будете считать только один раз для каждого нажатия, а не для увеличения так же быстро, как PICAXE может идти до тех пор, пока вы держите кнопку нажатой! Вы не сказали, как долго B.4 должен опускаться между 5-секундными высокими импульсами - в коде выше я сделал это 1 секунду.

Если это не совсем то, что вы хотите, тогда не должно быть трудно понять, как его изменить, например, дождаться нескольких секунд после последнего времени, когда вы отпускаете кнопку.

Я использовал переменную слова для счетчика времени так, чтобы максимальное время ожидания не ограничивалось 255 отсчетами - вы могли бы изменить 200 в коде на любое значение до 65535, если хотите (но вы должен подумать о том, что может произойти, если оно приблизится к этому значению). Если вы начинающий PICAXE, прочитайте раздел руководства о том, как байтовые и текстовые переменные относятся друг к другу, что может быть не очевидным.

+0

Спасибо, что это было очень полезно. Я использовал этот код, и он работает фантастически. Я пошел и узнал еще несколько программ picaxe и, при необходимости, отредактировал ваш код. Спасибо большое! – user2149407

 Смежные вопросы

  • Нет связанных вопросов^_^