Обратный таймер

Frut
Offline
Зарегистрирован: 12.12.2020

Здравствуйте! 

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

 

https://www.tinkercad.com/things/2IBeQntw02L-copy-of-etaopi-vikko1/editel?tenant=circuits Вот тут вся схема, весь код тоже есть. 

На всякий случай сюжа тоже вставлю код, но тут много левого: 

 

#define LED1 11
#define LED2 10
#define LED3 9
#define ASEG 2
#define BSEG 3
#define CSEG 4
#define DSEG 5
#define ESEG 6
#define FSEG 7
#define GSEG 8
#define START 12
#define STOP 13
#define MINPRESET 0

int msec = 0, second = 0, minute = 0, hour = 9;
int clockrun = 0;
int timerms, timersec, timermin;

void setup()
{
  Serial.begin(9600);

pinMode(ASEG, OUTPUT);
pinMode(BSEG, OUTPUT);
pinMode(CSEG, OUTPUT);
pinMode(DSEG, OUTPUT);
pinMode(ESEG, OUTPUT);
pinMode(FSEG, OUTPUT);
pinMode(GSEG, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(START, INPUT);
pinMode(STOP, INPUT);

cli();
TCCR0A = 0;
TCCR0B = 0;
TCNT0 = 0;

OCR0A = 124;
TCCR0A |=(1 << WGM01);
TCCR0B |=(1 << CS01) | (1 << CS00);
TIMSK0 |= (1 << OCIE0A);
sei();
}

ISR(TIMER0_COMPA_vect){
	if(msec < 2000) msec++;
  	else {			
		msec = 0;
      if (clockrun)
      {
        
		second++;
		if (second > 59)
				{
             second = 0;
			minute++;
				if (minute > 9)
						{
						minute = 0;
						}
				}
}
    }
}


void number (int nro)
{
switch (nro)
{
case 8: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, LOW);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, LOW);
break;

  
  
case 9: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, LOW);
break;


case 0: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, LOW);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, HIGH);
break;


case 1: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, HIGH);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, HIGH);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, HIGH);
digitalWrite(GSEG, HIGH);
break;


case 2: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, HIGH);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, LOW);
digitalWrite(FSEG, HIGH);
digitalWrite(GSEG, LOW);
break;


case 3: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, HIGH);
digitalWrite(GSEG, LOW);
break;


case 4: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, HIGH);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, HIGH);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, LOW);
break;


case 5: digitalWrite(ASEG, HIGH);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, LOW);
break;


case 6: digitalWrite(ASEG, HIGH);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, LOW);
digitalWrite(ESEG, LOW);
digitalWrite(FSEG, LOW);
digitalWrite(GSEG, LOW);
break;


case 7: digitalWrite(ASEG, LOW);
digitalWrite(BSEG, LOW);
digitalWrite(CSEG, LOW);
digitalWrite(DSEG, HIGH);
digitalWrite(ESEG, HIGH);
digitalWrite(FSEG, HIGH);
digitalWrite(GSEG, HIGH);
break;
}
  
}

void loop()
{
  
  if (digitalRead(START) == 0 && clockrun == 0)
     { 
       clockrun = 1;
       while(digitalRead(START) == 0);
     }
  if (digitalRead(STOP) == 0 && clockrun == 1)
     { 
       clockrun = 0;
       while(digitalRead(STOP) == 0);
     }
  if (digitalRead(STOP) == 0 && clockrun == 0)
     { 
       minute  = MINPRESET;
    	second = 0;
       while(digitalRead(STOP) == 0);
     }
  
number(minute);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(20);
digitalWrite(LED1, HIGH);

number(second/10);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
delay(20);
digitalWrite(LED2, HIGH);

number(second%10);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
delay(20);
digitalWrite(LED3, HIGH);

  Serial.println(second);
  
}

Подскажите куда чего и как :) 

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

нельзя брать чужое, мама разве не учила? я о таймере 0

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Что значит "в обратную сторону"?

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

sadman41 пишет:

Что значит "в обратную сторону"?

ты сегодня какой-то нетолерантный )))

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Мне просто интересно - почему написано ++ при желании что-то там "запустить в обратную сторону".

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

sadman41 пишет:

Что значит "в обратную сторону"?

Ну, как у "Европы" - final countdown

-NMi-
Offline
Зарегистрирован: 20.08.2018

sadman41 пишет:

Что значит "в обратную сторону"?

Обходишь на 180 градусов и продолжаешь итерации)))

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

А что значит "сделала таймер"? В Ардуине уже есть таймеры. Минимум, три штуки. И считают как раз "в обратную сторону". Что еще нужно то?

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

когда текст начинается со слов сделай...невольно приходит на ум певица Клементия )))

Frut
Offline
Зарегистрирован: 12.12.2020

О большое спасибо всем! Вы очень приятное комъюнити! Было очень приятно с вами пообщаться! 

Green
Offline
Зарегистрирован: 01.10.2015

Надеюсь вы не уходите? Мы ведь так любим общаться с женщинами!
Где то ЕвгенийП давал ссылку о женщинах на форуме, всё никак не могу найти.)

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

Green пишет:

Надеюсь вы не уходите? Мы ведь так любим общаться с женщинами!
Где то ЕвгенийП давал ссылку о женщинах на форуме, всё никак не могу найти.)

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

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

Frut пишет:

О большое спасибо всем! Вы очень приятное комъюнити! Было очень приятно с вами пообщаться! 

Нам тоже весьма приятно, что Вы почтили нас своим посещением.

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

кстати..."всем я написал" но только Грину минусы не раздал (а)... "обидно знаете ли" )))