Прервать цикл

Kish
Offline
Зарегистрирован: 18.01.2014

Приветствую.

Вот код:

for (int j = 0; j <= 1; j++) {
   boolean autoloop = true;
   while(autoloop) {
      lcd.print("Ololo");
      if (button.update()) {
         if (button.read() == HIGH) {
            autoloop = false;
      }
}

Подскажите, пожалуйста, как грамотно прервать цикл for после первой итерации при нажатии на кнопку?

Спасибо.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Например, так, хотя непонятно, зачем здесь этот фор нужен. Непонятная задача, непонятное решение:

boolean autoloop = true;
for (int j = 0; ( j <= 1 ) && autoloop; j++)
{
   while(autoloop)
   {
      lcd.print("Ololo");
      if (button.update())
      {
         if (button.read() == HIGH)
         {
            autoloop = false;
            break;
         }
      }
   }
}

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

у Вас по какрму условию for заканчивается?

for (int j = 0; j <= 1; j++) {
   boolean autoloop = true;
   while(autoloop) {
      lcd.print("Ololo");
      if (button.update()) {
         if (button.read() == HIGH) {
            autoloop = false;
            j = 2;
      }
}

 

Kish
Offline
Зарегистрирован: 18.01.2014

В общем задача такова:

Есть 7 фаз работы. Для каждой фазы устанавливаются два значения, кроме первой фазы. Для нее выставляется только одно значение из этих двух. По нажатию на тактовую кнопку осуществляется переход к следующей фазе. Вот как должно выглядеть:

Фаза0 Значение1

Фаза1 Значение1

Фаза1 Значение2

Фаза2 Значение1

Фаза2 Значение2

Фаза3 Значение1

Фаза3 Значение2

.....

Вот я и начал извращаться с двумя циклами. Первый цикл for (его я здесь не показывал) прогоняет фазы, а второй цикл for (код приведен выше) выставляет Значение1 и Значение2. А прерывание в цикле я хотел сделать именно для первой фазы, чтобы не выставлялось Значение2. Вот такой извращенский метод :) Если кто-то сможет посоветовать адекватное решение, то буду только благодарен.

Спасибо.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%...

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

http://habrahabr.ru/post/160105/

забавная статья

http://gnu.linuxcenter.ru/pub/Arduino_Decimilia_100-106.pdf

 

Kish
Offline
Зарегистрирован: 18.01.2014

kisoft пишет:

http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%...

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

http://habrahabr.ru/post/160105/

забавная статья

http://gnu.linuxcenter.ru/pub/Arduino_Decimilia_100-106.pdf

Спасибо за ссылки, посмотрел. А в pdf что там может быть полезного? Пока что-то не увидел.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Там есть статья с примером машины состояний на Ардуино, ищите "Arduino: Набор барабанщика", 16 страница. Может поможет быстрее въехать

Kish
Offline
Зарегистрирован: 18.01.2014

Сделал вообще по-простому тупо - два массива. В одном названия фаз с повторениями, во втором - соответствующие первому значения :) Очень тупо и деревянно, но работает.

Спасибо всем за помощь.