Если я правильно понял ваш вопрос, который вы хотите первым подсчитывать количество нажатий кнопок, затем вывод, что число 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, прочитайте раздел руководства о том, как байтовые и текстовые переменные относятся друг к другу, что может быть не очевидным.
Спасибо, что это было очень полезно. Я использовал этот код, и он работает фантастически. Я пошел и узнал еще несколько программ picaxe и, при необходимости, отредактировал ваш код. Спасибо большое! – user2149407