Led trake i arduino

poruka: 6
|
čitano: 2.383
|
moderatori: DrNasty, pirat, XXX-Man, Lazarus Long, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
6 godina
neaktivan
offline
Led trake i arduino

 Pozdrav! Nedavno sam krenuo programirati pametne led trake u arduinu. U programiranje se opcenito donekle razumijem, ali arduino mi je novi pa me muci sljedece:

 

Kada bi recimo poljepio te trake po sobi npr. jedna iza televozora, druga na polici, treca na plafonu, recimo, i svaku tu traku spojio na jedan pin na arduino. Jeli moguce da se efekti za svaku traku izvrsavaju istovremeno?

 

Napisao sam nekoliko funkcija za razlicite efekte. U glavnoj loop funkciji moje funkcije se izvrsavaju slijedno, a ja bi istovremeno. Na slici su moje funkcije, znaci samo ih pozovem i efekti rade, nista posebno, ali prvo jedna na prvoj traki, pa druga na drugoj. Sto se mora napraviti da bi to islo istovremeno?

Inace mi engleski nije jaca strana pa yt i nije od koristi. 

 

Hvala

 
0 0 hvala 0
12 godina
offline
Re: Led trake i arduino

Daj malo više informacija o tim funkcijama koje pozivaš.

Čisto da vidimo o kakvim efektima se radi, tj. kako upravljaš pametnim led trakama.

5 godina
offline
Re: Led trake i arduino

Moras staviti pinove s Arduina na istu varijablju, npr. int traka[] = {12, 13, 14}, pa kasnije samo stavljas u kod.

6 godina
neaktivan
offline
Re: Led trake i arduino

Evo: 

 

Funkcija "popunjavanje" doslovno popunjava led traku, ali na sljedeći način: od početka led trake putuju npr. 3 ledice i kad dođu do kraja promjene boju. Te 3 ostanu "dolje" pa zatim idu sljedće tri koje se zaustavljaju do ovih prvih tri i također promjene boju u tu istu. E sad ja sam si složio funkciju da radi sa općenitim brojevima pa možda izgleda komplicirano, ali nije. Prvi parametar koji se predaje funkciji je led traka, nisam siguran jel pravilno reći pokazivač na prvu ledicu kad to nisu nizovi kakve ja znam, ali uglavnom ime koje ste dali pri deklaraciji CRGB. Drugi parametar je redni broj ledice od koje se želi da funkcija kreće, treći je redni broj zadnje ledice. Četvrti je koliko ledica želimo da putuju (gore sam spomenuo 3 pa bi tu išlo 3 ako želimo po 3 ledice), a ostala dva parametra su boje (0-255) koje putuju i koju želimo da svijetli dok ledica dođe. 

 

Funkcija "zmija" izgleda kao da zmija ide kroz cijelu traku u krug. "Glava" joj je najsvjetlija dok se "rep" postepeno smanjuje. Prvi parametar je ime led trake, a drugi koliko ledica ima.

 

I sad kad se to izvršava onak kak sam slikao, prvo se popuni jedna traka pa proleti jedna zmija na drugoj traki, a ja bi da to u isto vrijeme ide.

15 godina
offline
Re: Led trake i arduino
piha kaže...

 Pozdrav! Nedavno sam krenuo programirati pametne led trake u arduinu. U programiranje se opcenito donekle razumijem, ali arduino mi je novi pa me muci sljedece:

 

Kada bi recimo poljepio te trake po sobi npr. jedna iza televozora, druga na polici, treca na plafonu, recimo, i svaku tu traku spojio na jedan pin na arduino. Jeli moguce da se efekti za svaku traku izvrsavaju istovremeno?

 

Napisao sam nekoliko funkcija za razlicite efekte. U glavnoj loop funkciji moje funkcije se izvrsavaju slijedno, a ja bi istovremeno. Na slici su moje funkcije, znaci samo ih pozovem i efekti rade, nista posebno, ali prvo jedna na prvoj traki, pa druga na drugoj. Sto se mora napraviti da bi to islo istovremeno?

Inace mi engleski nije jaca strana pa yt i nije od koristi. 

 

