Помогите сделать счетчик времени

Makar_173
Offline
Зарегистрирован: 12.03.2017

Нужно что бы было 3 счетчика и 3 кнопки
Нажимает на первую кнопку пошел отсчет на первом счетчика
Нажимаем на вторую на первом отсчет останавливается начинается на втором счетчика
И так же с третим счетчиков

Помогите с кодом, ни как не получается ((((

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

Хотите получить готовый код - обращайтесь в раздел "Ищу исполнителя".

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

В последнем случае необходимо привести собственный код (оформленный по правилам форума) и схему.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017
Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Makar_173, подробнее. Как исходно стоят таймеры, все 0 и по кнопке считать? Что будет если считает третий а нажать первуюю кнопку - остановить, начать 1й? то есть считать тот у кого последний раз нажималась кнопка? Что если считается а ещё раз нажать кнопку? сбросить, остановить? Как сбрасывать? Как считать, каждый раз с нуля заново или продолжать? Где будут смотреть таймеры, подключите экран? Какой, графический или 1602? С какой скоростью считать, чисто секунды, миллисекунды, одну 29.97ю секунды/одну 25ю (телевидение), одну тридцатую (SMPTE/MIDI), одну сотую (спорт. часы)?

Makar_173
Offline
Зарегистрирован: 12.03.2017

Отсчет идет в секундах, изначально на всех 0 , нажимаем на кнопку 1 идет отсчет на первом счетчике, нажимаем на вторую или на третью кнопку останавливается на первом и начинается на том на котором нажали кнопку, если снова нажимает на первую то отсчет продолжится сбрасывать значения путем отключения акб

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

Makar_173, подробнее. Как исходно стоят таймеры, все 0 и по кнопке считать? Что будет если считает третий а нажать первуюю кнопку - остановить, начать 1й? то есть считать тот у кого последний раз нажималась кнопка? Что если считается а ещё раз нажать кнопку? сбросить, остановить? Как сбрасывать? Как считать, каждый раз с нуля заново или продолжать? Где будут смотреть таймеры, подключите экран? Какой, графический или 1602? С какой скоростью считать, чисто секунды, миллисекунды, одну 29.97ю секунды/одну 25ю (телевидение), одну тридцатую (SMPTE/MIDI), одну сотую (спорт. часы)?

он ведь подумает, что вы ему напишите, обнадёжите парня )))

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016
#define btn1 (1)
#define btn2 (4)
#define btn3 (7)

unsigned long timestamps[3],timers[3]={0,0,0};
byte lastbtn=0;

void setup(){
  timestamps[0]=millis();
  timestamps[1]=timestamps[0];
  timestamps[2]=timestamps[0];
  pinMode(btn1,INPUT_PULLUP);
  pinMode(btn2,INPUT_PULLUP);
  pinMode(btn3,INPUT_PULLUP);
}

void loop(){
  if(!digitalRead(btn1)) chngbtn(1);
  if(!digitalRead(btn2)) chngbtn(2);
  if(!digitalRead(btn3)) chngbtn(3);
  for(byte i=0;i<3;i++){
    if(lastbtn==i && millis()-timestamps[i]>=1000){
      timers[i]++;
      timestamps[i]=millis();
    }
  }
}

void chngbtn(byte n){
  if(n>3) return;
  lastbtn=n-1;
  timestamps[n-1]=millis();
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

#define btn1 (1)
#define btn2 (4)
#define btn3 (7)

unsigned long timestamps[3],timers[3]={0,0,0};
byte lastbtn=0;

void setup(){
  timestamps[0]=millis();
  timestamps[1]=timestamps[0];
  timestamps[2]=timestamps[0];
  pinMode(btn1,INPUT_PULLUP);
  pinMode(btn2,INPUT_PULLUP);
  pinMode(btn3,INPUT_PULLUP);
}

void loop(){
  if(!digitalRead(btn1)) chngbtn(1);
  if(!digitalRead(btn2)) chngbtn(2);
  if(!digitalRead(btn3)) chngbtn(3);
  for(byte i=0;i<3;i++){
    if(lastbtn==i && millis()-timestamps[i]>=1000){
      timers[i]++;
      timestamps[i]=millis();
    }
  }
}

void chngbtn(byte n){
  if(n>3) return;
  lastbtn=n-1;
  timestamps[n-1]=millis();
}

 

Может и мне поможете, чесслово и в мыслях не было травить вас фенолом, как бы сами..., при пайке выделяется...особенно из китайских пластмасс... (Наветы клапауция)

Правда сомневаюсь, что это возможно в принципе, задача совсем не тривиальная, в устройстве с температурной нестабильностью под 30% находить и регулировать (поддерживать) экстремум тока в конкретной временной точке, датчик ina219 (показал лучшие результаты)...

 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

ua6em, жаль расстраивать но я вряд-ли помогу, т. к.:

0. Моей богоподобной персоне просто лень.

1. У меня нет ни датчиков ina219, ни планов начинать работу с ними.

2. Я не знаю, что такое экстремум.

Если мои вылазки в темы с отписыванием максимума по теме и минимумом флуда рождает в ком-то ложные надежды, какие-то домыслы насчёт альтруистичности и подобную чушь, то я напомню детали моих коварных планов. Номер моего кошелька в яндексе народ вроде знает, если не знает то просто запомнить: чип RFId-меток 125 кГц, пистолет наоборот, два раза год концерта Милен в Берси, потом конец серийного номера фотошопа 5.5, который у меня долгое время стоял, на четырёх из шести моих компьютеров. Игого 410011919696337. Рандомные челики вроде тоже знают - он задал вопрос, он вникнуть не желает, он получил более-менее рабочий продукт. Оплата теперь на его совести. О не не не, я ни к чему не принуждаю.

Почему я вообще отвечаю? Не терплю незнание. Если кто-то спрашивает, значит надо показать. Если не понимает почему так - объяснить. Типа "знание - сила", всё такое. Победим систему. Не? Ну и ладно, ну и плевать. Ждите, и однажды я вновь появлюсь. Когда у меня возникнет моё особое настроение.

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Я понял о чём Вы (Мне в кайф решать подобные вопросы лично), мне тоже, но в другом

Экстре́мум (лат. extremum — крайний) в математике — максимальное или минимальное значение функции на заданном множестве. Точка, в которой достигается экстремум, называется точкой экстремума.

В нашем случае это резонансная частота контура, вычисляем через ток