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.
mato
Příspěvky: 49
Registrován: 18 říj 2019, 20:24
Reputation: 0

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

Příspěvek od mato » 26 říj 2019, 19:02

Ahoj...,
protože pár dnů nazpátek jsem tady řešil podobný problém,tak přidám trošku svých poznatků.
Víceméně vždy potřebuji něco nastavit...,uložit nějakou hodnotu...,změnit..., a není nutné se pořád přitom
pohybovat v hlavní smyčce. Takže jsem to upravil tak,že jedním příkazem vyskočím z té hlavní smyčky(loop)
a skočím do podprogramu kde jedu ve smyčce (while) a tam si už nastavuji potřebné věci a potom zase dalším příkazem
z této smyčky(while) vyskočím do té hlavní(loop). Funguje to celkem spolehlivě,protože to vyhodnocuje v tu chvíli jen to potřebné.
Odesílání dat do displeje funguje vždy spolehlivě,jenom dříve dělal problém z displeje do Arduina.
Zkoušel jsem také zvyšovat rychlost na těch 115200,ale žádné zlepšení jsem nezaregistroval.
Toliko mé poznatky,netvrdím,že je to správně,ale lepší řešení jsem v tuto chvíli nenašel.....

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 » 29 říj 2019, 20:35

Zdravím,

Prosím Mato,bylo by možné sem umístit alespoň část kódu jakým způsobem to řešíš?
Stále se snažím nalézt nějaký způsob(radu)na internetu,ale zdá se,že hledám špatně,protože všechny možné příklady jsou pouze použití pro ovládání led.
Když se to pokusím upravit v mém projektu,narazím na spousty chyb.A zase jsem na začátku.Vypadá to,že to bude docela velký oříšek.

mato
Příspěvky: 49
Registrován: 18 říj 2019, 20:24
Reputation: 0

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

Příspěvek od mato » 30 říj 2019, 18:38

Ahoj...!
Pokusím se sem vložit jen základ osekaný z mého projektu, pro názornost,není to nic složitého.
Omlouvám se všem programátorům a lidem v tomto zběhlým za možná chaotický ,nepřehledný a špatný nástřel....
Jsem opravdu amatér!!!
Možná bude lepší, když můj příspěvek někteří přeskočí :shock: ;) !!!

Kód: Vybrat vše

boolean konec = false;//proměnná deklarovaná na začátku kodu
 swSerial.setTimeout(200); //zapsat v setupu

String zprava="";
   while(swSerial.available()>0) {
     zprava = swSerial.readString();
        //pokud to načte zprávu spuštěnou tlačítkem z displeje(print "skok")
             if (zprava_1=="skok") { nacti_zpravu();konec=false;   }   //skočí to do nacti_zpravu() , uloží proměnnou konec=false
          }
          
          //skok do podprogramu
    void nacti_zpravu()
{  
   String zprava_1="";
   digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW);//vykoná některé požadavky po načtení
         
            while(konec==false){  //vykonává smyčku dokud je proměnná konec==false
      zprava_1 ="";
  if (swSerial.available()>0){
    zprava_1 = swSerial.readString();
   //vyhodnocuje načtené podmínky přes tlačítka z displeje a vykoná případné požadavky
              if(zprava_1=="s1_1") {digitalWrite(led1,HIGH);}
         else if(zprava_1=="s1_0") {digitalWrite(led1,LOW);}
         else if(zprava_1=="s2_1") {digitalWrite(led2,HIGH);}
         else if(zprava_1=="s2_0") {digitalWrite(led2,LOW);}
         else if(zprava_1=="s3_1") {digitalWrite(led3,HIGH);}
         else if(zprava_1=="s3_0") {digitalWrite(led3,LOW);}
         else if(zprava_1=="s4_1") {digitalWrite(led4,HIGH);}
         else if(zprava_1=="s4_0") {digitalWrite(led4,LOW);}
         //pokud načte přes tlačítko z displeje (print "home") vykoná příkazy a proměnná 'konec = true' ukončí smyčku while
         else if(zprava_1=="home") { zprava_1 =""; delay(500); konec=true;    
             }
              } 
                }  //návrat do loop
                  }  
                
K tomu všemu jsem ještě udělal na displeji jednu prasárnu :oops: .Ale funguje :roll: . U tlačítka displeje kde provádím (print "skok") spouštím timer(400ms-potřeba vyzkoušet),kde přes něj opakovaně
tím,že tlačítko podržím provádím právě ten (print"skok").Tlačítko uvolním v momentě kdy se mi zobrazí požadovaný přechod na jiný Page displeje.
cca do max. 2sec se mi daří bez problémů vyzkočit z té smyčky loop.
U tohoto tlačítka je samozřejmě nutné v obou Eventech nastavit spouštění timeru = tm1.en=1 / tm1.en=0
Vše je závislé i na tom kolik se toho v té smyčce loop musí vykonat. Ale zatím my to celkem vyhovuje, i když jak jsem psal
je to asi taková trošku "prasárnička"!
Snad jsem to popsal trochu srozumitelně a vysekal to z mého projektu bez chyb.....

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 » 04 lis 2019, 23:45

Zdravím,

nějakou chvíli jsem zkoušel úpravy mého projektu a podařilo se mi něco vytvořit.Níže nabízím soubor.
Mohl by se někdo zkušenější kouknout,zda by to pomohlo s mým problémem.Do arduina jsem to ještě nenahrál,takže nemám odzkoušeno jestli se něco zlepší.
Pokud bych šel správnou cestou,budu rád,když mi někdo poradí kde mám chybu.

Díky
Přílohy
pokus_milies.ino
(73.82 KiB) Staženo 149 x

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 » 05 lis 2019, 17:40

Tak jsem se donutil k nahrání projektu do desky-asi si budu muset pohrát s časy ale pravděpodobně to nebude to pravé.
Nějaký jiný nápad? Nebo mám někde v kódu nějakou chybu?

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 » 18 lis 2019, 21:49

Tak mám opět smůlu.Pokusy s úpravami času mi vůbec nepomohly.
Nevíte nebo nemáte někdo nějaký nápad nebo projekt,který bych mohl použít?Vím,že bych si ho musel upravit k obrazu svému,jde mi hlavně o "kostru" projektu,podle toho bych si upravil nebo znovu napsal ten můj.

Díky všem za rady a nápady.

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 » 18 lis 2019, 23:29

Podle toho co vidím tak teď máš odezvu na tlačítko tak 5 sekund.
Je to pravda?
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 » 19 lis 2019, 22:14

Ahoj,pokud je to podle mé úpravy,tak přibližně 5s.Ale někdy je to rychlejší,přibližně kolem 2s.Když nastavím všechny časy na 1s,pak se mi stane to,že se mi markantně prodlouží načtení,zpracování,zobrazení teplot. Pokoušel jsem se časy měnit,ale moc se to neměnilo.
Někde mám chybu,ale tím,že se to pokouším upravit aby se mi to chovalo,jak bych potřeboval,pravděpodobně ji přehlížím.
Pokud je nějaký nápad,nebo rada,budu rád.

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 » 20 lis 2019, 07:35

Už jsem si objednal také display NEXTION, abych to mohl odzkoušet.
Ale zkus to takto:

Kód: Vybrat vše

void loop() {

//nexLoop(nex_listen_list);

//čtení vstupu 3 pro zobrazení na displeji

int vstupVal = digitalRead(3);
  
 nexLoop(nex_listen_list);        

   
    if(millis() > time_2 + INTERVAL_CAS2){
        time_2 = millis();
a časy smyček takto:

Kód: Vybrat vše

#define INTERVAL_CAS1 5000
#define INTERVAL_CAS2 1000
#define INTERVAL_CAS3 2000
#define INTERVAL_CAS4 3000
Případně by bylo zajímavé změřit jak dlouho ti trvá provedení každé smyčky.
A podle toho nastavit časy.

Když budeš měřit ty časy smyček, tak si potom zkus zrychlit komunikaci po lince a změřit rozdíl v čase.
Serial2.begin(9600);
na
Serial2.begin(19200);
nebo až
Serial2.begin(115200);

Záleží jestli ta komunikace bude fungovat i při vyšší rychlosti.




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 » 20 lis 2019, 16:18

Ahoj,

jestli jsem to správně pochopil a pozorně si prohlédl úryvky z kódu,tak jsi to vytáhl z mého projektu-pochopil jsem to dobře?

Co se týče časů,zkoušel jsem s nimi kouzlit,ale nic se mi nezměnilo porovnám si ten první kousek kódu jestli to nemám jinak.

Jsem rád,že jsem se vydal správným směrem,asi jsem něco přehlédl v mém projektu a tak mi to nefungovalo.

Díky za radu.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 21 hostů