Sziasztok,
Nagyon régen nem foglalkoztam programozással, de most kitaláltam magamnak egy kis feladatot. Építek egy kijelzős visszaszámlálót.
Találtam hozzá egy library-t, nekem teljesen jók a funkciói. https://github.com/inflop/Countimer
De szükségem lenne egy új számlálási lehetőségre: gyorsításra. Tehát amikor valós egy másodperc alatt a kijelzőn az idő 2-vel, illetve 4-el csökkenne.
Nyilván a kiírás sebességét is gyorsítanom kell, de ezt tudja a rendszer, csak hiába írom át 500-ra, annyi csak a változás, hogy egy másodperc alatt kétszer írja ki ugyan azt az időt.
// Print current time every 1s on serial port by calling method refreshClock().
timer.setInterval(refreshClock, 1000);
Tudnátok segíteni, hogy hol kellene módosítani a rendszert, hogy legyen egy normál, 2x, 4x gyorsabban pergő idő?
A segítséget előre is köszönöm.
Üdv.: Roland
Library átírás kérés
Re: Library átírás kérés
Szia!
Próbáld meg így:
Próbáld meg így:
Kód: Egész kijelölése
/*
* Open serial monitor, press one of the keys below and click 'Send':
* 'S' - to start all timers
* 'P' - to pause all timers
* 'R' - to restart all timers
* 'T' - to stop all timers
* '1' . setup 1* sped
* '2' . setup 2* sped
* '4' . setup 4* sped
*/
#include "Countimer.h"
Countimer tUp;
Countimer tDown;
Countimer tNone;
#define S_UP 10
#define S_DOWN 21
void setup()
{
Serial.begin(9600);
// Count-up timer with 10s //Felszámol Időzítő 10S -sel
tUp.setCounter(0, 0, S_UP, tUp.COUNT_UP, tUpComplete);
// Call print_time1() method every 1s.
tUp.setInterval(print_time1, 1000);
// Count-down timer with 21s //Számol le- Időzítő 21S -sel
tDown.setCounter(0, 0, S_DOWN, tDown.COUNT_DOWN, tDownComplete);
// Call print_time2() method every 1s.
tDown.setInterval(print_time2, 1000);
// No counter
// Just call print_none() method every 2s.
tNone.setInterval(print_none, 2000);
Serial.println("Press one of the keys below and click 'Send':");
Serial.println("'S' - to start all timers");
Serial.println("'P' - to pause all timers");
Serial.println("'R' - to restart all timers");
Serial.println("'T' - to stop all timers");
Serial.println("'1' - 1* sniff times");
Serial.println("'2' - 2* sniff times");
Serial.println("'4' - 4* sniff times");
}
void loop()
{
tUp.run();
tDown.run();
tNone.run();
if (Serial.available() > 0)
{
char c = toupper(Serial.read());
switch (c)
{
case 'T':
tUp.stop();
tDown.stop();
tNone.stop();
break;
case 'R':
tUp.restart();
tDown.restart();
tNone.restart();
break;
case 'S':
tUp.start();
tDown.start();
tNone.start();
break;
case 'P':
tUp.pause();
tDown.pause();
tNone.pause();
break;
case '1':
sniffTimes(1);
break;
case '2':
sniffTimes(2);
break;
case '4':
sniffTimes(4);
break;
default:
break;
}
}
}
void sniffTimes(uint8_t szorzo)
{
// Count-up timer with 10s //Felszámol Időzítő 10S -sel
tUp.setCounter(0, 0, szorzo*S_UP, tUp.COUNT_UP, tUpComplete);
// Count-down timer with 21s //Számol le- Időzítő 21S -sel
tDown.setCounter(0, 0, szorzo*S_DOWN, tDown.COUNT_DOWN, tDownComplete);
Serial.println("sniff times * " + String(szorzo));
}
void print_time1()
{
Serial.print("tUp: ");
Serial.println(tUp.getCurrentTime());
}
void print_time2()
{
Serial.print("tDown: ");
Serial.println(tDown.getCurrentTime());
}
void print_none()
{
Serial.print("tNone: millis(): ");
Serial.println(millis());
}
void tUpComplete()
{
digitalWrite(13, HIGH);
}
void tDownComplete()
{
digitalWrite(13, LOW);
}