Видео: Открытые уроки по Arduino. Урок 1: знакомимся с Arduino 2024
Цикл PBASIC FOR заставит BASIC Stamp в вашем проекте электроники выполнить цикл определенное количество раз. Это также отличный инструмент для выполнения действий на нескольких выводах ввода-вывода. Таким образом, цикл FOR является идеальным способом реализации программы LED Flasher.
Базовая структура цикла FOR выглядит следующим образом:
FOR counter = начальное значение TO конечное значение Заявления … NEXT
Вот пример, который мигает светодиодом на выводе 0 десять раз:
X VAR BYTE FOR X = 1 TO 10 HIGH 0 PAUSE 500 LOW 0 PAUSE 500 NEXT
В этом примере цикл выполняется десять раз. Значение переменной X увеличивается на 1 каждый раз через цикл.
В предыдущем примере программа фактически не использовала переменную счетчика. Это часто встречается в циклах FOR; иногда единственной целью для переменной счетчика является контроль того, сколько раз цикл выполняется. Но вы можете использовать переменную счетчика в цикле. Например, вот цикл, который делает каждый вывод ввода-вывода на Stamp HIGH на одну десятую секунды:
IO_Pin VAR BYTE FOR IO_Pin = 0 TO 15 HIGH IO_PIN PAUSE 100 LOW IO_PIN NEXT
Обычно переменная счетчика увеличивается на один на каждом проходе через цикл. Вы можете использовать ключевое слово STEP, чтобы указать другое значение шага, если хотите. Когда вы используете ключевое слово STEP, базовая структура оператора FOR выглядит следующим образом:
FOR counter = start-value TO end-value STEP step-value Заявления … NEXT
Например, вы можете мигать светодиодами только на четных выводах следующим образом:
Led VAR Byte FOR Led = 0 TO 10 STEP 2 HIGH Led PAUSE 100 LOW Led NEXT
Еще одна интересная особенность циклов FOR состоит в том, что они могут рассчитывать назад. Все, что вам нужно сделать, это указать начальное значение, которое больше конечного значения, например:
Led VAR Byte FOR Led = 10 TO 0 STEP 2 HIGH Led PAUSE 100 LOW Led NEXT
Эта версия светодиодной вспышки программа использует пару циклов FOR, чтобы сначала мигать светодиодами в одном направлении, а затем в противоположном направлении. Первая петля FOR мигает светодиодами на выводах 0, 2, 4, 6 и 8. Затем вторая петля FOR мигает светодиодами на контактах 10, 8, 6, 4 и 2. Оба цикла FOR содержатся в пределах DO который удерживает светодиоды подпрыгивая назад и вперед на неопределенный срок.
'Светодиодная программа Flasher' Doug Lowe '10 июля 2011 г. «Эта программа мигает светодиодами, подключенными к контактам 0, 2, 4, 6, 8 и 10' назад и вперед, как глаза Cylon. «В этой версии программы используются циклы FOR.'{$ STAMP BS2}' {$ PBASIC 2. 5} Led VAR Byte Main: FOR Led = 0 TO 8 STEP 2 HIGH Led PAUSE 100 LOW Led NEXT FOR Led = 10 TO 2 STEP 2 HIGH Led PAUSE 100 LOW Led NEXT GOTO Main
Когда петли FOR вложены, самый внутренний цикл (ы) завершает весь цикл каждый раз через внешний цикл. Если цикл FOR, который повторяется десять раз, помещается во внешний цикл, который повторяется десять раз, операторы внутри самого внутреннего цикла будут выполнять в общей сложности 100 раз - десять раз для каждого из десяти повторений внешнего цикла.
Этот использует внешний цикл FOR, который меняет время задержки для операторов PAUSE. В результате светодиоды проходят очень быстро, но медленнее на 10 мс при каждом повторении внешнего контура, пока задержка не достигнет одной секунды на каждый светодиод.
'LED Flasher Program' Doug Lowe '10 июля 2011 г. «Эта программа мигает светодиодами, подключенными к контактам 0, 2, 4, 6, 8 и 10' назад и вперед, как глаза Cylon». Эта версия программы использует вложенные петли FOR-NEXT, чтобы замедлить «радикальное движение светодиодов». '{$ STAMP BS2}' {$ PBASIC 2. 5} Led VAR Byte Speed VAR Word FOR Speed = 10 TO 1000 STEP 10 FOR Led = 0 TO 8 STEP 2 HIGH Led PAUSE Speed LOW Led NEXT FOR Led = 10 TO 2 STEP 2 HIGH Led PAUSE Speed LOW Led NEXT NEXT