Stránka 2 z 2
Napsal: 02 bře 2016, 17:39
od mtajovsky
V tom případě se ale změna projeví až při nejbližším srovnání času a hranice. Když budu mít například nastaveno vypnutí ve 21:00 a zapnutí v 06:00 a chtěl bych ve 21:30 posunout vypnutí až na 23:00, čili to ještě na hodinu a půl znovu zapnout, tak se to nezapne dříve než v 6 ráno.
Napsal: 02 bře 2016, 19:42
od AB1
V tom případě se ale změna projeví až při nejbližším srovnání času a hranice. Když budu mít například nastaveno
Záleží jak často děláme to srovnání
Může být třeba v každém běhu hlavní smyčky (test má jen 11 cyklů)
a změna se projeví okamžitě.
Edit:
Ovšem, nefunguje to pozpátku.
Když mám nastaveno zapnutí na 11 hodin a v 10 hodin změním zapnutí na 9 hodin, tak nijak nereaguje, zapne se až v příští 9. hodině.
Napsal: 03 bře 2016, 08:29
od rob_brno
Ještě k tomu čtení z RTC bych viděl dvě další možnosti a to: Poprvé po restartu inicializovat z RTC a pak od aktivovaného výstupu z RTC v přerušení přičítat jedničku do čítače sekund, z toho lze jednoduše pomocí funkce time.h konvertovat na datum a čas. A nebo pokud se zařízení občas vypíná(např.jednou denně nebo týdně), tak po inicializaci z RTC přičítat sekundy podle hodin mcu(pak můžeš RTC napájení přes výstup mcu nebo FET úplně odpojit). Ono se to může trochu rozejít, ale pokud se to občas vypíná, tak se to vždy inicializuje(dělám to tak u cyclocomputeru).
Napsal: 03 bře 2016, 14:28
od Atlan
Uz na prvej stranke som dal podmienku ako to jenoducho urobit, nechapem co tu este tak komplikovane riesite.
Kód: Vybrat vše
//inicializacia vyp=22; zap=6;
//podmienka
if ((hod>vyp)|(hod<zap)) lcd_string("Displej OFF"); else lcd_string("Displej ON ");
hotova vec
http://youtu.be/WePF-IR5ed8 uz by to malo ist
Napsal: 03 bře 2016, 14:40
od jirka89
Video je soukromé. Nejde se kouknout. Hned jak dneska dorazím domů, tak to vyzkouším.
Napsal: 03 bře 2016, 18:42
od jirka89
Program klidně dám, dyť to není nic tajného:
A konkrétní zobrazování na displeji mám zde:
Kód: Vybrat vše
ISR (TIMER1_OVF_vect){
TCNT1 = 65535 - 250; //pro preruseni kazdych 1ms => (1ms/4us = 250)
//zobr_cas(hours, minutes, seconds, tecka);
PORT_BLANK ^= (1 << BLANK);
if (double_click == 1) //rezim nastaveni
{
nastaveni_hodin(); //zavola se funkce, ktera ridi nastaveni hodin
}
if ((double_click == 0) && (displej_off == 1)) //normalni rezim zobrazeni a displej bude zapnut stale
{
zobrazeni_casu(); //funkce, ktera zobrazi cas
}
if ((double_click == 0) && (displej_off == 0)) //rezim, kdy bude displej vypnut
{
zobr_vlastni(20,20,20,20,20,20); // na vsech digitech nezobrazi nic
}
}
A zbytek kódu je zde:
http://paste.ofcode.org/W9raRfxu6gxD4MFX7NbVuT
Jenom jsem tam nedával inicializaci. Snad je to aspoň trošku přehledné.
Napsal: 03 bře 2016, 23:39
od mtajovsky
Jeejda píše:Z logiky věci, když chci něco nastavovat na vyplým zařízení, tak ho musím nejdřív zapnout, že…
Na jakém vyplém zařízení? Řešíme tu obecnou věc, jak nastavovat zapnutí nebo vypnutí v daném denním intervalu. A pokud chci reakci na změnu nastavení co možná nejdříve, tak způsob, který navrhnul AB1 nevyhoví.
Co mám zkušenosti se zákazníky, tak s přístupem "když jste si to jednou nastavili, nemůžete to zpětně změnit" by mě brzo vyfakovali.
Napsal: 04 bře 2016, 23:16
od mtajovsky
Zařízení se zhasnutým displejem není vypnuté zařízení. Klidně si dovedu představit tlačítko, kterým se displej rozsvítí je-li zhasnut (variantní funkce některého tlačítka při zhasnutém displeji) a umožní změnu nastavení. Ta by se pak projevila při nejbližší změně času, tedy třeba do 1 minuty od nastavení.
Ad posouvání času dozadu - tak tohle to bylo opravdu zbytečné. Cílem je možnost kdykoliv zadat nové nastavení a jeho uplatnění co nejrychleji, a konkrétní příklad jsem, myslím, jasně popsal. Nikoliv revokovat historii.
Napsal: 05 bře 2016, 13:52
od Atlan
Je to marny, je to marny....
Ja mam na zosilnovaci osetrene tak ze po vypnuti displej svieti 20% intenzitou 10 minut a potom zhasne. Zatlacenim "lubovolneho" tlacidla na DO sa rozsvieti displej naplno na 10s.
Tak sa mozes inspirovat.