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