Таймер внутри таймера на millis, нужна ваша помощь

newold
Offline
Зарегистрирован: 18.07.2018

Приветствую, изучаю азы,  столкнулся с проблемой, первая не излечимая конфликт tone и IRremote.h, пришлось ставить активный зумер, пищит отвратительно. )) А теперь воврос сделал таймер финала  на 2 сек, но хотелось бы не непрерывный ,  а прерывистыя 1-3-1-3-1-3 например,  не усложняя код на 20 строк

отрезок кода

....................................................
moment2_3 = millis(); 
  digitalWrite(31,  HIGH);  
  Serial.println("Time reset 1");  
  digitalWrite(blink_out, HIGH);  
  }
  if ((millis() - moment2_3 >= 2000) && flag2_3) {  
  flag2_3 = 0; 
  digitalWrite(31,  LOW); 
  digitalWrite(blink_out, LOW);   
  }
........................

 

 

b707
Offline
Зарегистрирован: 26.05.2017

newold пишет:

 А теперь воврос сделал таймер финала  на 2 сек

Сделал? Ой ли?

Если вы имеете в виду приведенный код - то спешу вас разочаровать, работать правильно оно не будет. По крайней мере так, как вы хотите. Если вы рассчитывали подавать на blink_out высокий уровень на 2 секунды - код выше не подойдет. 

Так что прежде чем его модифицировать. добейтесь правильной работы.

newold
Offline
Зарегистрирован: 18.07.2018

b707 пишет:

newold пишет:

 А теперь воврос сделал таймер финала  на 2 сек

Сделал? Ой ли?

Если вы имеете в виду приведенный код - то спешу вас разочаровать, работать правильно оно не будет. По крайней мере так, как вы хотите. Если вы рассчитывали подавать на blink_out высокий уровень на 2 секунды - код выше не подойдет. 

Так что прежде чем его модифицировать. добейтесь правильной работы.

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

b707
Offline
Зарегистрирован: 26.05.2017

newold пишет:

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

ну значит Вы так скопировали "отрывок", когда выкладывали в форум, что получилась бессмыслица. Можете для проверки вставить это в loop() и убедится, что blink_out всегда будет HIGH

b707
Offline
Зарегистрирован: 26.05.2017

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

Нет смысла "оптимизировать" нерабочий код.

newold
Offline
Зарегистрирован: 18.07.2018

Вот,  ну опять же то что обяявлено не  копировал.

void StartTimer_3()
{
  if((digitalRead(6) == HIGH & digitalRead(7) == HIGH & digitalRead(8) == HIGH) && !flag_1) {
  flag_3 = 1; 
  moment_3 = millis(); 
  Serial.println("6,7,8  HIGH");
  }
  if ((millis() - moment_3 >= 25000) && flag_3) { // Стоп 2й  + 25 сек на сброс времени
  flag_3 = 0; 
  flag3_3 = 1;
  }
 if( flag3_3 && (!flag2_3)) {
  flag2_3 = 1; 
  flag3_3 = 0;
  moment2_3 = millis(); 
  digitalWrite(31,  HIGH);  
  Serial.println("Time reset 1");  
  digitalWrite(blink_out, HIGH); 
 
  }
  if ((millis() - moment2_3 >= 2000) && flag2_3) {  
  flag2_3 = 0; 
  digitalWrite(31,  LOW); 
  digitalWrite(blink_out, LOW); 
   
  }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

Если я правильно понял, что вам нужно...  Замените жестко кодированное значение 2000 в строке 21 переменной и на каждом обороте присваивайте ей то 1000, то 3000 ...

 

Гриша
Offline
Зарегистрирован: 27.04.2014

newold пишет:

... а прерывистыя 1-3-1-3-1-3 например...

нарисуйте картинкой 2 периода (график) чего хотите, мне не совсем понятен этот пример.

newold
Offline
Зарегистрирован: 18.07.2018

Может библиотека готовая есть?

на каждом обороте присваивайте ей то 1000, то 3000 .  Ну тогда уже 100,  300, т к это должно вложиться  в  2-3 секунды.

Я массивы пока не проходил...

Гриша Получается так .  Пик(длинный) пауза, Пик(короткий) пауза, Пик(короткий) пауза, Пик(короткий) пауза....Пик(длинный) пауза.... это этоко 2-3 сек

 

 

 

Гриша
Offline
Зарегистрирован: 27.04.2014

newold пишет:

Гриша Получается так .  Пик(длинный) пауза, Пик(короткий) пауза, Пик(короткий) пауза, Пик(короткий) пауза....Пик(длинный) пауза.... это этоко 2-3 сек

и сколько весят в граммах:   Пик(короткий) -?, пауза - ?, Пик(длинный) -?... рисуйте, не ленитесь, Paint вам в помощь.

 

 

bwn
Offline
Зарегистрирован: 25.08.2014

Гриш, не парься, он ужо на всех обиделся и ушел.