Время после нажатия кнопки.

Djobich
Offline
Зарегистрирован: 02.11.2018

Добрый день, не получается ни как составить программу. Чтобы после нажатия первый раз кнопки начался таймер. И если, за 2 секунды после начала таймера, кнопку ещё раз нажмут, то включается светодиод. Если нет, то не включается. Помогите пожалуйста

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

по такому описанию - только за деньги. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Причём, за большие.

Djobich
Offline
Зарегистрирован: 02.11.2018

За сколько?

Logik
Offline
Зарегистрирован: 05.08.2014

100500

Djobich
Offline
Зарегистрирован: 02.11.2018

А можно без сарказма? Спросил ведь нормально

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Тыща.  Можно даже без пузыря. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну, перспектива растаца с тыщей не подстегнула мозговое кровоабращенье?

Djobich
Offline
Зарегистрирован: 02.11.2018

Ценообразование связано с таймером, я правильно понимаю?

Logik
Offline
Зарегистрирован: 05.08.2014

Да. Чем дольше интервал, тем дороже.

Djobich
Offline
Зарегистрирован: 02.11.2018

Эм... опять сарказм?

Logik
Offline
Зарегистрирован: 05.08.2014

Есть замечательный раздел форума 

Там  без сарказма.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Djobich пишет:

Ценообразование связано с таймером, я правильно понимаю?

Ценообразование связано с тем, что из летаргии меня может вызволить только тыща, не меньше. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Djobich, а в чем Вам нужна помощь?

Если Вам нужен скетч, а не помощь, то Вам совершенно правильно указали на платный раздел. Если же Вы хотите написать сами и не знаете, с чего начать, могу помочь Вам подсказкой:

Фактически написание скетча осуществляется в два этапа:

1. Алгоритм работы записывается по-русски.

2. Написанное по-русски переводится на Си.

Вот с первого пункта и целесообразно начать. А если не знаете, как начать, то помогу еще одной подсказкой:

Контроллер должен работать точно так же, как Вы сами работали бы на его месте.

Вот, скажем, есть некоторая кнопка, к которой подключен звонок. По звонку Вы узнаете, что кнопка была нажата. И у Вас есть собственная кнопка, напрямую подключенная к светодиоду. Ваша задача, услышав звонок, обеспечить те действия, которых Вы хотели бы добиться от контроллера. Расскажите, как Вы будете действовать.

Pyotr
Offline
Зарегистрирован: 12.03.2014

http://arduino.ru/forum/programmirovanie/snova-o-knopke#comment-399557

Только увеличте интервал опроса кнопки до 150 мсек и лишнее уберите из примера. Получится двойной клик с большим интервалом.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ну, вот! Пришёл Pyotr и всем бизнес поломал :(

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DetSimen пишет:

Тыща.  Можно даже без пузыря. 

Не, ну за тыщу евро, как-то перебор. Я готов за 999.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Djobich пишет:

Добрый день, не получается ни как составить программу. Чтобы после нажатия первый раз кнопки начался таймер. И если, за 2 секунды после начала таймера, кнопку ещё раз нажмут, то включается светодиод. Если нет, то не включается.

Ну разумеется надо начинать с такой картинки

И дальше читать эту тему #4   А Таймер здешний организуется как автомат и все. У автомата 3 состояния - не нажато, 1 нажатие , 2 нажатие и конец работы. При переходе в 3 состояние зажигается светодиод.

Pyotr
Offline
Зарегистрирован: 12.03.2014

ЕвгенийП пишет:

ну, вот! Пришёл Pyotr и всем бизнес поломал :(

Молодой - исправлюсь))

Так как я малопьющий, а Новый год нескоро, то пусть ТС отправит полагающий мне пузырь Деду.(не Морозу конечно)))

Piglet
Piglet аватар
Offline
Зарегистрирован: 12.02.2017

такая конструкция не подойдет?

if (digitalRead(pin) == HIGH){
  i = millis();
}
if millis() - i > 2000) {
  digitalWrite( 13, HIGH);
 
}

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

qwone пишет:

Ну разумеется надо начинать с такой картинки

А зачем здесь второй логический элемент?

Светодиод следует подключать сразу к инвертирующему выходу первого элемента.

Djobich
Offline
Зарегистрирован: 02.11.2018

Ого... Как всё сложно. Я сделал. Как по мне так проще)))

int Count=0;
int Relay=0; 
int k;
void setup() {
  pinMode(2, INPUT); 
pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  
  if(digitalRead(2) == 1)
  {
    
    delay(250); 
    for(int t=0; t<=500; t++)
    {
      delay(1);
       Count=digitalRead(2); 
      
      if(Count==1)
      {
        Relay=!Relay; 
        break;
        delay(200); 
      }
      if(k>119&&digitalRead(2)==1);
      {
        k=k+50;
      }
      if(k==180)
      {
        k=120;
      }
    }
  }
  if(Relay==1)
  {
    k=120;
    Relay=0;
  }
  else
  {
    k=0;
  }
analogWrite(3,k);
Serial.println(k);
}

Смысл работы. 2 раза нажимаешь в пределе 500мсек. Загорается светодиод. один раз нажимаешь за 500мсек увеличивается яркость. 2 раза нажимаешь за 500мсек выключается светодиод. Потом будет переделано вместо кнопки микрофон(хлопки), а светодиод на светодиодную ленту. (Знаю я про микрофон и ардуино, что помимо хлопков, громкий звук будет тоже учитываться как за хлопок)))) )

Djobich
Offline
Зарегистрирован: 02.11.2018
Djobich
Offline
Зарегистрирован: 02.11.2018

Всем огромное спасибо за ответы))) Никогда не думал, что дадут такой развёрнутый ответ