www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino in WS2812 RGB led

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 12.02
Kraj: Trebnje

PrispevekObjavljeno: Čet Jan 09, 2020 8:48 pm    Naslov sporočila:  Arduino in WS2812 RGB led Odgovori s citatom

Kot vsako leto obljubim, da bom okoli hiše razpeljal nekaj trakov, sem tudi letos uspel napeljati le tiste kupljene lučke, ki utripajo po svoje. Mr. Green
No in po novem letu je seveda pravi čas za ukrepanje, saj bo december kmalu spet naokoli.
Doma se mi valja en kos RGB WS2812 traku, na netu najdem kar nekaj primerov utripanja, le takega, kot bi ga želel ne.
Recimo, da imam (trenutno) trak z 8 led, rad bi, da se ledice prižigajo in ugašajo od sredine navzven in nazaj.

Koda:

void loop()

   {
    for (int i = 0; i <= 7; i++) {
    leds[i] = CRGB ( 0, 0, 255);
    FastLED.show();
    delay(40);
  }
  for (int i = 7; i >= 0; i--) {
    leds[i] = CRGB ( 0, 0, 0);
    FastLED.show();
    delay(40);
  }
 
}


Tole je trenutna koda, ki deluje: od 1. do zadnje se prižigajo in nazaj grede ugašajo.
Kako dodati v prvem delu recimo še en "for int (recimo j)" ki bo istočasno prižigal v tem primeru 7.,6.,5.,4., diodo, s tem, da bi v prvem delu pač števec spremenil:

Koda:

...
for (int i = 0; i <= 3; i++)
...

In potem bi se seveda poigral še z ugašanjem v tem vrstnem redu.

Upam, da sem razumljivo napisal.

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Čet Jan 09, 2020 10:50 pm    Naslov sporočila:   Odgovori s citatom

Eh, Fadil.......

z leds[i] adresiraš ledico in poveš kakšne barve naj sveti. In če prav razumem knjižnjico Fastled, lahko to narediš za vse ledice na traku, ko vedo kako naj svetijo, prižgeš vse naenkrat z FastLED.show().
To se pravi:

Koda:
leds[6] = CRBG (0, 0, 255);  //Ledice začnejo z 0, torej je 7 ledica leds[6]
leds[5] = CRBG (0, 0, 255);
leds[4] = CRBG (0, 0, 255);
leds[3] = CRBG (0, 0, 255);
FastLed.show();  // in jih naenkrat prižgeš


Na enak način jih ugasneš.

Zadnji primer na tej strani, v katerem s potenciometrom na vhodu Arduina prižigaš in ugašaš ledice, pove vse.
V tem primeru adresira ledice glede na položaj potenciometra in nato vse naenkrat prižge.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
rafaellsi
Član
Član



Pridružen-a: Ned 11 Sep 2011 18:54
Prispevkov: 477
Aktiv.: 3.12
Kraj: Radovljica

PrispevekObjavljeno: Čet Jan 09, 2020 10:59 pm    Naslov sporočila:   Odgovori s citatom

Mogoče bi šlo takole (brez dodatne spremenljivke):
Koda:

.....
 {
    for (int i = 0; i <= 3; i++) {
    leds[i] = CRGB ( 0, 0, 255);
    leds[7-i] = CRGB ( 0, 0, 255);
    FastLED.show();
    delay(40);
  }
.....
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Čet Jan 09, 2020 11:15 pm    Naslov sporočila:   Odgovori s citatom

rafaellsi je napisal/a:
Mogoče bi šlo takole (brez dodatne spremenljivke):.......

Bizgec65 je napisal/a:
....., ki bo istočasno prižigal v tem primeru 7.,6.,5.,4., diodo, s tem, da bi v prvem delu pač števec spremenil............


V gornjih primerih se naslovi ledico, se ji pove, kako naj sveti in nato to isto ledico prižge, nato naslednjo (for i=0 to 7.......), ko so vse prižgane, jih eno po eno ugaša v obratnem vrstnem redu (for i = 7 to 0).

Sicer pa, mogoče nisem čisto razumel, kaj Bizgec65 želi?

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 12.02
Kraj: Trebnje

PrispevekObjavljeno: Čet Jan 09, 2020 11:38 pm    Naslov sporočila:   Odgovori s citatom

Jaka57 je napisal/a:

Bizgec65 je napisal/a:
....., ki bo istočasno prižigal v tem primeru 7.,6.,5.,4., diodo, s tem, da bi v prvem delu pač števec spremenil............


V gornjih primerih se naslovi ledico, se ji pove, kako naj sveti in nato to isto ledico prižge, nato naslednjo (for i=0 to 7.......), ko so vse prižgane, jih eno po eno ugaša v obratnem vrstnem redu (for i = 7 to 0).

Sicer pa, mogoče nisem čisto razumel, kaj Bizgec65 želi?


Res je, sem vedel, da sem nerodno napisal. Rafaellsi je bolj "bral" moje misli kot ti Jaka57, a vseeno hvala obema. Very Happy
Zadeva deluje kot sem želel, tisto naslavljanje ledic posamezno, kako naj sveti, fade in/out..., mi je "kao vse" jasno, le tega nisem uspel najti in razbrati, kako naj naenkrat zasvetita 0 in 7, potem 1 in 6, 2 in 5...
Tistega "leds [7-i]", še nisem jemal.

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Pet Jan 10, 2020 12:49 am    Naslov sporočila:   Odgovori s citatom

Bizgec65 je napisal/a:
.......kako naj naenkrat zasvetita 0 in 7, potem 1 in 6, 2 in 5...
Tistega "leds [7-i]", še nisem jemal.

Če bi tako napisal, se ne bi Brick wall .
Važno, da si rešil.
Boš to na avto dal, kaj je že bila tista nadaljevanka?

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 12.02
Kraj: Trebnje

PrispevekObjavljeno: Pet Jan 10, 2020 7:33 am    Naslov sporočila:   Odgovori s citatom

Jaka57 je napisal/a:


Boš to na avto dal, kaj je že bila tista nadaljevanka?


Vitez za volanom. Very Happy Ne, to bom dal na električni skuter, hahaha.

Drugače pa, "imam čas za igranje", pa sem se res lotil že za naslednje Novo leto pripraviti nekaj kombinacij s temi ledicami, tisto s potenciometrom sem tudi že osvojil, le da jaz trenutno spreminjam kombinacije rajši s tipko, malo se učim in preizkušam. Tu se mi je pa zataknilo.

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Ned Sep 27, 2020 8:03 pm    Naslov sporočila:   Odgovori s citatom

Ker bo kmalu december in da malo obudim temo...
Trenutno se ukvarjam z led trakom z ws2812 ledicami. Za nastavitev barve posameznega "piksla" oz ledice imam naslednjo funkcijo:
Koda:
/*
Pixel=stevilka ledice, Red=svetilnost rdece barve, Green=svetilnost zelene barve, Blue=svetilnost modre barve
*/
void SetPixel(int Pixel, byte Red, byte Green, byte Blue) {
      leds[Pixel].r = Red;
      leds[Pixel].g = Green;
      leds[Pixel].b = Blue;
  }

Na zacetku programa:
Koda:
#define NUM_LEDS 100
CRGB leds[NUM_LEDS];
#define STRIP_PIN 2

in v void setup():
Koda:
FastLED.addLeds<WS2812, STRIP_PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
robert
Član
Član



Pridružen-a: Sob 29 Maj 2004 21:48
Prispevkov: 1869
Aktiv.: 8.42
Kraj: Tolmin

PrispevekObjavljeno: Pon Sep 28, 2020 11:50 pm    Naslov sporočila:   Odgovori s citatom

Najprej hvala za obuditev teme Wink

Ker lani ni bilo te teme so seveda Neopixel LEDice iz Kitajske prinesli šele ledeni možje
d'oh!
Vseeno pa se je v "ropotiji" našlo nekaj Neopixel modulov z po 8LED in par z 5LED, ki so pripadali čisto drugemu projektu.
Ker je že cela hiša polna ESP8266 (Wemos D1) so bile tudi te priključene na enega od njih. Na njega sem naložil: https://github.com/dMbski/ESPtree .
Lučke so pa " 5M WS2811 RGB IP68 Full Color 50PCS Bulbs LED Pixel Module Strip Light " - tukaj je potrebno biti pozoren na 5v izvedbo (cca 12€).
No - pri pospravljanju smrečice je bilo tudi to na hitro stestirano in sedaj je treba spraviti v lično stanje (To-Do Nr.:283) Mr. Green

_________________
LP Robert
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mato1111
Član
Član



Pridružen-a: Pet 28 Dec 2012 14:42
Prispevkov: 611
Aktiv.: 4.46
Kraj: Vrhnika

PrispevekObjavljeno: Tor Okt 20, 2020 10:29 am    Naslov sporočila:   Odgovori s citatom

Mogoce kdo ve koliko je lahko dolga data linija od mikrokrmilnika do led traku ws2812?
Jaz sem kupil Nodemcu z ESP8266 in nanj naložil WLED. Z njim upravljam preko brskalnika pa še 100 že vgrajenih efektov ima podpira pa krmiljenje do 500 ledic (vse vezane zaporedno) Dancing
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group