lilik
03.Ноябрь.2025 15:19:36
26
alexshuv72:
Как заменить delay.
Самый дубовый и понятный способ вместо delay(); написать свою функцию delay_(); и в скетче своём заменить одни делеи на другие. Преимущество перед встроенной функцией “уелд“ в том, что внутри delay_() можно использовать delay();
void delay(int T){
long Y=millis();
while(millis()-Y<T){
// тут проверяем кнопки и т.д.
}
}
Что такое ТС, код видел завтра займусь коррекцией своего скетча естественно отпишусь и выложу что получилось сегодня уже занялся ПИВОм!
lilik
03.Ноябрь.2025 15:22:41
28
WladDrakula:
понял ли ТС объяснения?
Теперь проще вместо форумов мучать ИИ, методично объясняя чего хочется.
1 лайк
lilik
03.Ноябрь.2025 15:24:08
29
alexshuv72:
Что такое ТС
Это автор текущей темы. Топик стартёр (в тапках старпёр)
Лучше быть старпером чем прыщем!!!
alexshuv72:
уже занялся ПИВОм!
Вот на этой мажорной ноте предлагаю и закрыть тему.
4 лайка
```
#define MOT1 11
//#define MOT2 12
#define MOT3 10
const int ledPin = 12;
bool flag = false;
bool ledOn = false;
unsigned long timer = 0;
const unsigned long delayTime = 3000; // 3 секунды
//const unsigned long delayTime2 = 5000; // 4 секунды
//const unsigned long delayTime3 = 500; // 0,5секунд
#define ButtonPin_1 3
#define ButtonPin_2 2
#define ButtonPin_3 4
#include "OneButton.h"
OneButton button1(ButtonPin_1, true);
OneButton button2(ButtonPin_2, true);
OneButton button3(ButtonPin_3, true);
void setup() {
pinMode (MOT1, OUTPUT);
pinMode (ledPin, OUTPUT);
pinMode (MOT3, OUTPUT);
button1.attachLongPressStart(longPressStart1);
button2.attachLongPressStart(longPressStart2);
button3.attachLongPressStart(longPressStart3);
button1.setPressTicks(500);
button2.setPressTicks(50);
button3.setPressTicks(50);
button1.setClickTicks(500);
button2.setClickTicks(50);
button3.setClickTicks(50);
}
void loop() {
button1.tick();
button2.tick();
button3.tick();
}
void longPressStart1() { //вперед
digitalWrite(MOT1, 1);
}
void longPressStart2() { //назад
digitalWrite(MOT1, 0); delay(400);
//digitalWrite(MOT2, 1); delay(5000); digitalWrite(MOT2, 0);
if (flag) {
flag = false; // сбросили, чтобы не повторялось
ledOn = true; // включаем
digitalWrite(ledPin, HIGH);
timer = millis(); // запоминаем момент включения
}
if (ledOn && millis() - timer >= delayTime) {
digitalWrite(ledPin, LOW);
ledOn = false;
}
}
void longPressStart3() { //если не открылся
static int m = LOW;
m = !m;
digitalWrite(MOT3, m); digitalWrite(MOT1, 0); delay(400);
//digitalWrite(ledPin, 1); delay(3000); digitalWrite(ledPin, 0);
}
```
видимо что-то не так
MMM
04.Ноябрь.2025 09:10:09
35
Напомните, разве цель была не избавится от делеев в коде?
Я пробовал убирать эту строку всё равно не работает
Pyotr
04.Ноябрь.2025 09:33:17
37
Если пиво не помогает, зачем его люди пьють…))
Перечитывай пост #21
1 лайк
Pyotr
04.Ноябрь.2025 09:41:34
38
void longPressStart2() { //назад
digitalWrite(MOT1, 0);
timer = millis(); // запоминаем момент включения
flag=1;
}
А в лупе!!! проверяй флаг и время
if (flag && millis() - timer >= delayTime) {
flag = 0;
.....отключить что-то
Это немного проще для понимания, мне кажется.
1 лайк
Зри в корень читай выше алгоритм БЛА-БЛА-БЛА не надо вырывать из контекста нет решения не надо писать!!!
Pyotr
04.Ноябрь.2025 09:56:29
40
alexshuv72:
не надо писать!!!
Непонятно, кому адресовано?
BOOM
04.Ноябрь.2025 10:03:31
44
О! Клиент созрел. Пакуйте, мальчики.
BOOM
04.Ноябрь.2025 10:05:32
45
alexshuv72:
Тыкать …
Если ты тупой и не понимаешь, что тебе хотели помочь - зачем огрызаться? Ну не твоё это, так занимайся чем больше получается (тоже пиво пей).
3 лайка
Optron
04.Ноябрь.2025 10:13:21
46
А разве нота бывает мажорной? Насколько я знаю, мажорным бывает аккорд.
Pyotr
04.Ноябрь.2025 10:16:07
47
Это очередное подтверждение выражения (я бы сказал закона духовного): помогая другим, будь готов к искушениям - не скажут спасибо, обос..т, нахамят и т.д. Это всем видно и понятен духовно-нравственный уровень собеседника. Тут и обижаться не начто. Но бывают искушения, которые не всем видны, и этим они опасны.
4 лайка