Ви не увійшли.
Сторінки 1
Создатель библиотеки уже помог мне. Всем спасибо!
Да, но как запустить серию постоянно повторяющихся "Waiting" с периодичностью 500мс по короткому клику? По длинному нажатию серию я уже запускал по инструкции библиотеки, а с ONECLICK не знаю как запустить серию повторений.
Та не, дружище, с LONGCLICK я уже разобрался и буду его применять для других функций, а теперь мне надо написать код, который по КОРОТКОМУ нажатию на кнопку должен выдать сначала Serial.println("Ready"); , а потом запустить СЕРИЮ из одинаковых Serial.println("Waiting..."); с периодичностью 500мс, эту серию чтобы можно было остановить ВТОРОЙ кнопкой. Я уже понял, что эта библиотека не способна выдавать серию по короткому нажатию, только через длинное нажатие. Поэтому надо делать свой код запуска серии, а с этим у меня проблемы))
Не получается, попробовал сделал так
case BTN_DOWN:
Serial.println("Ready");
case BTN_ONECLICK:
Serial.println("Waiting...");
Но серия при этом не запускается, а только дублируется Waiting..., вот так:
Ready
Waiting...
Waiting...
#include <shButton.h> // https://github.com/VAleSh-Soft/shButton
#define button1 5
#define button2 4
shButton btn1(button1);
shButton btn2(button2);
void setup()
{
Serial.begin(115200);
btn1.setLongClickMode(LCM_CLICKSERIES);
btn1.setVirtualClickOn(true);
}
void loop()
{
switch (btn1.getButtonState())
{
case BTN_DOWN:
Serial.println("Ready");
case BTN_ONECLICK:
Serial.println("Waiting...");
break;
}
switch (btn2.getButtonState())
{
case BTN_DOWN:
Serial.println("GOOD");
break;
}
}
Чет никак не могу придумать как настроить ONECLICK на выдачу серии как при LONGCLICK и выключить эту серию нажатием другой кнопки.
Спасибо, все получилось и от delay избавился. Но не могу придумать как решить другую задачу - Короткое нажатие кнопки - выдает 1 раз Serial.println("Ready"); и запускается серия Serial.println("Waiting..."); которая должна продолжаться пока не нажать кликом другую кнопку. Чет в библиотеке я не нашел запуск серии по короткому клику.
Для начала покажите полный код
Так это и есть полный код, я только не показал первую строку адреса библиотеки #include <shButton.h> // https://github.com/VAleSh-Soft/shButton
Ну конечно это лишь часть того, что мне нужно реализовать в устройстве, но остальное нет смысла показывать, там почти то же самое по другим кнопкам разбросано, нужно довести до рабочего состояния этот кусок, остальное уже слепится.
Попробовал сейчас обернуть в while (digitalRead(button1) == LOW) - получилось, при нажатой кнопке выдает каждую секунду "Waiting" но вылезла другая проблема - мне понадобилось чтобы при нажатой кнопке 1 раз выдало сообщение "Ready", а потом постоянно каждую секунду "Waiting", но при отпускании кнопки сразу выдает поток из 30-40 сообщений "Ready" и только потом "Good" , а надо чтобы при отпускании кнопки просто переставало выдавать каждую секунду "Waiting" и сразу показало сообщение "Good".
#include <shButton.h> // https://github.com/VAleSh-Soft/shButton
#define button1 5
shButton btn1(button1);
void setup()
{
Serial.begin(115200);
}
void loop()
{
switch (btn1.getButtonState())
{
case BTN_DOWN:
Serial.println("Ready");
while (digitalRead(button1) == LOW) {
Serial.println("Waiting...");
delay(1000);
}
break;
case BTN_UP:
Serial.println("Good!");
break;
}
}
может надо правильно условие задать для while, я просто не знаю как.
Понятное дело, что эти сообщения чисто для примера и проверки кода, в конечном коде будут команды для управления другим устройством по serial порту. Просто мне сейчас нужно отладить функциональные элементы кода. Второй раз в жизни леплю скетч и ничего пока не знаю, учусь на ходу.
Товарищи, может кто подскажет, только начинаю осваивать азы, написал скетч чтобы при нажатии кнопки в порт выдавало сообщение Waiting... , а при отпускании Good!, так вот не получается сделать так, чтобы при нажатой кнопке сообщение Waiting... постоянно выдавалось каждую секунду, а при отпускании кнопки прекращало и 1 раз выдавало Good!. Пытался заворачивать Serial.println("Waiting..."); в for, но не работает так как надо.
#define button1 5
shButton btn1(button1);
void setup()
{
Serial.begin(9600);
}
void loop()
{
switch (btn1.getButtonState())
{
case BTN_DOWN:
Serial.println("Waiting...");
break;
case BTN_UP:
Serial.println("Good!");
break;
}
}
Сторінки 1