C++ не знаю, совсем начинающий, использовал библиотеку Гайвера обработки кнопок, но возникла необходимость функции, которую невозможно реализовать силами библиотеки. Сразу говорю - не знаю сколько это может стоить, не кидайтесь тапками. Итак, есть 3 кнопки аналоговой клавиатуры: load, unload и motorstop. Для каждой из них я прописал события в зависимости от типа нажатия, все работает, но в конце скетча есть вариант нажатия is.Click для кнопок load и unload, так вот при load.isClick должна запуститься выдача сообщений в сериалпорт "StartLoad" с интервалом 100ms на срок 1мин, но эту серию чтобы можно было прекратить досрочно кликом по кнопке motorstop (motorstop.isClick) и выдать при этом сообщение "MotorStop", также запущенную серию чтобы можно было прекратить досрочно длинным нажатием той же кнопки load в шаговом варианте (load.isStep) чтобы уже силами библиотеки привязанное к этому варианту сообщение "LoadStep" выдавалось с интервалом заданным в настройках библиотеки.
Тоже самое надо сделать и по отношению к кнопке unload - если срабатывает unload.isClick запускается серия сообщений "StartUnload" с интервалом 100ms на срок 1мин, но эту серию можно прекратить досрочно кликом по кнопке motorstop (motorstop.isClick) и выдать при этом сообщение "MotorStop", также запущенную серию можно прекратить досрочно длинным нажатием той же кнопки unload в шаговом варианте (unload.isStep) чтобы начало выдаваться сообщение "UnloadStep" с интервалом заданным в настройках библиотеки пока кнопка удерживается.
Ну вот и вся задача. По сути вторая часть задачи - это копирование первой части. только изменение названия кнопок и сообщений в сериал, просто я указал вторую часть из-за того, что я боюсь, что из-за каких-то возможных нюансов у меня не получится подвязать уже готовый рабочий кусок кода ко второй кнопке unload, так как я не знаю C++, а пользуюсь только функционалом библиотек.
А вот сам скетч
Регионально нахожусь в Украине, но с оплатой договоримся. Сроки 1-2 дня.
Тоже самое надо сделать и по отношению к кнопке unload - если срабатывает unload.isClick запускается серия сообщений "StartUnload" с интервалом 100ms на срок 1мин, но эту серию можно прекратить досрочно кликом по кнопке motorstop (motorstop.isClick) и выдать при этом сообщение "MotorStop", также запущенную серию можно прекратить досрочно длинным нажатием той же кнопки unload в шаговом варианте (unload.isStep) чтобы начало выдаваться сообщение "UnloadStep" с интервалом заданным в настройках библиотеки пока кнопка удерживается.
Ну вот и вся задача. По сути вторая часть задачи - это копирование первой части. только изменение названия кнопок и сообщений в сериал, просто я указал вторую часть из-за того, что я боюсь, что из-за каких-то возможных нюансов у меня не получится подвязать уже готовый рабочий кусок кода ко второй кнопке unload, так как я не знаю C++, а пользуюсь только функционалом библиотек.
А вот сам скетч
C++:
#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip
GButton load;
GButton unload;
GButton motorstop;
void setup() {
Serial.begin(9600);
}
void loop() {
int analog = analogRead(7);
motorstop.tick(analog < 940 && analog > 865); //2
load.tick(analog < 1024 && analog > 940); //1
unload.tick(analog < 865 && analog > 800); //3
if (motorstop.isSingle()) Serial.println("mStopSingle");
if (motorstop.isHold()) Serial.println("mStopHold");
if (motorstop.isDouble()) Serial.println("mStopDouble");
motorstop.resetStates();
if (unload.isStep()) {Serial.println("UnLoadStep");}
if (load.isStep()) {Serial.println("LoadStep");}
if (unload.isClick()) {Serial.println("StartLoad");}
if (load.isClick()) {Serial.println("StartUnload");}
}