Поставить выполнение программы на паузу

Kaster308
Offline
Зарегистрирован: 25.12.2017

Здравствуйте! Подскажите как поставить выполнение программы loop на паузу нажатием кнопки, и возобновить рабату при повторном нажатии кнопки. Заранее спасибо.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Никак, нельзя остановить выполнение программы. Но можно перестать выполнять некоторые действия (или однократно выполнить, или несколько раз). Для этого есть флаги, условный оператор if else, функции, циклы. Короче, учитесь программировать.

Kaster308
Offline
Зарегистрирован: 25.12.2017

Jeka_M спасибо

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Почему нельзя? Нажали кнопку пауза, флаг isPaused выставился в true. В начале лупа вставляетет цикл типа

while(isPaused)
{
  if(digitalRead(btnPause)==HIGH)
    isPaused = false;
}

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

Kaster308
Offline
Зарегистрирован: 25.12.2017

Penni спасибо. Вчера сделал на флажках, как посоветовали ранее. Обязательно попробую и ваше предложение.

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

Здравствуйте. Вы можете сбросить код на этих флажки, буду благодарен

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Основная проблема в тупости такого высказывания:Поставить выполнение программы на паузу. Мы же не говорим работнику - Джон стань на паузу. Скорее Джон остановись. То есть Джон стань в состояние :"Остановка" или "Пауза". Фактически Джон будет жить , дышать (программа работать) но в режиме ПАУЗА.

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

Пауза - временный перерыв, а стоп это остановка. Но как сделать паузу на простом примере, чтобы нажал на кнопку и пауза, нажал еще раз продолжилось выполнение на таком простом примере. Буду благодарен

void setup () {
  pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом
}

void loop () {
  digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня
  delay (1000); // Цикл задержки на 1000 мс - 1 секунду
  digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW - признак низкого логического уровня
  delay (1000); // Цикл задержки на 1 секунду
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Scratch_nl пишет:

Пауза - временный перерыв, а стоп это остановка. Но как сделать паузу на простом примере, чтобы нажал на кнопку и пауза, нажал еще раз продолжилось выполнение на таком простом примере. Буду благодарен

void setup () {
  pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом
}

void loop () {
  digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня
  delay (1000); // Цикл задержки на 1000 мс - 1 секунду
  digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW - признак низкого логического уровня
  delay (1000); // Цикл задержки на 1 секунду
}

 

Это пример Blink. Ни одной кнопки там нихрена нету. 

renoshnik
Offline
Зарегистрирован: 11.04.2013

Scratch_nl пишет:

Пауза - временный перерыв, а стоп это остановка. Но как сделать паузу на простом примере, чтобы нажал на кнопку и пауза, нажал еще раз продолжилось выполнение на таком простом примере. Буду благодарен

void setup () {
  pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом
}

void loop () {
  digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня
  delay (1000); // Цикл задержки на 1000 мс - 1 секунду
  digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW - признак низкого логического уровня
  delay (1000); // Цикл задержки на 1 секунду
}

 

 

Вместо благодарностей прочитай пост #3 там уже все "разжевали" .

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

Верно, нужно добавить

renoshnik
Offline
Зарегистрирован: 11.04.2013

DetSimen пишет:

Scratch_nl пишет:

Пауза - временный перерыв, а стоп это остановка. Но как сделать паузу на простом примере, чтобы нажал на кнопку и пауза, нажал еще раз продолжилось выполнение на таком простом примере. Буду благодарен

void setup () {
  pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом
}

void loop () {
  digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня
  delay (1000); // Цикл задержки на 1000 мс - 1 секунду
  digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW - признак низкого логического уровня
  delay (1000); // Цикл задержки на 1 секунду
}

 

Это пример Blink. Ни одной кнопки там нихрена нету. 

так он хочет, что бы и кнопку и паузу ему сделали ...

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

это просто пример, просто мою задачу долго и трудно объяснять

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

дак попытайся в этот пример прикрутить сначала кнопку. 

b707
Offline
Зарегистрирован: 26.05.2017

renoshnik пишет:

так он хочет, что бы и кнопку и паузу ему сделали ...

а я яхту хочу...

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

int button = 3;
void setup () {
  pinMode (13, OUTPUT); // Назначение 13 вывода Arduino выходом
}

void loop () {

  digitalWrite (13, HIGH); // Включение 13 вывода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня
  delay (1000); // Цикл задержки на 1000 мс - 1 секунду
  digitalWrite (13, LOW); // Выключение 13 вывода, параметр вызова LOW - признак низкого логического уровня
  delay (1000); // Цикл задержки на 1 секунду
  if (digitalRead(button) == HIGH) {

  }
}


DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ути-пути, и чо теперь наша кнопка делает? 

sadman41
Offline
Зарегистрирован: 19.10.2016

DetSimen пишет:

ути-пути, и чо теперь наша кнопка делает? 

Нажимается.

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

ничего, а что она может здесь, включить светодиод или поставить на паузу, то как сделать паузу

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

если её перенести в начало loop, она может устанавливать/сбрасывать флаг паузы.  Дальнейшая программа, в зависимости от состояния этого флага будет пропускаться/выполняться. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

а я яхту хочу...

А я Ларису Ивановну :)))

bwn
Offline
Зарегистрирован: 25.08.2014

DetSimen пишет:

если её перенести в начало loop, она может устанавливать/сбрасывать флаг паузы.  Дальнейшая программа, в зависимости от состояния этого флага будет пропускаться/выполняться. 

Дида, а мну надо чтобы она в конце loop, мона?))))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Scratch_nl пишет:

это просто пример, просто мою задачу долго и трудно объяснять

Обычно такое бывает, когда автор плохо понимает, чего хочет.

Вот Вы говорите про "паузу", а что именно Вы под этим понимаете? Как должна работать программа на "паузе", и как - без "паузы"?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

bwn пишет:

Дида, а мну надо чтобы она в конце loop, мона?))))

Тебе - мона!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

bwn пишет:

DetSimen пишет:

если её перенести в начало loop, она может устанавливать/сбрасывать флаг паузы.  Дальнейшая программа, в зависимости от состояния этого флага будет пропускаться/выполняться. 

Дида, а мну надо чтобы она в конце loop, мона?))))

Проще перевернуть экран. Не то чтобы совсем будет в конце, но, по крайней мере - в нижней части экрана.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

еще, ТС, за дребезг контактов прочитай чонить. 

vvadim
Offline
Зарегистрирован: 23.05.2012

а ещё пин кнопки  в сетапе выставить на вход.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А нафига ?
Он и так по умолчанию на входе.