Zobrazování času

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14

Zobrazování času

Příspěvek od Elkez » 14 kvě 2021, 08:50

Zdravím,
do proměnné načítám 10 ms intervaly jako long int a potřeboval bych je průběžně zobrazovat na LCD displeji 1602 ve formátu " 000:00".
V podstatě stopky. Nemá někdo po ruce kousek kódu, který by to zajistil?
Vím, že to už bylo stokrát vymyšlené, tak proč to dělat po stoprvní ;)
Díky za ochotu.
Ještě jeden: je lepší z hlediska přesnosti vyrábět 10 ms pomocí funkce millis() nebo přes přerušení čítače.
Podle mého názoru je to jedno, ale člověk nikdy neví. Používám Arduino DUE.
Buďte všichni zdrávi.

ondraN
Příspěvky: 935
Registrován: 08 srp 2019, 20:01

Re: Zobrazování času

Příspěvek od ondraN » 14 kvě 2021, 09:46

Počítadlo pro millis je řešené přes interrupt, takže dostaneš shodné výsledky. Ale musím upozornit, že přesnost arduin je opravdu bídná. U těch, co jsou osazeny rezonátory místo krystalů, je odchylka klidně i 80ms za minutu. Pokud to má opravdu měřit čas přesně, tak je třeba použít kvalitní krystal a provést kalibraci kmitočtu. U venkovních aplikací pak ještě dát krystal do temperované komůrky :mrgreen:

Uživatelský avatar
pavel1tu
Příspěvky: 2057
Registrován: 26 říj 2017, 08:28
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zobrazování času

Příspěvek od pavel1tu » 14 kvě 2021, 16:50

Jak moc přesné, jak dlouhé časy budeš měřit ?

1) nenačítat žádné 10ms intervaly, ale použít přímo interní časovač (jak se píše výše, koupit verzi Arduina s krystalem)
2) kod napsat jednoduše, pokud bude start/stop tlačítkem/závorou použít přerušení, vyhnout se mezičasům
3) na display po START zobrazovat jen min:sec, až po STOP zobrazit odečtený MM:SS:MS
4) nepoužívat nic na serial ani print, nic

Kdysi (hooodně dávno) jsme dělali stopky na amatérské závody (zručnosti) aut.
V práci mám k dispozici kalibrované měření na jednotky ms, a lepší výsledky dosahoval kod upravený dle tohoto článku.
https://www.instructables.com/How-to-ge ... h-05us-pr/

Kod bych možná sehnal (neslibuji), já tam byl spíše jako ten přes dráty a konzultant přes přesnost ;) a jelikož mne to nezaujalo kod jsem smazal
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14

Re: Zobrazování času

Příspěvek od Elkez » 16 kvě 2021, 18:10

Stačila by mi přesnost asi 30 min / 10 ms.
Potřeboval bych průběžně zobrazovat alespoň desetiny sekund a pak konečný čas na setiny.
Jedná se o měření času při sportovních akcích a je těžké někomu vysvětlovat, že vteřina končí a zapisuje se až po uplynutí 1 vteřiny a ne ihned.
Na desetinách se to nepozná.

ondraN
Příspěvky: 935
Registrován: 08 srp 2019, 20:01

Re: Zobrazování času

Příspěvek od ondraN » 17 kvě 2021, 07:03

Ta přesnost co udáváš, je 5ppm, což je dost fajnová přesnost. S běžným krystalem bez kalibrace je to nedosažitelná hodnota. Běžné krystaly mají 20ppm a více.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14

Re: Zobrazování času

Příspěvek od Elkez » 17 kvě 2021, 16:52

A jak se ta kalibrace dělá?

ondraN
Příspěvky: 935
Registrován: 08 srp 2019, 20:01

Re: Zobrazování času

Příspěvek od ondraN » 18 kvě 2021, 06:56

Buď zapojit obvod oscilátoru tak, aby se dal doladit kmitočet krystalu (kapacitní trimry). Nebo koupit přesný a nastavený krystalový modul a zapojit ho jako zdroj hodin pro arduino. Nebo pořídit přesný krystalový modul a připojit ho jako zdroj frekvence pro interní čítač, který bude zdrojem času. Poslední možnost je softwarová, kde si podle externího přesného zdroje frekvence (dá se použít třeba 1Hz výstup z GPS modulu) spočítáme, po kolika interních ms se odchylka dostane na 1ms, a pak budeme každých x interních ms tu jednu přičítat nebo odečítat. To bude každého kusu jinak a tak se bude muset každý nastavovat a konstanta může být přímo v kódu nebo třeba v EEPROM.

Elkez
Příspěvky: 51
Registrován: 03 úno 2021, 07:14

Re: Zobrazování času

Příspěvek od Elkez » 20 kvě 2021, 15:40

Díky za inspiraci.
Má někdo ten kód? Hrozí nebezpečí, že si ho napíšu sám.

Uživatelský avatar
kiRRow
Příspěvky: 1252
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Zobrazování času

Příspěvek od kiRRow » 20 kvě 2021, 16:35

Směle do toho. Určitě ti někdo poradí a pomůže, ale pochybuji, že někdo bude psát kód za tebe. Pokud ho chceš za každou cenu napsaný od někoho, tak si dej žádost do nabídky práce.

Uživatelský avatar
pavel1tu
Příspěvky: 2057
Registrován: 26 říj 2017, 08:28
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zobrazování času

Příspěvek od pavel1tu » 20 kvě 2021, 19:04

Nejdi si příklad na Arduino hodiny s tím požadovaným displejem, je toho hodně ne netu.
Možná najdeš i stopky.
A z toho můžeš vycházet ;)

https://how2electronics.com/stopwatch-a ... et-button/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti