Budget: 300 UAH Deadline: 2 days
Готов помочь вам, есть опыт С++, могу пояснить что-то, если понадобиться. За обсуждение деталей пишите в личку.
Есть 3 кнопки аналоговой клавиатуры: load, unload и motorstop.
Для отработки кнопок я использовал библиотеку Алекса Гайвера, там как там реализовано много удобных вариантов нажатия - клик по кнопке (.isClick), однократное нажатие isSingle, двойное нажатие isDouble, длинное нажатие (.isHold), выдача серии с заданным интервалом пока кнопка нажата (.isStep), пример шагового варианта if (load.isStep()) {Serial.println("LoadStep");} - при таком коде будет выдаваться серия сообщения с текстом LoadStep с интервалом заданным в настройках библиотеки пока держишь кнопку.
Что нужно дописать в скетч:
при срабатывании варианта нажатия isClick кнопки load (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++, а пользуюсь только функционалом библиотек.
А вот сам скетч
#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 (unload.isClick()) {Serial.println("StartLoad");}
if (load.isStep()) {Serial.println("LoadStep");}
if (load.isClick()) {Serial.println("StartUnload");}
}Budget: 300 UAH Deadline: 2 days
Готов помочь вам, есть опыт С++, могу пояснить что-то, если понадобиться. За обсуждение деталей пишите в личку.
Budget: 250 UAH Deadline: 2 days
Готов выполнить Ваш проект. Также есть возможность (если нужно) сделать без использования библиотеки, напрямую всё в коде прописать, так будет понятнее что откуда и как. В коде могу оставить комментарии, чтобы можно било потом легко разобраться что и как работает и в случае если нужно что-то поменять.