Jednorozměrné pole

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Jednorozměrné pole

Příspěvek od Patrik » 23 dub 2020, 15:28

Patrik píše:
23 dub 2020, 15:25
KiRRow a má to i nejaký jiný přínos například kromě přehlednosti? Například že to méně zabere místa v paměti?

Pavle, děkuji... Budu rád, když se na to koukneš.. Ano. Zamítnuto napíše vždy... Tzn. pokud uživatel projde přes schváleno a pak má ten daný čas v b (cyklus třeba těch 40 s jsou otevřená ty relátka) tak mu to na konci napíše pak zamítnuto a vypíše na LCD cislo jeho karty vlastně v DEC soustavě (po dobu 15 sekund)... Stejně tak když zmáčkne tlačítko ke stopnutí času, tak mu to také napíše zamítnuto, ale ještě se rozsvítí postupně 3 LED diody a pak pohasnou.

A z jiného projektu jsem použil pouze načtení bitů z RFID čtečky a převod do desítkové soustavy a pak volám vlastně tu funkci printBits () . Já zde také budu až večer a mrknu ještě na to.

Tzn. zamítnuto se má opravdu objevit vždy a pokaždé... ale pokud karta byla nactena poprvé tak se má pred tím prostě provést cyklus s promennou b a byt ty relatka otevreny az na 40 s... A to se mi práve po "nulovani hodnot" jen u nekterych karet neprovede... proste schvaleno, rozsviti se modra led dioda a hned zamitnuto a zhasne.

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

Re: Jednorozměrné pole

Příspěvek od kiRRow » 23 dub 2020, 15:41

Přehlednost kódu je absolutní minimum přínosu. Přístup a práce s tímto polem je uplně něco jinýho. S pamětí je to diskutabilní ... teoreticky počet dat je stejný, takže by rozdíl být neměl.
Nejbrutálnější rozdíl jsem poznal při ukládání do eeprom. Místo složitého počítání na které adrese jsem a co by tam tak mělo být, tak jsem vytvořil datovou struktůru a tu jako celek vložil do eeprom. Uloženo. Při načítání, jsem vytvořil znovu tu struktůru, a jako celek ji z eeprom natáhnul a jednotlivé položky struktůry zapsal do řídících proměnných programu. Načteno.

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Jednorozměrné pole

Příspěvek od Patrik » 23 dub 2020, 22:00

Děkuji za cenné rady, opravdu si toho moc vážím.. :-)

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

Re: Jednorozměrné pole

Příspěvek od gilhad » 24 dub 2020, 05:07

Jasne, mega ma vic pameti (ja uvazoval UNO a ostatni 328) a tak ti tak rychle nedojde a zasobnik se vleze snadno (pokud tam neni nejaka chyba v kodu, spis asi ne) - UNO by tech 2402 bytu uz nedalo.

Jinak kdyz ti to nefunguje spravne a nevis proc, tak je prehlednost cennejsi, nez cokoli jineho :) (Natoz kdyz pameti mas dost a rychlost te taky netrapi)

Navic kdyz si veci zprehlednis, tak casto mimochodem prijdes i na to, jak to udelat lip a usetris jak pamet, tak i zvysis rychlost.

Nemluve o tom, ze jakmile to mas jednou prehledne a funkcni, tak se s tim da delat mnohem lip a treba i cilene to upravit na mensi spotrebu pameti, na vetsi rychlost, na vic polozek, lepsi funkcnost ...

Je dobre zacit s mensim programem, ktery je prehledny (vcetne spravneho odsazovani a tak) a nedela skoro nic, ale funguje spravne - a pak tam pridavat jednu vec po druhe a mezitim to vzdy otestovat - pokud to najednou prestane fungovat spravne, tak je na 80+% chyba v tom poslednim kousku funkcnosti, co jsi pridal - a pokud je to jen par radku, tak se da najit snadno.

Pokud nejdriv napises velky program co "umi vsechno" a pak teprve zacnes zkouset, tak vetsinou jednak netusis, kdde je chyba, jednak je tam tech chyb vetsinou vic a nekdy se i navzajem maskujou.

Na prvni pohled se zda, ze zacit s malym a prehlednym a porad dokola testovat a pridavat jen kousicky je strasne pomale, ale v praxi usetris strasne casu na ladeni a hledani chyb. (A mam to osobne vyzkouseno na spouste projektu od par desitek radku po par stovek tisic radku kodu)

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

Re: Jednorozměrné pole

Příspěvek od ondraN » 24 dub 2020, 07:42

gilhad má naprostou pravdu. Třeba pro mě je nejdůležitější, nejdříve získat celkový odhled, než si sednu ke klávesnici. Nejprve si celou věc nechám jen tak běhat v hlavě. Někdy stačí den a je jasná představa, jak to řešit. Někdy mi to trvá třeba celý měsíc, než jsem spokojený. Pak začnu s kostrou programu, funkce si píšu jako prázdné a místo kódu do nich dávám komentář, co by se v nich mělo stát. Třeba pak zjistím, že je nějaká nepotřebná, nebo že by bylo výhodné nějaké sloučit. Pokud potřebuji nějaku práci s HW, tak si otevřu nový sketch a v něm si to vyzkouším. Když to funguje, udělám z toho funkci, která naplňuje popis v hlavním kódu a pak ji tam mohu rovnou zkopírovat.
Další věc jsou komentáře. To, co se děje je zřejmé ze zápisu kódu. V komentáři by mělo být, proč jsem to udělal. Psát, třeba, při nějakém přiřazení, že jsem do B dosadil A je k ničemu. Ale když si napíšu že s A budu dále něco dělat, co změní jeho obsah ale původní hodnotu budu stále potřebovat, to je podstatně důležitější.
Je mi jasné, že každý má asi trochu jinou metodu, ale chce to zkoušet a najít si, co ti bude nejvíc vyhovovat a pak to půjde už samo :P

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Jednorozměrné pole

Příspěvek od Patrik » 25 dub 2020, 09:49

Děkuji pánové,

zkusil jsem kód celý překopat, vytvořit nové podmínky,... Chci se jen zeptat. Se starým kódem, když byly takové problémy, tak došlo k tomu, že se kontroler zastavil (prostě přestal probíhat cyklus) a na LCD displeji zůstal zobrazený nápis a kurzor byl na displeji jakoby na písmeně U (když provádíte změny)... nevím proč... Znamená to, že byla z nějakého důvodu překročená paměť? Nahrál jsem kód nový, který zatím funguje bez problému (všichni kdo to vyzkoušeli) ovšem po asi 6 hodinach se na LCD displeji prvniho radku zacalo zobrazovat vyšší kontrast (jako by na displeji někdo přidal potenciometrem) - text šel vidět ale jen pod určitým úhlem... Už nemám problémy s rušením displeje (nezobrazují se mi nesmyslné texty, které se mi zobrazovaly)... Nyni mám stíněnou krabičku od LCD displeje, vodiče a také samotný kontrolér od Arduina, ale toto mě zaujalo... Při přehrání programu se to vrátilo do původního stavu... Zkusil jsem přidat lcd.clear (); na začátek cyklu a po nulování hodnot.

seta1J
Příspěvky: 29
Registrován: 02 říj 2017, 04:32
Reputation: 0

Re: Jednorozměrné pole

Příspěvek od seta1J » 11 kvě 2020, 06:54

Jen na rychlovku mě napadlo zda při deklaraci takto
unsigned int pocet [216] = {}; //
se shodují pozice v jednotlivých polích. Např v poli "pocet" bude zápis na pozici 2 a v jiném to nebude na pozici třeba 5. Takže nesedí proti sobě. Při tomto
unsigned int pocet [216] = {0,0,0,0,0, ............., 215}; //
by k tomu dojít nemohlo.

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Jednorozměrné pole

Příspěvek od Patrik » 30 kvě 2020, 09:51

Problém ustal při nulování všech hodnot prvků pole (i těch co byly = 0). Děkuji.

Odpovědět

Kdo je online

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