Arduino - millis();

Programovacie jazyky, rady, poradňa...
Uprock
Light Expert
Light Expert
Príspevky: 69
Registrovaný: 04 feb 2014, 16:28

Arduino - millis();

Príspevok od používateľa Uprock »

Zdravím potreboval by som pomôcť s programovaním Arduina.

Kód: Vybrať všetko

unsigned long previousMillis = 0;
const long interval = 1000;

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

void loop() {
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

	
    Serial.println (currentMillis);
  }
}
Tento kód v sériovom zapisovači vypisuje čas od spustenie v milisekundách. Potreboval by som aby ho tam vypisoval v minútach a sekundách. Na sekundy je to jednoduché ale ako to spravím aby to vypisovalo vedľa seba.
lowmanek
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 977
Registrovaný: 04 apr 2010, 8:53
Bydlisko: 221B Baker Street

Re: Arduino - millis();

Príspevok od používateľa lowmanek »

Kód: Vybrať všetko

// t is time in seconds = millis()/1000;
char * TimeToString(unsigned long t)
{
 static char str[12];
 long h = t / 3600;
 t = t % 3600;
 int m = t / 60;
 int s = t % 60;
 sprintf(str, "%04ld:%02d:%02d", h, m, s);
 return str;
}
Zdroj: http://forum.arduino.cc/index.php?topic=45293.0

Nikdy som nepracoval s časom v C, ale existuje na to knižnica time, ktorá by mala túto robotu vedieť spraviť za teba.
Uprock
Light Expert
Light Expert
Príspevky: 69
Registrovaný: 04 feb 2014, 16:28

Re: Arduino - millis();

Príspevok od používateľa Uprock »

Ďakujem, funguje to.

Kód: Vybrať všetko

unsigned long previousMillis = 0;
const long interval = 1000;
int hodiny;
int minuty;
int sekundy;
int cas;

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

void loop() {
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    
    cas=currentMillis/1000;
	hodiny= cas/3600;
    cas= cas%3600;
    minuty = cas/60;
    sekundy = cas%60;
    
    Serial.println(sekundy);
    Serial.println(minuty);
    Serial.println(hodiny);

  }
}
Ešte posledná vec ako to vypísať všetko do jedného riadku. Skúšal som to viacerímy spôsobmi a nič.
Jankokuk
Medium Expert
Medium Expert
Príspevky: 119
Registrovaný: 25 júl 2010, 19:51

Re: Arduino - millis();

Príspevok od používateľa Jankokuk »

println ti dá vždy nový riadok. použi iba print a println iba ako posledne
Uprock
Light Expert
Light Expert
Príspevky: 69
Registrovaný: 04 feb 2014, 16:28

Re: Arduino - millis();

Príspevok od používateľa Uprock »

Ďakujem ide to.
Napísať odpoveď