WS2812B problém s Arduino Pro Mini

Odpovědět
libec
Příspěvky: 4
Registrován: 20 úno 2018, 21:49
Reputation: 0

WS2812B problém s Arduino Pro Mini

Příspěvek od libec » 20 úno 2018, 21:58

Dobrý den,
řeším problém s kombinací arduino pro mini a pásek adresovatelných led diod WS2812b.

Napájení 5V zdroj dostatečně silný, DIN na pinu 6 seriově přes odpor 470 ohmu, 15ks led diod, u pásku mám kondenzátor 470 mikro Faradů.

Kód následující:

Kód: Vybrat vše

#include <Adafruit_NeoPixel.h>                                   // přičlenění knihovny
#define pocet 15                                                 // počet LED v pásku
#define pin 6                                                    // výstup signálu na pinu  
Adafruit_NeoPixel LED = Adafruit_NeoPixel(pocet,pin,NEO_GRB + NEO_KHZ800);
  // inicializace - definuje objekt LED třídy Adafruit_NeoPixel, parametry jsou počet diod v řadě
  // pin pro výstup signálu, pořadí barev a kmitočet pulzů 
int zelena,cervena,modra;                                        // pracovní proměnné

void setup() {
  LED.begin();                                                   // vynulování paměti vyhrazené LED
}

void loop() {                                                    // smyčka demonstračního programu
  for (int barva=0; barva<=6; barva++){                          // ... pro 7 barev  
    switch (barva) {                                             // nastavení složek aktuální barvy
      case 0: {zelena = 255; cervena = 0  ; modra = 0  ; break;}
      case 1: {zelena = 255; cervena = 255; modra = 0  ; break;} 
      case 2: {zelena = 0  ; cervena = 255; modra = 0  ; break;}
      case 3: {zelena = 0  ; cervena = 255; modra = 255; break;}
      case 4: {zelena = 0  ; cervena = 0  ; modra = 255; break;} 
      case 5: {zelena = 255; cervena = 0  ; modra = 255; break;}
      case 6: {zelena = 255; cervena = 255; modra = 255; break;}
      }
    for (int i=0; i<pocet; i++){                                 // nalití barvy do všech LED
      LED.setPixelColor(i, zelena, cervena, modra);              // nastavení jedné LED     
      LED.show();                                                // přenesení dat do fyzických LED 
      delay(50);                                                 // zpomalení nalití
      }
    for (int i=255; i>=0; i--){                                  // stmívání všech LED současně 
      LED.setBrightness(i);                                      // nastavení jasu
      delay(3);                                                  // zpomalení stmívání
      LED.show();                                                // přenesení dat do fyzických LED 
      }    
    LED.setBrightness(255);                                      // vrácení jasu na plnou hodnotu
  }                                                              // konec cyklu pro jednu barvu 
}     
Při spuštění pásek pouze svítí bílou barvou.

Pokud udělám stejné zapojení s Arduino Nano, vše běží bez problémů. Nevím kde může být problém. U Pro Mini jsem zkoušel i jiné piny, u kterých je v technickém listě uvedeno, že umí PWM.

Nesetkal jste se někdo s tímto problémem, případně nenapadá někoho, čím by to mohlo být způsobené?

Děkuji.
L.
Naposledy upravil(a) libec dne 20 úno 2018, 22:06, celkem upraveno 2 x.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: WS2812B

Příspěvek od jankop » 20 úno 2018, 22:05

Zkusil bych snížit kmitočet řízení.
Jaký vliv má dostupnost PWM na WS2812B ? To přece nemá spolu nic společného.

Uživatelský avatar
SkullKeep
Příspěvky: 290
Registrován: 23 srp 2017, 18:51
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: WS2812B problém s Arduino Pro Mini

Příspěvek od SkullKeep » 21 úno 2018, 09:35

Spíš jestli chyba v zápisu barvy u diody. Zkuste změnit tento příkaz:

Kód: Vybrat vše

LED.setPixelColor(i, zelena, cervena, modra);
na

Kód: Vybrat vše

LED.setPixelColor(i, LED.Color(zelena, cervena, modra));
Snad to vyřeší chybu s barvou.
:twisted: :?: :arrow: :geek: P. Q. M.

libec
Příspěvky: 4
Registrován: 20 úno 2018, 21:49
Reputation: 0

Re: WS2812B

Příspěvek od libec » 21 úno 2018, 21:16

jankop píše:
20 úno 2018, 22:05
Zkusil bych snížit kmitočet řízení.
Jaký vliv má dostupnost PWM na WS2812B ? To přece nemá spolu nic společného.
Co máte na mysli tím kmitočtem řízení?
PWM myslím kvůli nastavení jasu?.

Nejsem žádný odborník, tak se omlouvám za případné hloupé dotazy.

Děkuji

libec
Příspěvky: 4
Registrován: 20 úno 2018, 21:49
Reputation: 0

Re: WS2812B problém s Arduino Pro Mini

Příspěvek od libec » 21 úno 2018, 21:20

SkullKeep píše:
21 úno 2018, 09:35
Spíš jestli chyba v zápisu barvy u diody. Zkuste změnit tento příkaz:

Kód: Vybrat vše

LED.setPixelColor(i, zelena, cervena, modra);
na

Kód: Vybrat vše

LED.setPixelColor(i, LED.Color(zelena, cervena, modra));
Snad to vyřeší chybu s barvou.
Nejedná se mi o chybu v barvě. Na Arduino Nano vše funguje jak má.
Kód postupně rozsvěcuje jednu diodu za druhou a v každém cyklu mění barvu. (takový had měnící barvy)

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: WS2812B problém s Arduino Pro Mini

Příspěvek od jankop » 21 úno 2018, 21:25

Kód: Vybrat vše

Adafruit_NeoPixel LED = Adafruit_NeoPixel(pocet,pin,NEO_GRB + NEO_KHZ800);
změnit na

Kód: Vybrat vše

Adafruit_NeoPixel LED = Adafruit_NeoPixel(pocet,pin,NEO_GRB + NEO_KHZ400);
Nastavení jasu WS2812B nemá s PWM opravdu žádnou spojitost.

libec
Příspěvky: 4
Registrován: 20 úno 2018, 21:49
Reputation: 0

Re: WS2812B problém s Arduino Pro Mini

Příspěvek od libec » 14 bře 2018, 13:01

Děkuji za rady, pod delší době jsem měl trochu času a problém vyřešil. Jde o to, že mám Pro MINI verze 3,3V a v Arduino IDE jsem měl navolenou desku 5V. Po změně na 3,3V vše šlape jak má.

Odpovědět

Kdo je online

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