Помогите дописать скетч.

martinways

✩✩✩✩✩✩✩
23 Дек 2020
25
0
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++, а пользуюсь только функционалом библиотек.

А вот сам скетч
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");}
}
Регионально нахожусь в Украине, но с оплатой договоримся. Сроки 1-2 дня.