Напишите ответ

Введите сообщение и нажмите Отправить
Параметры

Назад

Обзор темы (новое вверху)

maxmix
2018-03-21 10:37:01

завести счетчик, он накручивается пока нажата кнопка, при достижении выполняется код. после выполнения кода обнуляется счетчик.
Ну а если правильно big_smile то лучше взять готовый велосипед и изваять типа:
if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {

    longPressActive = true;
    LED1State = !LED1State;
    digitalWrite(LED1, LED1State);

}
longPressTime - переменная где задаш скок надо удерживать чтоб сие чудо сработало
никаких делаев и переполнения переменных. все ок и все сработает



по аппаратному: самый кайфовый метод на сегодня (для меня лично, в условиях жостких помех от ЧПУ) является PC817 последовательно резистор на 3.3 кОм и последовательно светодиод, именно светодиод- индикация которая подскажет что опто работает и не сгорела, так для перестраховки. Это входной контур а выходной естественно с подтяжкой на GND через 10кОм резистор и напрямую к 5V. Когда опто замыкает- на входе в ардуино(или любого другого МК) 5V.
Работает нормально, при чем в очень большом диапазоне от 9v- 26VDC.
Ссори за баламут но еще не обжился, только зарегистрировался smile

Selen
2018-03-12 21:36:35

я бы сделал следущее,

для начало избавился бы от делэй и от прерывания. использовал бы таймер -  библиотеку SimpleTimer.h .
долгое нажатие сделал бы тоже через таймер. т.е. нажал кнопку - запустился таймер напр. (на 3 сек.) по окончании таймера выполняется функция где идет проверка не нажата ли кнопка.

Olej
2018-03-12 12:14:35
Green пишет:
radio-active пишет:

нехрена

научитесь правильно писать сначала.

ни хрена?  roll

Green
2018-03-12 11:28:07
radio-active пишет:

нехрена

научитесь правильно писать сначала.

radio-active
2018-03-12 10:27:43
Green пишет:

Подозреваю, что человек просто не шарит. Бывает же такое?)

Ну так вы шарящий - подскажите! "Люблю" таких умников на форумах, которые сами нехрена не разбираются, но умничают больше других.

Green
2018-03-11 13:03:55

Подозреваю, что человек просто не шарит. Бывает же такое?)

Selen
2018-03-11 12:14:08

подозреваю , что человек использует прерывание для того чтоб кнопка обрабатывалась также во время delay.

renoshnik
2018-03-08 10:15:11

зачем attachInterrupt(0, buttonPin, FALLING); ???

radio-active
2018-03-07 21:45:12
renoshnik пишет:

нажал - запомнил время 1
отпустил - запомнил время 2
получил разницу время 2 и время 1
если меньше заданного значения - игнорировать

Да, но я не могу внедрить из за:
attachInterrupt(0, buttonPin, FALLING);

оно мне все портит....

Так скетч отдельно работает:

int T = 0;

void setup()    
 {
      pinMode(13, OUTPUT);         
      pinMode(2, INPUT);
 }

  void loop()
 {
      if(digitalRead(2)==LOW)//если кнопка нажата ...
      {
        T++;// прибавляем к переменной 1 при каждой смене цикла.
      delay(500);//небольшая защита от "дребезга" контактов кнопки
      }
      else
      {
        T=0;
      }
      if(T>=3)
      {
        digitalWrite(13,!digitalRead(13));//инвертируем состояние пина
        T=0;
      }
 }

А как вставляю в основной код - работает не корректно...

renoshnik
2018-03-07 12:38:25

нажал - запомнил время 1
отпустил - запомнил время 2
получил разницу время 2 и время 1
если меньше заданного значения - игнорировать

radio-active
2018-03-06 15:06:16

Ну хоть это, ито не получается интегрировать:

#include "OneButton.h"
OneButton button(2, true);

void setup() {
  button.attachLongPressStart(buttonPin);
  pinMode(13, OUTPUT);  
}

void loop() {
  button.tick();
  delay(10);
}

void buttonPin() {
  digitalWrite(13, HIGH);
}
radio-active
2018-03-06 14:59:54
Green пишет:

)) Тогда причём кнопка? Найдите источник помехи и устраните. Мудрёно? )

Да, мудрЁно... 4 блока розжига и есть помеха....
Просто подскажите как сделать длинное нажатие, что бы на короткое нажатие не было реакции.
При включении фар идет короткая помеха, которая как то попадает в Serial. И программа расценивает эту помеху за нажатие.
А вот если программа будет ждать длинное нажатие, то на эту помеху не должна сработать....

Green
2018-03-06 14:26:06

)) Тогда причём кнопка? Найдите источник помехи и устраните. Мудрёно? )

radio-active
2018-03-06 14:14:35
vvr пишет:

а не пробовали почитать про дребезг контактов и по нормальному обрабатывать данные с кнопки, прицепить какую нибудь библиотеку.

Пробовал, причем тут дребезг контактов??? Кнопка отрабатывает четко. Если кнопку не нажимать (даже отключить) и включить фары - идет сработка.

Библиотеку onebutton пробовал, не вышло что то...

vvr
2018-03-06 13:39:57

а не пробовали почитать про дребезг контактов и по нормальному обрабатывать данные с кнопки, прицепить какую нибудь библиотеку.

Подвал раздела