Ви не увійшли.
Сторінки 1
Доброго времени суток. Есть скетч, на 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)
Неактивний
Точку с запятой уберите, в операторе if. А также проясните что и где выполнялось и где у него начало, если хотите получить какой нибудь ответ.
Точку с запятой уберите, в операторе 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); // конец
}
}
Извиняюсь если не внятно объясняю
Неактивний
Ну так в тех местах откуда нужно вернуться и выполняйте проверку кнопки. Используйте оператор goto или return, для уменьшения количества скобок в тексте. Возврат же из дерева вычислений и прерывание процессов требует более сложной техники программирования, чем применяется у вас.
Ну так в тех местах откуда нужно вернуться и выполняйте проверку кнопки. Используйте оператор goto или return, для уменьшения количества скобок в тексте. Возврат же из дерева вычислений и прерывание процессов требует более сложной техники программирования, чем применяется у вас.
Возврат из дерева вычислений мне не нужен. Просто такого и не будет. Если я вас правильно понял. Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.
Неактивний
TrinketHidCombo.poll();
а где подключение библиотеки ?
Я для примера убрал из кода подключение библиотеки. Если есть мысли по этому вопросу можете на почту написать буду очень признателен.
Неактивний
... Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.
Да, во всех тех местах где, по логике, возможен или нужен выход из последовательности вычислений. Три дня - маловато, нужно хотя-бы четыре.
VectorCrush пише:... Мне нужно выполнять проверку после каждой (или через одну) строку? Я только три дня назад начал всем этим заниматься.
Да, во всех тех местах где, по логике, возможен или нужен выход из последовательности вычислений. Три дня - маловато, нужно хотя-бы четыре.
Четвёртый идёт Вчера начал по форумам искать.
Неактивний
И это не предел. Нужно не искать, нужно спрашивать. На всех форумах, во всех разделах. Стесняться не надо.
Да ну в пень всё это. Всем до фонаря. До сих пор не решил проблему. С прерываниями не могу так как на 328 две ноги аппаратного прерывания и их не могу использовать так как у меня USB HID на них. Делать опрос кнопки в трёхсот строчках бред полный. Даже если и с прерываниями что то выйдет то мне без delay совершенно не нужен этот проект. А сложный код для меня слишком сложно. Не так много времени свободного ради одного проекта учить язык программирования. Жаль задумка была хорошей. Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.
Неактивний
... Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.
Green пише:И это не предел. Нужно не искать, нужно спрашивать. На всех форумах, во всех разделах. Стесняться не надо.
Да ну в пень всё это. Всем до фонаря. До сих пор не решил проблему. С прерываниями не могу так как на 328 две ноги аппаратного прерывания и их не могу использовать так как у меня USB HID на них. Делать опрос кнопки в трёхсот строчках бред полный. Даже если и с прерываниями что то выйдет то мне без delay совершенно не нужен этот проект. А сложный код для меня слишком сложно. Не так много времени свободного ради одного проекта учить язык программирования. Жаль задумка была хорошей. Форумов 5 проштудировал. Уже и по личкам но все дохера умные и до рукожопов дела нет.
Нафига по личкам лазить ?
Вы тут не удосужились выложить нормально весь код. Если вы считаете, что кто-то будет колдовать над тем огрызком который тут привели... Тогда удачи в ожидании такого человека...
Неактивний
Ну во первых можно написать простой код типа
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
Сторінки 1