Pavouk Hiwonder

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
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.
Odpovědět
Uživatelský avatar
kiRRow
Příspěvky: 1278
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Pavouk Hiwonder

Příspěvek od kiRRow » 08 pro 2024, 13:57

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í :D

luger
Příspěvky: 235
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 08 pro 2024, 14:58

a ti co se v tom nimrají to posunou o kousek dál :D

luger
Příspěvky: 235
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 10 pro 2024, 19:04

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.
.
Přílohy
schematický diagram funkce Pavouka.jpg

Uživatelský avatar
gilhad
Příspěvky: 839
Registrován: 07 bře 2018, 11:22

Re: Pavouk Hiwonder

Příspěvek od gilhad » 11 pro 2024, 13:46

luger píše:
07 pro 2024, 10:52
tak se probírám tím kódem od gilhad. V prvé řadě tam ve while .... chybí závorka:
Já jsem to tušil ;)
luger píše:
07 pro 2024, 10:52
Nejvíc mě štve pomalý náběh PIR senzoru. Ten než se "zahřeje" tak to trvá i minutu a mezitím mi tam dělá signálama pěkný bordel. Pak už to funguje pěkně.
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.)

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

Re: Pavouk Hiwonder

Příspěvek od kiRRow » 11 pro 2024, 16:09

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 ...

luger
Příspěvky: 235
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 14 pro 2024, 11:31

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 :D měří půl metru, takže občas nějaká nožka zavadí, ale většinou to přetlačí :D . 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.

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

Re: Pavouk Hiwonder

Příspěvek od kiRRow » 14 pro 2024, 17:18

další vlaječka do programu ... jeUklidneny ... pokud true, tak bude přeskakovat určité funkce

luger
Příspěvky: 235
Registrován: 30 dub 2023, 11:06

Re: Pavouk Hiwonder

Příspěvek od luger » 14 pro 2024, 19:42

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.

Pablo74
Příspěvky: 100
Registrován: 03 lis 2019, 17:00

Re: Pavouk Hiwonder

Příspěvek od Pablo74 » 14 pro 2024, 19:57

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.

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

Re: Pavouk Hiwonder

Příspěvek od kiRRow » 14 pro 2024, 23:43

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

Odpovědět

Kdo je online

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