Hvala

 

Problem ti je iz programiranja :)

 

Ono što ti treba je kao kod programiranja igara, jedna render() procedura koja se brine za iscrtavanje.

 

void render()

{

  calcLed1Animation();

  calcLed2Animation();

  renderStep();

}

 

Ovo je teoretski naravno, dakle imaš funkciju render koju pozivaš svakih recimo 10ms. U njoj podesiš kako u tom trenutku trebaju izgledati ledice na svim trakama, i kada podesiš sve ledice, onda pošalješ svim trakama novo stanje (koje može biti i nepromijenjeno).

 

Recimo da imaš na traci jedan ledicu koja blinka svakih 10ms a na traci2 led koji blinka svakih 30ms.

 

0ms: led1 lampa upaljena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku

10 ms kasnije: led1 lampa ugašena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku

20 ms kasnije: led1 lampa upaljena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku 

30 ms kasnije: led1 lampa ugašena, led 2 lampa upaljena. led1 osvježi traku, led2 osvježi traku

 

I tako nekako. Poanta je da ti slanje stanja ledica na trake bude odvojeno od postavljanja stanja ledica, i da stanje ledica postavljaš ovisno o trenutku u vremenu, a ne da imaš loopove i sleepove tamo.

 

Evo malo sam "guglnuo" po baci oko na ovo.

http://gameprogrammingpatterns.com/game-loop.html

6 godina
neaktivan
offline
Re: Led trake i arduino
Dr. Zoidberg kaže...
piha kaže...

 Pozdrav! Nedavno sam krenuo programirati pametne led trake u arduinu. U programiranje se opcenito donekle razumijem, ali arduino mi je novi pa me muci sljedece:

 

Kada bi recimo poljepio te trake po sobi npr. jedna iza televozora, druga na polici, treca na plafonu, recimo, i svaku tu traku spojio na jedan pin na arduino. Jeli moguce da se efekti za svaku traku izvrsavaju istovremeno?

 

Napisao sam nekoliko funkcija za razlicite efekte. U glavnoj loop funkciji moje funkcije se izvrsavaju slijedno, a ja bi istovremeno. Na slici su moje funkcije, znaci samo ih pozovem i efekti rade, nista posebno, ali prvo jedna na prvoj traki, pa druga na drugoj. Sto se mora napraviti da bi to islo istovremeno?

Inace mi engleski nije jaca strana pa yt i nije od koristi. 

 

Hvala

 

Problem ti je iz programiranja :)

 

Ono što ti treba je kao kod programiranja igara, jedna render() procedura koja se brine za iscrtavanje.

 

void render()

{

  calcLed1Animation();

  calcLed2Animation();

  renderStep();

}

 

Ovo je teoretski naravno, dakle imaš funkciju render koju pozivaš svakih recimo 10ms. U njoj podesiš kako u tom trenutku trebaju izgledati ledice na svim trakama, i kada podesiš sve ledice, onda pošalješ svim trakama novo stanje (koje može biti i nepromijenjeno).

 

Recimo da imaš na traci jedan ledicu koja blinka svakih 10ms a na traci2 led koji blinka svakih 30ms.

 

0ms: led1 lampa upaljena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku

10 ms kasnije: led1 lampa ugašena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku

20 ms kasnije: led1 lampa upaljena, led 2 lampa ugašena. led1 osvježi traku, led2 osvježi traku 

30 ms kasnije: led1 lampa ugašena, led 2 lampa upaljena. led1 osvježi traku, led2 osvježi traku

 

I tako nekako. Poanta je da ti slanje stanja ledica na trake bude odvojeno od postavljanja stanja ledica, i da stanje ledica postavljaš ovisno o trenutku u vremenu, a ne da imaš loopove i sleepove tamo.

 

Evo malo sam "guglnuo" po baci oko na ovo.

http://gameprogrammingpatterns.com/game-loop.html

 Interesantno. Sviđa mi se i vjerojatno je to to što trebam, samo što trenutno nemam ideju kako napraviti takvu funkciju ili bilo kakav efekt. Istražit ću. U svakom slučaju hvala puno.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice