Library átírás kérés

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Library átírás kérés

Hozzászólás Szerző: broland »

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
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Library átírás kérés

Hozzászólás Szerző: kapu48 »

Szia!
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);
}

Válasz küldése