Таймер обратного отсчёта до *0*, нужна ваша помощь

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

Собрал таймер на 60 мин, активируется кнопкой старт, можно сбросить на  ноль, и он начнёт считать заново, есть стоп. Считает от  0 и до  60.  А  предел счастья  по умолчанию 01 00 00 , т е обратный отсчёт.

void timerstart_1() { 
  if (digitalRead(7) == LOW || digitalRead(oneStartTimer_Pin) == HIGH ) 
  { 
   time_start_1 = millis();
  } 
  on_state_1 = !on_state_1; 
  if (k_1 > 10) {
time_hrs_1 = 0;
time_sec_1 = 0; 
time_min_1 = 0;    
  k_1 = 0;
  if (on_state_1 == HIGH) {
  ms_1 = millis()-time_start_1;
  }   
  time_sec_1 = ms_1 / 1000;  
  if (time_sec_1 > 59)              //вычисляем минуты
  {
    time_min_1 = time_sec_1 / 60;   // в минуте 60 секунд
    time_sec_1 = time_sec_1 % 60;   //остаток переписываем  в секунды
  }
  if (time_min_1 > 59)              //вычисляем часы
  {
    time_hrs_1 = time_min_1 / 60;   // в часе 60 минут
    time_min_1 = time_min_1 % 60;   //остаток переписываем  в минуты   
  } 
 }
 k_1++;
 Timers(); //  для последующей обработки для индикации
}

 

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

Пробовал  k_1--;

и

time_hrs_1 = 1;
time_sec_1 = 0;
time_min_1 = 0;

при

к = 3600000

Одинаково считает   в плюс

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

ну а какой смысл уменьшать K_1. если его значение в таймере не используется? Часы. минуты и секунды вы считаете по миллис - а миллис-то всегда растет :)

Вообще. сравнивая "ваш" код и ваши комментарии к нему - я абсолютно уверен. что код вы где-то своровали и ровно ни черта в нем не понимаете.

Если б вы и правда сами "собрали" этот таймер. изменить его на обратный отчет не составило бы вам труда. Врать стыдно.

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

 Я  и не говорил, что  сам написал, вы опять за зря нападаете, добавитл только копку и общий сброс, там этого не было изюминка  k++ не моя, но  идея мне понравилась

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

newold пишет:

  изюминка  k++ не моя, но  идея мне понравилась

в чем же тут "изюминка"? - переменную К_1 вообще можно выкинуть без ущерба для остального кода - она ничего не делает

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

newold пишет:

 Я  и не говорил, что  сам написал, вы опять за зря нападаете, добавитл только копку и общий сброс

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

Этот код явно для вас слишком сложен и вопросы вам задавать пока рано. А то вот в соседней ветке я вам подсказал. как сделать ваши 1-3-1-3 .... а Вы даже не смогли понять ответа.

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

Да вы что?,  А если независимых таймеров три они между собой старт сстопом привязаны, зачем мне считаь время включения и до упора, без функций через милис, видите  в чём то  я разбираюсь, если разбирался хорошо,  вы ж понимаете что я сюда и не писал бы.  А так я вам вопрос,  а вы мне два,  в чём помощь  не знаю.... Да  я переделал,  он отлично работает, но не так как хотелось бы.

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

newold пишет:

Да вы что?,  А если независимых таймеров три они между собой старт сстопом привязаны, зачем мне считаь время включения и до упора, без функций через милис, видите  в чём то  я разбираюсь

я пока вижу. что вы несете что-то нечленораздельное.

Давайте так - если сможете внятно рассказать, что делает в этом коде K_1 - продолжим. Иначе я пас.

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

Переменная *К* целое число,  каждый раз по счёту миллис, или 1сек, изменяет своё значение, на +1. Удобна тем , что её можно остановить обнулить предать нужное пользователю значение, также на одном миллисе можно подставить несколько  *К* и работать с ними не зависимо

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

newold пишет:

Переменная *К* целое число,  каждый раз по счёту миллис, или 1сек, изменяет своё значение, на +1.

укажите номер строчки кода из заглавного сообщения, в которой происходит приращение К "каждый раз по счёту миллис" ? и, кстати - все-таки "по счету миллис", или "на 1 сек"?

newold пишет:
Удобна тем , что её можно остановить обнулить предать нужное пользователю значение, также на одном миллисе можно подставить несколько  *К* и работать с ними не зависимо

замечательно :) а еще в счетч можно вставить функцию Лагранжа и быстрое Фурье :) Только всего этого  в коде нет, так же как и того, что вы описываете для переменной К - поэтому я и говорю, что эта переменная не нужна.

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

по счёту миллис......, но  я бы всё таки  сделал секундный миллис и приращивал бы в нём, так как мне меньше счёт на сек не актуален,  этой переменной  я  планирую задавать  1 час, если мне помогут, примеров  в сети я так и не нашел, всё  с ртс и  с ртс.

 

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

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

Ваша переменная К_1 увеличивается на единицу не "по приращению миллис", а при каждом запуске процедуры, в которой она определена. Как часто это происходит - в общем случае от миллис не зависит вовсе, а зависит только от частоты вызова процедуры. Если вы поставите вызов процедуры timerstart_1() в пустой loop() - ваша К_1 будет расти куда быстрее даже миллисекунд в миллис.

Теперь что она делает -  а ничего. На каждом входе в процедуру вы ее увеличиваете, когда она достигает 10- обнуляете. И так по кругу. ВСЕ

вывод - если выкинуть К_1 - не изменится ничего.

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

newold пишет:

по счёту миллис......, но  я бы всё таки  сделал секундный миллис и приращивал бы в нём

 

номер строчки?

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

06

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

newold пишет:

06

от балды. что ли, пишете? и где тут миллис?

В общем - я вам выше описал. как у вас работает. постарайтесь разобраться.

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

Я убрал бы с   06 строчки

 

    on_state_1 = !on_state_1;
  if (k_1 > 10) {

и без К получал бы секунды. Только мне не надо счётчик наработки..

Миллиса там нет, я немогу так бысто менять код для вас

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

Был бы благодарен на ссылку похожего таймера, посмотрю как там сделано , только без ртс

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

newold пишет:

Я убрал бы с   06 строчки

и без К получал бы секунды. Только мне не надо счётчик наработки..

бред...

Простите, но обсуждать что-то с вами бессмысленно.

Чтобы закончить - дам вам ответ на заглавный вопрос. Если вы действительно что-то понимаете - этого совета достаточно.

Чтобы сделать обратный таймер - возьмите нужный интервал в миллисекундах и отнимайте от него изменение миллис.

прощайте.

 

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

И вдогонку, чем разбирать скопип...ный код, проще новый написать. ИМХО.

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

newold пишет:

он отлично работает, но не так как хотелось бы.

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

bwn пишет:

И вдогонку, чем разбирать скопип...ный код, проще новый написать. ИМХО.

+100

newold - Пишите свой код. Пусть он поначалу будет сильно хуже этого, но он будет ВАШ. Он будет соответствовать вашему пониманию процессов и вы всегда сможете обьяснить. зачем в нем каждая строчка. И вы не будете выглядеть ленивым халявщиком, который утащил пару строк там, пару здесь - а теперь приполз на форум выпрашивать. чтоб ему дописали чужой код под его задачу.

Приходите на форум со своим  - именно своим - кодом. И вам помогут.

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

Отжиг, это  когда на аве такое фото, красив .. Я б за деньги такое не прилепил,  а то что ты прислал, мне похер

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

Для разовой поделки b707 я не могу учить  программирование, нет времени, если тут  так серьёзно  с 5ю строчками , ну прощайте

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

newold пишет:

Отжиг, это  когда на аве такое фото, красив .. Я б за деньги такое не прилепил

тебе не понять. До такого аватара надо дорасти.

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

Следующий  этап его развития будет то,  откуда крепится хвост

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

newold пишет:

Для разовой поделки b707 я не могу учить  программирование, нет времени, если тут  так серьёзно  с 5ю строчками , ну прощайте

Сравните: "для разовой поездки на машине я не стану учить ПДД и получать права...". Для тех, кто не хочет учить ПДД - есть таксисты. Но они денег стоят.

Если вас такой принцип устроит - может вам программиста нанять? у нас на форуме есть платный раздел.

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

Да не смешите. В Тольяти пусть  под  конвейера  сборки пишут, у кого мозгов на это хватит, а те свой итальянский хлам выкинут  и  от евгенийп поставят, вот тогда он от меня денег получит, пока чёс ни о чём.

Не  пишите, или наоборот пишите что хотете почту поменл прощайте, мне не интересно

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

newold пишет:

Не  пишите, или наоборот пишите что хотете почту поменл прощайте, мне не интересно

"халява не прошла" (с) :)

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

b707 пишет:

newold пишет:

Не  пишите, или наоборот пишите что хотете почту поменл прощайте, мне не интересно

"халява не прошла" (с) :)

Но пасаран. Воистину.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ардуина, кстати, тоже - итальянский хлам...

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

newold пишет:
нет времени
А у нас-то его как дохера, ты и представить себе не можешь.

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

Ворота пишет:

newold пишет:
нет времени
А у нас-то его как дохера, ты и представить себе не можешь.

А то, сидишь тут сутками и на вопросы конкретных, занятых пацанов отвечать не хочешь.

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

bwn пишет:
А то, сидишь тут сутками и на вопросы конкретных, занятых пацанов отвечать не хочешь.
Кто крайний в очереди, помогать на шару шарящим шаравикам?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Иоптваюмать, откуда оне на свет лезут?