Programovacie jazyky, rady, poradňa...
Uprock
Light Expert
Príspevky: 69 Registrovaný: 04 feb 2014, 16:28
Príspevok
od používateľa Uprock » 12 mar 2016, 9:33
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
Príspevky: 977 Registrovaný: 04 apr 2010, 8:53
Bydlisko: 221B Baker Street
Príspevok
od používateľa lowmanek » 12 mar 2016, 10:18
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
Príspevky: 69 Registrovaný: 04 feb 2014, 16:28
Príspevok
od používateľa Uprock » 12 mar 2016, 12:18
Ď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
Príspevky: 119 Registrovaný: 25 júl 2010, 19:51
Príspevok
od používateľa Jankokuk » 12 mar 2016, 12:36
println ti dá vždy nový riadok. použi iba print a println iba ako posledne
Uprock
Light Expert
Príspevky: 69 Registrovaný: 04 feb 2014, 16:28
Príspevok
od používateľa Uprock » 12 mar 2016, 12:53
Ďakujem ide to.