Программа с фиксированными и "резиновыми" периодами

по аналогии и сделал свое (кривое) условие. тот же блинк без делея, только не разницу во времени искал, а проверку кнопки вписал…

Недавно только было подобное.
Внимательно прочти (можешь всю тему):

И кто там миллис использует? А если этих “шагов” будет 10,20, 50? Изучай миллисы для начала.
Я бы сделал на простейшем конечном автомате на swich. По очереди меняя режимы в нужный момент, попутно сканируя кнопку.
Сами то мысленно проходили алгоритм кода?

Глянули на 0.1мкс состояние кнопки и пошли дальше.

Первое замечание: для того, чтобы алгоритм выглядел “линейным” снаружи, он совершенно не обязательно должен быть “линейным” внутри.
Второе замечание: при работе с технологическим оборудованием должны быть предусмотрены “аварийные” режимы. Внедрение таких режимов в “линейный” код невозможно.

Теперь советы по задаче:

  1. Возьмите исходники blink и blink without delay и внимательно сравните их между собой.
  2. Почитайте про “конечные автоматы”.
2 лайка

по задумке и должно было пойти дальше, на следующий шаг после 0,1мкс, но сейчас ждет долго, сумму первого и второго этапа.

засечку времени waitTimer = millis(); не сделал для этого условия?

спасибо за идею, буду пробовать

пока что ничего умнее такого не придумал…

 void loop() {
unsigned long Step = millis(); 

  switch (Step) {
    case 0 ... 9000:
      Serial.print("Step1-comperess air");
      break;
    case 9001 ... 29000:
      Serial.print(" Step2-Pressure chamb");
      break;
    case 29001 ... 39000:
      Serial.print("Step3-");     
      break;
    case 39001 ... 55555:
      Serial.print("Step4-Sterilizing");
      break;
    case 55556 ... 400000:
      Serial.print("Step5-Finished");
      break;
    default:
      Serial.println("ERROR");
  }

но это все равно не то - во первых значения шагов приходится править руками в теле программы, а во вторых - как реализовать неопределенно долгое ожидание нажатия, и переход на следующий шаг при нажатии?
те примеры которые нашел - очень примитивные, максимум что пинами выкл вкл, про логические операции внутри кейсов ничего не сказано :expressionless:
дайте наводку плз, не посылайте курить букварь…

Конечно не то.
Нужно использовать отсчеты на миллис для достижения точных интервалов и «флаги» - для не точных интервалов.
Например, если кто-то нажал кнопку N пока выполняется алгоритм M нужно установить флаг о нажатии кнопки N и в loop, в зависимости от нужного алгоритма,

  1. Либо прервать алгоритм M
  2. Либо завершить всю программу
  3. Либо переключиться на алгоритм G
  4. Либо проигнорировать нажатие, если взведен другой флаг - S.

Ну и так далее…

Конечно не то.
Вы представляете, как это должно работать? Если, скажем, цикл проходит за 10 мкс, то строка 6 будет распечатана 900000 раз.

Кстати, я Вам посоветовал почитать о конечных автоматах.

становится “топом”

Кто тут на пенсии? Напишите уже бестселлер “Конечные автоматы”. Чтоб каждая домохозяйка читала взахлёб))

1 лайк

Может очередные 100500 курсы в интернете открыть? “За 5000р наш вебинар научит КА. По статистике 90% вакансий с окладом 100500р требуют основ КА”

Мне больше нравятся курсы “Как разбогатеть”. В 99% суть курса проста: “Это не так уж сложно - cобрать таких лохов, как Вы, уважаемые слушатели, и впарить им курс за дохрена денех:slight_smile:

2 лайка

мне вот другое не понятно, неужели не понимают, что лохи?

Ну почему не понимают. Просто богатеть очень хочется. Даже лохи не хотят быть нищими. Вот на этом курсы и строятся.

1 лайк

Патамушта кажный щетает, шо дурят лохов педальных - и правильно делают, но Я-то НЕ ЛОХ!!! Меня хер апйипёш!..
Вот так и растет благосостояние “тренеров личностного роста” ;). И лохов много, а НЕ-ЛОХОВ еще больше и денег у них еще больше! :rofl:

А прикинь кол-во лохов в нашей стране расеюшке… И сколько попрошаек на этом выиграло…

Более того - гордятся этим.

спасибо всем отозвавшимся, и пославшим меня… читать эти конечные автоматы…
до “изучения” конечно было далеко, но представление поимел… переписал на кейсах, и вроде даже заработало… :exploding_head: