#1 2020-02-08 08:04:46

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Прошу помощи. Удержание кнопки.

Доброго времени суток. Есть скетч, на 11й pin стоит кнопка.  Как сделать что бы пока я держу выполнялось, после отжатия кнопки переходило в начало. Мне не нужно сразу весь а только тогда когда я держу кнопку и каждый раз сначала. Помогите пожалуйста уже третий день сижу кучу библиотек перепробовал.

#include "GyverButton.h"
GButton myButt(11, HIGH_PULL, NORM_OPEN);

void setup() { 
myButt.setDebounce(10);
myButt.setTimeout(10);
myButt.setTickMode(AUTO);
}

void loop() {
if (myButt.isHolded(11)) {
delay(2); // Начало и нужно в любой момент завершить по отжатию и вернуться в начало без выполнения далее и начать выполнение по нажатию снова  
TrinketHidCombo.mouseMove(5,5,0); // Очень много раз около 40-50
delay(2); // Много однообразного кода
TrinketHidCombo.mouseMove(5,5,0); // Много однообразного кода
delay(6); // Много однообразного кода
TrinketHidCombo.mouseMove(5,5,0); // конец
    }
}

Редактировался VectorCrush (2020-02-08 10:04:30)

#2 2020-02-08 09:07:00

Watchdog
Гость

Re: Прошу помощи. Удержание кнопки.

Точку с запятой уберите, в операторе if. А также проясните что и где выполнялось и где у него начало, если хотите получить какой нибудь ответ.

#3 2020-02-08 09:18:36

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Re: Прошу помощи. Удержание кнопки.

Watchdog пишет:

Точку с запятой уберите, в операторе if. А также проясните что и где выполнялось и где у него начало, https://forum.arduino.ua/post.php?tid=2131&qid=30606#если хотите получить какой нибудь ответ.

void loop() {
TrinketHidCombo.poll();
if (myButt.isHolded(11)) {
delay(2); // Начало и нужно в любой момент завершить по отжатию и вернуться в начало без выполнения далее и начать выполнение по нажатию снова  
TrinketHidCombo.mouseMove(5,5,0); // Очень много раз около 40-50
delay(2); // Много однообразного кода
TrinketHidCombo.mouseMove(5,5,0); // Много однообразного кода
delay(6); // Много однообразного кода
TrinketHidCombo.mouseMove(5,5,0); // конец
    }
}

Извиняюсь если не внятно объясняю

#4 2020-02-08 09:29:40

Watchdog
Гость

Re: Прошу помощи. Удержание кнопки.

Ну так в тех местах откуда нужно вернуться и выполняйте проверку кнопки. Используйте оператор goto или return, для уменьшения количества скобок в тексте. Возврат же из дерева вычислений и прерывание процессов требует более сложной техники программирования, чем применяется у вас.

#5 2020-02-08 09:33:49

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Re: Прошу помощи. Удержание кнопки.

Watchdog пишет:

Ну так в тех местах откуда нужно вернуться и выполняйте проверку кнопки. Используйте оператор goto или return, для уменьшения количества скобок в тексте. Возврат же из дерева вычислений и прерывание процессов требует более сложной техники программирования, чем применяется у вас.

Возврат из дерева вычислений мне не нужен. Просто такого и не будет. Если я вас правильно понял. Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.

#6 2020-02-08 09:52:03

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 668

Re: Прошу помощи. Удержание кнопки.

TrinketHidCombo.poll();

а где подключение библиотеки ?

#7 2020-02-08 10:02:47

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Re: Прошу помощи. Удержание кнопки.

renoshnik пишет:

TrinketHidCombo.poll();

а где подключение библиотеки ?

Я для примера убрал из кода подключение библиотеки. Если есть мысли по этому вопросу можете на почту написать буду очень признателен.

#8 2020-02-08 11:09:33

Watchdog
Гость

Re: Прошу помощи. Удержание кнопки.

VectorCrush пишет:

... Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.

Да, во всех тех местах где, по логике, возможен или нужен выход из последовательности вычислений. Три дня - маловато, нужно хотя-бы четыре. smile

#9 2020-02-08 11:16:00

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Re: Прошу помощи. Удержание кнопки.

Watchdog пишет:
VectorCrush пишет:

... Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.

Да, во всех тех местах где, по логике, возможен или нужен выход из последовательности вычислений. Три дня - маловато, нужно хотя-бы четыре. smile

Четвёртый идёт smile Вчера начал по форумам искать.

#10 2020-02-08 18:45:39

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 588

Re: Прошу помощи. Удержание кнопки.

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

#11 2020-02-10 14:21:46

VectorCrush
Участник
Зарегистрирован: 2020-02-08
Сообщений: 6

Re: Прошу помощи. Удержание кнопки.

Green пишет:

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

Да ну в пень всё это. Всем до фонаря. До сих пор не решил проблему. С прерываниями не могу так как на 328 две ноги аппаратного прерывания и их не могу использовать так как у меня USB HID на них. Делать опрос кнопки в трёхсот строчках бред полный. Даже если и с прерываниями что то выйдет то мне без delay совершенно не нужен этот проект. А сложный код для меня слишком сложно. Не так много времени свободного ради одного проекта учить язык программирования. Жаль задумка была хорошей. Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.

#12 2020-02-10 14:36:30

MikeM
Участник
Зарегистрирован: 2017-11-03
Сообщений: 87

Re: Прошу помощи. Удержание кнопки.

А что если так:
Пока кнопка нажата, на контроллер подаётся сигнал Reset. Когда кнопка нажимается, Reset снимается.

#13 2020-02-10 15:20:52

Watchdog
Гость

Re: Прошу помощи. Удержание кнопки.

VectorCrush пишет:

... Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.

С

#14 2020-02-10 19:55:28

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 668

Re: Прошу помощи. Удержание кнопки.

VectorCrush пишет:
Green пишет:

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

Да ну в пень всё это. Всем до фонаря. До сих пор не решил проблему. С прерываниями не могу так как на 328 две ноги аппаратного прерывания и их не могу использовать так как у меня USB HID на них. Делать опрос кнопки в трёхсот строчках бред полный. Даже если и с прерываниями что то выйдет то мне без delay совершенно не нужен этот проект. А сложный код для меня слишком сложно. Не так много времени свободного ради одного проекта учить язык программирования. Жаль задумка была хорошей. Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.

Нафига по личкам лазить ?
Вы тут не удосужились выложить нормально весь код. Если вы считаете, что кто-то будет колдовать над тем огрызком который тут привели... Тогда удачи в ожидании такого человека...

#15 2020-02-20 11:30:42

YK
Гость

Re: Прошу помощи. Удержание кнопки.

Ну во первых можно написать простой код типа

int step=0;
void loop() {
 
  // put your main code here, to run repeatedly:
if(myButt.isHolded(11))
  
  switch(step)
  {
    case 0: 
    case 1:
    case 2:
    case 3:
    case 4:
  }
  step++;
 
  if(step>4) step=0;
}else{
  step=0;
}
}

Ну или перейти к более сложной реализации вызовов функций в стеке ISR прерываний, либо через очереди от ISR , если код не сможет работать в ISR

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела