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: 12
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: 31
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: 12
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: 31
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 9 x

crgo1977
Příspěvky: 31
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?

Odpovědět

Kdo je online

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