Обратный таймер
- Войдите на сайт для отправки комментариев
Сб, 12/12/2020 - 16:54
Здравствуйте!
Собственно сделала таймер, решила сделать его отправить считать в обратную сторону и тут мой мозг отказывается думать. совсем. Точнее как я понимаю, что именно надо сделать, но что-то реализовать не могу.
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);
}
Подскажите куда чего и как :)
нельзя брать чужое, мама разве не учила? я о таймере 0
Что значит "в обратную сторону"?
Что значит "в обратную сторону"?
ты сегодня какой-то нетолерантный )))
Мне просто интересно - почему написано ++ при желании что-то там "запустить в обратную сторону".
Что значит "в обратную сторону"?
Ну, как у "Европы" - final countdown
Что значит "в обратную сторону"?
Обходишь на 180 градусов и продолжаешь итерации)))
А что значит "сделала таймер"? В Ардуине уже есть таймеры. Минимум, три штуки. И считают как раз "в обратную сторону". Что еще нужно то?
когда текст начинается со слов сделай...невольно приходит на ум певица Клементия )))
О большое спасибо всем! Вы очень приятное комъюнити! Было очень приятно с вами пообщаться!
Надеюсь вы не уходите? Мы ведь так любим общаться с женщинами!
Где то ЕвгенийП давал ссылку о женщинах на форуме, всё никак не могу найти.)
Надеюсь вы не уходите? Мы ведь так любим общаться с женщинами!
Где то ЕвгенийП давал ссылку о женщинах на форуме, всё никак не могу найти.)
я не шовинист, но такой код девушка написать не могла...использовать нулевой таймер и не почитать про него, что он системный...студент прогульщик, возможно...
О большое спасибо всем! Вы очень приятное комъюнити! Было очень приятно с вами пообщаться!
Нам тоже весьма приятно, что Вы почтили нас своим посещением.
кстати..."всем я написал" но только Грину минусы не раздал (а)... "обидно знаете ли" )))