Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

YK
2020-02-20 11:30:42

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

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

renoshnik
2020-02-10 19:55:28
VectorCrush пише:
Green пише:

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

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

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

Watchdog
2020-02-10 15:20:52
VectorCrush пише:

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

С

MikeM
2020-02-10 14:36:30

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

VectorCrush
2020-02-10 14:21:46
Green пише:

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

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

Green
2020-02-08 18:45:39

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

VectorCrush
2020-02-08 11:16:00
Watchdog пише:
VectorCrush пише:

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

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

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

Watchdog
2020-02-08 11:09:33
VectorCrush пише:

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

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

VectorCrush
2020-02-08 10:02:47
renoshnik пише:

TrinketHidCombo.poll();

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

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

renoshnik
2020-02-08 09:52:03

TrinketHidCombo.poll();

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

VectorCrush
2020-02-08 09:33:49
Watchdog пише:

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

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

Watchdog
2020-02-08 09:29:40

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

VectorCrush
2020-02-08 09:18:36
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); // конец
    }
}

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

Watchdog
2020-02-08 09:07:00

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

VectorCrush
2020-02-08 08:04:46

Доброго времени суток. Есть скетч, на 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); // конец
    }
}

Підвал форуму