Zobrazování času
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Zobrazování času
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.
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.
Re: Zobrazování času
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
Re: Zobrazování času
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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Zobrazování času
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á.
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á.
Re: Zobrazování času
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.
Re: Zobrazování času
A jak se ta kalibrace dělá?
Re: Zobrazování času
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.
Re: Zobrazování času
Díky za inspiraci.
Má někdo ten kód? Hrozí nebezpečí, že si ho napíšu sám.
Má někdo ten kód? Hrozí nebezpečí, že si ho napíšu sám.
Re: Zobrazování času
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.
Re: Zobrazování času
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/
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti