pomoc s optimalizací(zrychlením) projektu

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.
crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

pomoc s optimalizací(zrychlením) projektu

Příspěvek od crgo1977 » 19 říj 2019, 02:45

Zdravím vás,

prosím o pomoc s optimalizací nebo by se taky dalo říci se zrychlením mého projektu.
Můj projekt obsahuje arduino Mega,displej nextion,8 čidel Dallas 18b20,8 relé,hodiny reálného času,5 krokových motorů které budou použity
pro ovládání stínící techniky nad okny.
Můj projekt mi funguje dá se říci,tak jak potřebuji,má ale drobnou vadu - pokud chci něco nastavit na displeji,má to pomalou odezvu.
Chtěl bych proto poprosit zkušenější o pomoc jestli by se s tím nedalo něco vymyslet.
Procházím již nějakou dobu internet za pomoci "pana Googla" ale nepodařilo se mi najít to co bych potřeboval. Ale je možné,že se jen špatně hledám.
Narazil jsem pouze na nějaké rady typu multitask,nebo rozdělení do více souborů.

Mohl by mi prosím někdo zkušenější poradit?

Předem děkuji za pomoc

Níže přikládám můj celý projekt. Pokud by bylo potřeba i projekt displeje,klidně jej připojím.
Přílohy
muj_termostat_8_cidel_8_rele_12_mega.ino
(73.48 KiB) Staženo 150 x

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od pavel1tu » 19 říj 2019, 08:19

Mohl bys prosím přesněji definovat:
pokud chci něco nastavit na displeji,má to pomalou odezvu

- displej funguje pomalu
- po odeslání povelu z displeje se provede až .... za xx hodin ?

děkuji

PS: já jsem ten z pomalejších na foru - myslím tím v chápání (nepleťte s chrápání)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od pavel1tu » 19 říj 2019, 08:43

No,
musím postahovat knihovny aby to šlo zkompilovat.
Máš toho v tom Nextion opravdu hodně, asi toho od tebe dost okoukám. Nextiony tu mám na stole asi 3, hodíš sem i projekt na displej, nebo pokud nechceš veřejně, pošli po PM.

Začni tím, že port pro komunikaci jak s displejem tak s PC kde odposloucháváš zvedni rychlost na 115200 (nebo postupně zvedej, co to unese) - musíš nastavit i v displeji (mne to funguje s mými programy na této rychlosti ale mám DUE)
Já nemám MEGA, jen DUE a blbne mi - musím mít všechny porty na stejné rychlosti, jinak se sem tam grybne ;)

Už to to možná trochu odbrzdí.

Já nemám moc času, program je to obrovský, možná poradí ostatní - jen pro "zjednodušení" a "zpřehlednění" programu by tam asi šla spousta věcí odělat jednou funkcí a volat ji s parametry, ale musím se tím prokousat - hlavně to ovládání motorů je pro mne zatím španělská vesnice.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od crgo1977 » 19 říj 2019, 19:46

Zdravím,jsem překvapený rychlou odezvou,děkuji.

Pomalejší odezvou displeje jsem myslel to,že když chci na displeji nastavit některou hodnotu ( např. button b9) tak po stisku tohoto tlačítka musím nějakou chvilku ( je to do max 1s ) čekat,než se mi změní hodnota - protože stiskem tlačítka změněnou hodnotu ukládám do EEPROM v arduinu.
a pokud chci aktivovat nějakou funkci pomocí displeje,potom je to pouze o náhodě ( pravděpodobně se náhodně trefím do konce,respektive začátku čtení smyčky loop ).Proto u některých tlačítek mám seriový tisk do seriového monitoru.

Co se týká projektu displeje,nemám problém ho sem umístit soubor je zabalený do ZIP souboru.Přikládám pouze HMI soubor - projekt do displeje posílám pomocí převodníku,ne pomocí karty.

Několik vysvětlivek:
Původně jsem chtěl pouze řídit teplotu několika čidly ( mám dojem,že jsem počítal s 3ks).Pořídil jsem si proto jen UNO a TFT displej-do začátku mi to vyhovovalo,jenže když jsem pozoroval,jak mi narůstá projekt jenom vykreslováním okýnek,rozhodl jsem se pořídit si lcd Nextion 2,4" .
Zpočátku mi to vyhovovalo - než jsem se naučil co a jak - převažovalo více hledání na internetu. Pak se stalo to,co jsem nečekal - Aplikace mi oznámila,že projekt je velký. Proto používám Mega.
Velikost paměti mě poté fascinovala a pomaloučku jsem začal přidávat další a další věci - třeba hodiny reálného času,řízení motorů.... Projekt ještě není úplně hotový (ikdyž na tom již pracuji cca 1 rok). Chybí mi ještě doladit některé funkce a přemýšlel jsem i o propojení s internetem asi přes aplikaci Blink-ale v tomhle směru ještě nemám rozhodnuto pro tento účel jsem si pořídil modul ENC28j60,ale jak jsem psal na komunikaci jsem ještě nazačal.

V současné době mě spíše trápí komunikace s displejem - je spožděná a tudíž mi nejdou doladit funkce tak jak bych chtěl.

Děkuji za pomoc a případnou radu
Přílohy
teploty_new4.zip
(37.9 KiB) Staženo 140 x

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od KamilV » 21 říj 2019, 09:01

Myslím si, že kdybys místo:
prom0, prom1, prom2, prom3, ... promN
používal pole a na opakující se kód funkce, měl by celý projekt maximálně třetinu, ne-li míň.
Nedělají v kódu problém ty delaye? Zkus zakomentovat všechny řádky s delay(), tipuju, že display se jeví jako pomalý proto, že ho musíš držet stisknutý tak dlouho, dokud se netrefíš mezi delaye...

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od crgo1977 » 21 říj 2019, 19:31

Je mi úplně jasné,že problém je se samotným kódem. Proto jsem poprosil zde o pomoc jak to zlepšit. Snažím se dohledat nějaké informace na internetu,ale tak nějak nevím jak do toho. Vím,že s největší pravděpodobností budu muset "překopat" celý program. Hledám možnosti co a jak aby mi to pomohlo.
Děkuji za informaci,podívám se na to.

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od ohruska » 21 říj 2019, 22:09

Asi si budeš muset rozčlenit program na skupiny a provádět jen to, co je potřeba.
Třeba zobrazovat čas jen při změně stavu a ne při každém průchodu smyčkou.
Přepisovat hodnoty na displeji jen, když se změní hodnota.
Přepisovat hodnoty displeje, jen za určitý čas, třeba 1x za minutu.
Nebo udělat smyčku s deseti průchody a každý průchod číst jenom jedno čidlo a poslední desátý průchod číst čas.
Hlavně zvětšit komunikační rychlost až na maximum.

Ota

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od crgo1977 » 23 říj 2019, 20:54

Zdravím,
napsaným radám rozumím,vím,že můj "špageti" program je napsaný špatně,proto mám takové problémy jaké mám. Ale poprosil jsem o radu jak to můžu opravit,nebo přepsat.Na internetu jsem sice našel několik variant - ať už multitask,mebo pole,ale z ukázkových projektů jsem to apsolutně nepochopil a navíc
si nevím rady,jak bych možnosti implementoval ( nebo podle toho přepsal ) můj projekt.
Také proto jsem zde na fóru poprosil o radu. nejde mi o to,aby mi zde někdo přepsal celý program,jen potřebuji navést jak to napsat.

Přesto děkuji za všechny dosavadní rady a nepřestanu s hledáním možností jak můj projekt dovést do zdárného konce.

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od ohruska » 25 říj 2019, 12:12

Jen něco k větvení programu.

Kód: Vybrat vše

unsigned long time1,time2,time_old;

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  
time1 = millis();
if ((time1-time2)>=1000) { //co se ma udelat kazdou sekundu
    time2 = millis();

}  

if ((time1-time_old)>=60*1000) { //co se ma udelat kazdou minutu
    time_old = millis();   
        
}
//co se dela stale

}

crgo1977
Příspěvky: 36
Registrován: 20 led 2018, 20:16
Reputation: 0

Re: pomoc s optimalizací(zrychlením) projektu

Příspěvek od crgo1977 » 25 říj 2019, 22:00

Zdravím,
tahle rada vypadá zajímavě. Můžu se zeptat,co je to za název funkce?
Do kódu jsem doplnil své poznámky - pochopil jsem správně jak bych to mohl řešit?

Kód: Vybrat vše

unsigned long time1,time2,time_old;
[b]//tady mi zůstane vše,co mám na začátku projektu včetně knihoven[/b]
void setup() {
  // put your setup code here, to run once:
}

void loop() {
  
time1 = millis();
if ((time1-time2)>=1000) { //co se ma udelat kazdou sekundu
    time2 = millis();
[b]//tady bych mohl číst teploty[/b]

}  

if ((time1-time_old)>=60*1000) { //co se ma udelat kazdou minutu
    time_old = millis();   
        
}
//co se dela stale
[b]tady bych mohl hlídat displej[/b]
}
Jsou mé poznámky dobře? V případě,že bych použil tuhle možnost,úprav by mnoho nebylo.
Díky za radu,prostuduju si příklad ( radu ) a pokusím se to naimplementovat do mého projektu.

Odpovědět

Kdo je online

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