Pavouk Hiwonder
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Re: Pavouk Hiwonder
stejně jako u elektronických hraček i u počítačových her jsou dva druhy lidí ... běžní uživatelé a ti co se v tom rádi nimrají
Re: Pavouk Hiwonder
a ti co se v tom nimrají to posunou o kousek dál
Re: Pavouk Hiwonder
schematický diagram funkce Pavouka.jpg[/attachment]tak jsem se pokusil vytvořit schématický diagram funkcí pavoučka. Nějak se mi nepodařilo tam zakomponovat všechny závislosti tak jsem je tam jen naznačil.
.
.
Re: Pavouk Hiwonder
Já jsem to tušil
Já bych si to ošetření PIR senzoru vytáhnul do samostatné funkce, která by se volala z loop() nějak rozumně často a updatovala nějakou proměnnou (proměnné) PIR_stav, s tím, že dokud by se to "nezahřálo", tak by to tam mělo nějakou hodnotu pro "zatím nic" (něco zjevně mimo smysluplný rozsah). A ve vlastním programu bych četl právě tu proměnnou a pokud by tam bylo "zatím nic", tak bych měření nepoužíval a šel jinudy/defaultní cestou.
Takže by v té proměnné vždycky bylo něco správného a pokud bych vymyslel lepší čtení, zjistil, že start trvá déle/je rychlejší nebo něco jiného, tak by se to upravilo jen v té funkci na ošetření senzoru a zbytek by byl pořád stejný.
(Případně by to mohlo během startu místo "zatím nic" mít "vetřelec nedetekován", pokud by to dávalo smysl pro ošetřování stavu v programu, kde něco jen reaguje na přítomnost/nepřítomnost vetřelce - dokud se "nezahřeje", tak žádného vetřelce nevidí, takže nic neřeší. Nebo tak nějak.)
Jinak právě to "rozmotávání" na co nejjednodušší a nejpřehlednější a nezávislé části právě výrazně zjednodušuje přidávání dalších funkcí. Ideálně se z loop() volá po sobě mraky kratičkých, časově nenáročných, kousků kódu a není potřeba žádné delay(), které by blokovalo ostatní části, ale kdekoli je potřeba čekat, tak se tam testují millis() nebo splnění podmínky a pokud "ještě ne", tak se to přeskočí a vyřizuje se plynule vše ostatní a pak se ta loop() zopakuje. (Čili běžně se loop() proběhne mockrát po sobě v zanedbatelném čase aniž by se něco dělalo, dokud se nenajde něco, na co je třeba reagovat. Arduino neumí "nedělat nic", takže čekání je stejně náročné (a stejně dělané) jako točení se ve smyčce.)
Re: Pavouk Hiwonder
Zrovna pro pavoučka platí to co píše gilhad ... musí umět reagovat okamžitě za jakékoliv situace, takže program musí co nejvíce možného času zůstat v loopu ... a když už se zdržuje někde jinde, tak musí umět co nejrychleji se do loopu vrátit. Na začátku loopu proběhneš všechny možné senzory, poukládáš si data, pak to začneš probírat - rozděl si to na dva stavy vše OK a děje se něco kritického ... v prvním případě pokračuješ dál v programu dle toho co se náhodně vygenerovalo za chování/akci ... v druhém případě musíš prováděnou akci okamžitě zrušit a začít provádět akci, která zabrání katastrofě
na tohle se pak hodí globální proměnné ... říká se jim flagy (vlaječky) ... nabírají hodnot 0/1 ... něco jako isError ... nastavím false a zavolám pět funkcí každá si projede svůj senzor a kterákoliv může nastavit isError na true ...
na tohle se pak hodí globální proměnné ... říká se jim flagy (vlaječky) ... nabírají hodnot 0/1 ... něco jako isError ... nastavím false a zavolám pět funkcí každá si projede svůj senzor a kterákoliv může nastavit isError na true ...
Re: Pavouk Hiwonder
Díky kiRRow , hlavně mě zaujala myšlenka - delay je ztracený čas ! -> využít ho jinak. Pokuším se toho držet, ale pavouček potřebuje občas "uklidnit" jinak snímače stále registrují "nějakou činnost". Zvláště gyroskop a pir . Myslím že drobné zdržení až tak moc nevadí.
Zatím pavouček běhá podle představ. Má volnost pohybu a většinou nenarazí do překážky měří půl metru, takže občas nějaká nožka zavadí, ale většinou to přetlačí . Perfektně reaguje na pir a světlo baterky. Momentálně čekám na doručení žárovky která se zapíná při tlesknutí. Budu ji muset rozkuchat a nějak připojit. Ještě by se dala použít klíčenka ale ta při rozmontování už nefunguje spolehlivě - testoval jsem to - musela být přímo "přilepená na skeletu jinak nereagovala.
Zatím pavouček běhá podle představ. Má volnost pohybu a většinou nenarazí do překážky měří půl metru, takže občas nějaká nožka zavadí, ale většinou to přetlačí . Perfektně reaguje na pir a světlo baterky. Momentálně čekám na doručení žárovky která se zapíná při tlesknutí. Budu ji muset rozkuchat a nějak připojit. Ještě by se dala použít klíčenka ale ta při rozmontování už nefunguje spolehlivě - testoval jsem to - musela být přímo "přilepená na skeletu jinak nereagovala.
Re: Pavouk Hiwonder
další vlaječka do programu ... jeUklidneny ... pokud true, tak bude přeskakovat určité funkce
Re: Pavouk Hiwonder
Existuje nějaká funkce která automaticky "zapíše" do programu aktuální datum ?
Jde mi o toto - když nahraji program do pavoučka tak aby se tam sám uložil i datum případně i čas nebo verze. Pokud ho opět zapnu třeba za 2 dny budu vědět která verze je tam aktuálně nahraná - vypíše se mi na displej.
Jde mi o toto - když nahraji program do pavoučka tak aby se tam sám uložil i datum případně i čas nebo verze. Pokud ho opět zapnu třeba za 2 dny budu vědět která verze je tam aktuálně nahraná - vypíše se mi na displej.
Re: Pavouk Hiwonder
Arduino UNO je ATMega328 a ten má 1 kB EEPROM paměti - data přežijí vypnutí, restart, ... Tady je základní info v češtině: https://arduino8.webnode.cz/news/lekce- ... -a-eeprom/
Ale jestli to číslo verze či datum+čas půjde zapsat nějak automaticky, to teda nevím.
Ale jestli to číslo verze či datum+čas půjde zapsat nějak automaticky, to teda nevím.
Re: Pavouk Hiwonder
není to funkce, ale informace pro preprocesor ... ten je zodpovědný za to, že místo include a define dosadí soubor, nebo hodnotu ...
mrkni na "__DATE__" a "__TIME__"
https://wokwi.com/projects/355850345084414977
mrkni na "__DATE__" a "__TIME__"
https://wokwi.com/projects/355850345084414977
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti