Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Fade

Fade

C,C++,C#

Moderátori: psichac, Moderátori

Fade

Odosla┼ąod Pacient » 09 Okt 2018, 20:05

Zdrav├şm, chcem sa op├Żta┼ą ako ob├şs┼ą pou┼żitie rela─Źn├Żch oper├ítorov na uskuto─Źnenie oper├ície :
premenn├ę:
a, b, c, d, e, f
ke─Ć "a" dosiahne za ─Źas napr: 500 ms hodnotu 255 tak za─Źne klesa┼ą ale za─Źne v tom istom okamihu st├║pa┼ą hodnota na "b" a ke─Ć dosiahne hodnotu 255 za─Źne zase klesa┼ą a v tom istom okamihu st├║pa┼ą hodnota na "c" a to iste dookola a┼ż po "f" ke─Ć "f" dosiahne hodnotu 255 tak za─Źne klesa┼ą a za─Źne v tom istom okamihu st├║pa┼ą hodnota na "a"
Fade cyklus bez toho aby nebola nejaká hodnota premennej v hodnote 0
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod pocitujlasku » 09 Okt 2018, 21:04

nieco podobne som riesil v algoritme pre fade rozsvietenie schodov. Moj princip: cyklus, kde periodicky prechadzam vsetky kanaly. ak predchadzajuci je vyssi ako urcita hodnota, tak aktualny incrementujem. + samozrejme kontrola na max. hodnotu a musi tam byt vynimka pre prvy, aby sa to odstartovalo. mam tam aj fade out a rozlisuje to, ci to ma ist od 1..x alebo x..1
zajtra by som postol kod, ale je to pre arduino a je to fakt par riadkov.
Intel, Nvidia, Ubuntu, Firefox, Asus, Nissan, Jelinek 52%, Metal
---------------------------------------------------------------------------------------------
Jedn├şm z nejv─Ťt┼í├şch projev┼» ned┼»v─Ťry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 4298
Vek: 35.76
Zalo┼żen├Ż: 20.07.2007
Bydlisko: Poprad
Karma: 17

Re: Fade

Odosla┼ąod peterple » 09 Okt 2018, 22:38

Pacient nap├şsal:ako ob├şs┼ą pou┼żitie rela─Źn├Żch oper├ítorov

To je ─Źo za masochizmus? Pre─Źo bez rela─Źn├Żch oper├ítorov? Nu┼ż ale dobre
K├│d: Vybra┼ą v┼íetko
unsigned char a, b, c, d, e, f;
unsigned char *pUp, *pDown;
a=b=c=d=e=f=0;
pUp=&a;
pDown=&f;
while (1){
  if (tick) {
   (*pUp)++;
   (*pDown)--;
   if (!(*pUp)){ // posupni ukazatele ak sme pretiekli na 0
     if (pUp == &a) { pUp=&b; pDown=&a;}
     else if (pUp == &b) { pUp=&c; pDown=&b;}
     else if (pUp == &c) { pUp=&d; pDown=&c;}
     else if (pUp == &d) { pUp=&e; pDown=&d;}
     else if (pUp == &e) { pUp=&f; pDown=&e;}
     else { pUp=&a; pDown=&f;}
   }
   tick=0;
  }
}

Napr├şklad takto. Neviem presne ─Źi to bude plni┼ą okrajov├ę podmienky, ale to je detail ─Źo treba doladi┼ą.
Keby si miesto t├Żch x premenn├Żch pou┼żil pole tak by sa dalo hafo ifov urobi┼ą jedn├Żm.

Je to z hlavy tak┼że to ani nemus├ş fungova┼ą, ale je to principi├ílny n├ístrel. tick nastavuje preru┼íenie.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod Pacient » 10 Okt 2018, 07:15

Keby si miesto t├Żch x premenn├Żch pou┼żil pole tak by sa dalo hafo ifov urobi┼ą jedn├Żm.

Mohli by ste mi to pole trochu ujasni┼ą?
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod pocitujlasku » 10 Okt 2018, 09:11

K├│d: Vybra┼ą v┼íetko
for (channel=0;channel<=(firstChannel+lastChannel);channel++) {      // periodically surf channels
      value=0;
      if (channel==firstChannel) {                                       // exception for first channel
        value=chval[channel];
        sendData(channel,value,fade);
      } else { // all other channels
        value=chval[channel+work];                                       // value for previos channel
        if ((fade>0 && value>=lightOn) || (fade<0 && value<=lightOff)) { // previous value is in interval to change
          value=chval[channel];
          sendData(channel,value,fade); //send value for channel
        }
      }


sendData - to je funkcia, ktora nastavuje pre dany kanal hodnotu a posle ju radicu
channel - index, ktory kanal sa prave spracuva v cykle
firstchannel - index prveho kanala (viem ist od prveho po posledny, alebo od posledneho k prvemu)
fade - +1, alebo -1 - ci sa rozsvecuje, alebo zhasina
lightOn - hodnota, ktoru ked dosiahne predchadzajuci kanal, tak sa zacne rozvecovat aktualny
lightOff - to iste, ale pre zhasinanie
+nejaka ta omacka okolo, ako kontrola tlacidla, komunikacia s pwm modulom, definovanie poctu kanalov... celkovo ma moj projekt aj s nastavovanim a deklaraciou okolo 120 riadkov.
Intel, Nvidia, Ubuntu, Firefox, Asus, Nissan, Jelinek 52%, Metal
---------------------------------------------------------------------------------------------
Jedn├şm z nejv─Ťt┼í├şch projev┼» ned┼»v─Ťry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 4298
Vek: 35.76
Zalo┼żen├Ż: 20.07.2007
Bydlisko: Poprad
Karma: 17

Re: Fade

Odosla┼ąod peterple » 10 Okt 2018, 17:45

pocitujlasku: Ale to podstatn├ę tam nem├í┼í. Neobi┼íiel si pou┼żitie rela─Źn├Żch oper├ítorov.
Pacient: ak├Ż m├í┼í na to d├┤vod?

To pole som myslel takto nejako:
K├│d: Vybra┼ą v┼íetko
unsigned char chanels[6];
unsigned char *pUp, *pDown;
chanels[0]=chanels[1]=chanels[2]=chanels[3]=chanels[4]=chanels[5]=0; // alebo cyklom
pUp=chanels;
pDown=&chanels[5];
while (1){
  if (tick) {
   (*pUp)++;
   (*pDown)--;
   if (!(*pUp)){ // posupni ukazatele ak sme pretiekli na 0
     if (pUp == &chanels[5]) { pUp=chanels; pDown=&chanels[5];}
     else  { pDown=pUp; pUp++; }
   }
   tick=0;
  }
}


Kraj┼íie ┼że. A je mi vcelku jedno ─Źi ich bude 6 alebo 50.
(pocitujlasku ─Źiasto─Źne som ti vykradol meno po─ża)
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod Pacient » 10 Okt 2018, 19:41

peterple
ja som si len myslel ┼że bez pou┼żitia rela─Źn├Żch oper├ítorov to bude jednoduch┼íie

jednoducho potrebujem napisat program ktory dokaze pri fadeingu prvej ledky na hodnotu "255" zacat pri tejto hodnote rozsvecovat druhu ledku ale zhasinat prvu, aby cyklus fungoval kontinualne, ak chcete postnem tu kod ale len nekompletny tyka sa len dvoch lediek a je napisany v if, nestudoval som c tak som v tom amater ale chcem sa to naucit. kamos to napisal cez relacne operatory ale potom som o ten kod prisiel "honor Windows". Na nete " aj ked som sa tomu venoval cele dva dni aby som tomu pochopil" som nenasiel priamy priklad na to aby som pochopil ako funguju, preto tie relacne operatory nechcem pouzivat funkcia IF mi pride pochopitelnejsia.
Dakujem za pomoc

PS: Nie ka┼żd├Ż vid├ş riadok programovacieho k├│du ako Vy/ty.
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod peterple » 10 Okt 2018, 20:26

Nu┼ż tu sa mus├şm op├Żta┼ą tak├║ klasick├║ ot├ízku majora Terazkyho. A ─Źo si vy Kefal├şn predstavujete pod pojmom rela─Źn├Ż oper├ítor?
Ja tu toti┼ż od za─Źiatku tu┼í├şm ┼że ide o terminologick├Ż omyl. S if to toti┼ż nem├í ve─ża spolo─Źn├ęho. (navy┼íe if nie je funkcia)
http://ctp.mkprog.eu/sk/c/relacne_operatory/

A ─Źo tak├ę ukazatele? Tie som pou┼żi┼ą mohol? Ja som to nap├şsal najjednoduch┼íie ako som len vedel. Len neviem neviem ─Źi sa to d├í pochopi┼ą bez hlb┼í├şch znalost├ş C a bin├írnej s├║stavy. Ale zasa plat├ş kto sa ve─ża p├Żta ten sa ve─ża dozvie.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod pocitujlasku » 11 Okt 2018, 08:50

K├│d: Vybra┼ą v┼íetko
const int lastChannel=5; // 6 kanalov 0..5

void SetValue(setChannel, int step) {
  int endValue = step==1?255:0; //nastav hodnotu, kedy skoncit
  int i = step==1?0:255; //nastav hodnotu od ktorej zacat - opak endValue
  while (i != endValue) { // opakuj, kym nedosiahnes koniec
     SetChannel = i; //nastav hodnotu na kanale
     i + = step; //zvysit, znizit hodnotu
     //pripadny delay
  }
}

void main() {
   channel = 0;
   while (true) {
     SetValue(channel,1);
     //aj tu moze byt delay - je max. rozsvietene
     SetValue(channel,-1);
     channel++; //prejdi na dalsi kanal
     if (channel>lastChannel) { //ak je viac ako max, chod na kanal 0
       channel = 0;
     }
   }

Velmi nepracujem s ukazovatelmi (a vseobecne s C), tak poprosim peterple mozes trocha upravit tento kod, je to len taky nacrt, ako by to este mohlo byt.
V principe, vezmem prvy kanal, a poviem, ze ma ist do max. (to je ta funkcia). ak dosiahne max, tak to iste, ale s inym krokom. potom sa posunie na dalsi a robi to iste.
Vo vysledku to bude ako zeleznicne navestie, striedavo blikat prve 0..max, max..0 a potom to iste s druhym.
Intel, Nvidia, Ubuntu, Firefox, Asus, Nissan, Jelinek 52%, Metal
---------------------------------------------------------------------------------------------
Jedn├şm z nejv─Ťt┼í├şch projev┼» ned┼»v─Ťry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 4298
Vek: 35.76
Zalo┼żen├Ż: 20.07.2007
Bydlisko: Poprad
Karma: 17

Re: Fade

Odosla┼ąod Pacient » 11 Okt 2018, 19:04

peterple nap├şsal:Nu┼ż tu sa mus├şm op├Żta┼ą tak├║ klasick├║ ot├ízku majora Terazkyho. A ─Źo si vy Kefal├şn predstavujete pod pojmom rela─Źn├Ż oper├ítor?
Ja tu toti┼ż od za─Źiatku tu┼í├şm ┼że ide o terminologick├Ż omyl. S if to toti┼ż nem├í ve─ża spolo─Źn├ęho. (navy┼íe if nie je funkcia)
http://ctp.mkprog.eu/sk/c/relacne_operatory/

A ─Źo tak├ę ukazatele? Tie som pou┼żi┼ą mohol? Ja som to nap├şsal najjednoduch┼íie ako som len vedel. Len neviem neviem ─Źi sa to d├í pochopi┼ą bez hlb┼í├şch znalost├ş C a bin├írnej s├║stavy. Ale zasa plat├ş kto sa ve─ża p├Żta ten sa ve─ża dozvie.



Neviem ─Źo som V├ím urobil ale toto spr├ívanie vo─Źi mojej osobe je nepochopiteln├ę
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod peterple » 11 Okt 2018, 19:45

Neurobil si mi ni─Ź. A ─Źo som urobil ja? Pouk├ízal som dve zjavn├ę chyby v pr├şspevkoch a parafr├ízoval som hl├í┼íku z ─îiernych bar├│nov.

pocitujlasku:
zmenil by som jedin├Ż riadok vo funkcii SetValue
K├│d: Vybra┼ą v┼íetko
     SetChannel (setChannel, i) //nastav hodnotu na kanale

SetChannel je funkcia ktor├í pod─ża ─Ź├şsla kan├ílu nastav├ş pr├şslu┼ín├║ hodnotu PWM pre kan├íl. Tu ┼żiadne ukazatele netreba.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod Pacient » 11 Okt 2018, 19:56

Tu prikladám obrázok ako by som chcel aby to fungovalo

Obrázok

url : https://imgur.com/a/bawUPfa :rolleyes: :rolleyes: :rolleyes:
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod amater63 » 11 Okt 2018, 20:34

Obrázek nejde. :(
amater63
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2128
Zalo┼żen├Ż: 02.05.2016
Bydlisko: Morava-─Ź.r.
Karma: 8

Re: Fade

Odosla┼ąod Pacient » 11 Okt 2018, 20:39

A url link? Normalne pou┼żite aj rela─Źn├ę oper├ítory len mi dajte predlohu pod─ża ktorej to dok├í┼żem dozajtra ve─Źera nap├şsa┼ą :cry: :cry: :cry:
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod peterple » 11 Okt 2018, 21:25

Url link funguje. V tom prvom n├íbehu ti tam nech├Żba modr├í nadol? Ak ├íno, tak som ti to urobil u┼ż dvakr├ít, raz s premenn├Żmi, raz s po─żom a v┼żdy bez rela─Źn├Żch oper├ítorov ako si zrejme omylom po┼żadoval. Je to z hlavy, nie je to odladen├ę, ale zatia─ż to principi├ílne nikto nenapadol. Tak si to odsimuluj ak m├í┼í z├íujem. Viac nem├ím k tomu ─Źo doda┼ą. Upravi┼ą aby to prv├Ż raz t├║ modr├║ nadol ne┼ąahalo je brnka─Źka na jeden if a jednu premen├║.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod Pacient » 11 Okt 2018, 21:38

OK v─Ćaka za odpove─Ć r├íno to vysk├║┼íam :applause: :applause: :applause:
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod Pacient » 15 Okt 2018, 20:28

peterple nap├şsal:Url link funguje. V tom prvom n├íbehu ti tam nech├Żba modr├í nadol? Ak ├íno, tak som ti to urobil u┼ż dvakr├ít, raz s premenn├Żmi, raz s po─żom a v┼żdy bez rela─Źn├Żch oper├ítorov ako si zrejme omylom po┼żadoval. Je to z hlavy, nie je to odladen├ę, ale zatia─ż to principi├ílne nikto nenapadol. Tak si to odsimuluj ak m├í┼í z├íujem. Viac nem├ím k tomu ─Źo doda┼ą. Upravi┼ą aby to prv├Ż raz t├║ modr├║ nadol ne┼ąahalo je brnka─Źka na jeden if a jednu premen├║.


sws, poznamenal som ze tie relacne operatory mozete pouzi┼ą, ak to zjednodussi kod tak to prijmem, bez urazky
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod peterple » 15 Okt 2018, 20:52

ked┼że sme v C a testuje sa proti nule tak ich nepotrebujem. oper├ítor ! mi v tomto pr├şpade bohate sta─Ź├ş. Akur├ít tomu asi m├ílokto porozumie Mo┼żno nejak├Ż javascriptaci, tam je to be┼żn├í kon┼ítrukcia. V JAVA to zru┼íili a tam treba pou┼żi┼ą oper├ítor !=.
Ale ─Źi to zap├ş┼íe v C ─Źlovek tak alebo tak tak to vo v├Żsledku kompil├ítor prelo┼ż├ş ├║plne rovnako.

Ja som sa len hodne divil ┼że niekto p├ş┼íe po┼żiadavku asi tak├Żm to ┼ít├Żlom:
Chcel by som odvies┼ą autom. Ale nesiete pou┼żi┼ą volant. Ale aj to sa d├í. St├íle rovno najprv dopredu a potom dozadu. V tom programe sa rob├ş oboje naraz.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1777
Vek: 52.04
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 48

Re: Fade

Odosla┼ąod Pacient » 15 Okt 2018, 20:56

Tak┼że?
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Re: Fade

Odosla┼ąod Pacient » 23 Okt 2018, 20:58

peterple nap├şsal:ked┼że sme v C a testuje sa proti nule tak ich nepotrebujem. oper├ítor ! mi v tomto pr├şpade bohate sta─Ź├ş. Akur├ít tomu asi m├ílokto porozumie Mo┼żno nejak├Ż javascriptaci, tam je to be┼żn├í kon┼ítrukcia. V JAVA to zru┼íili a tam treba pou┼żi┼ą oper├ítor !=.
Ale ─Źi to zap├ş┼íe v C ─Źlovek tak alebo tak tak to vo v├Żsledku kompil├ítor prelo┼ż├ş ├║plne rovnako.

Ja som sa len hodne divil ┼że niekto p├ş┼íe po┼żiadavku asi tak├Żm to ┼ít├Żlom:
Chcel by som odvies┼ą autom. Ale nesiete pou┼żi┼ą volant. Ale aj to sa d├í. St├íle rovno najprv dopredu a potom dozadu. V tom programe sa rob├ş oboje naraz.


Pros├şm V├ís, ten program nieje podmienen├Ż "(tick)" resp. hodnotou z nejak├ęho D/A vstupno-v├Żstupn├ęho portu ale ─Źasom na obr├ízku som to zn├ízornil, alebo ak som to zle pochopil, ten (tick) je vrcholn├í hodnota pwm sign├ílu dosiahnut├ęho na nejakej ledke? :?: :?: :?: :?: :?:
Pacient
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 56
Zalo┼żen├Ż: 15.09.2018
Karma: 0

Ďalšia

Nasp├Ą┼ą na C,C++,C#

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 0 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 1.59 sek├║nd