Led ws2812b blink

Odpovědět
keksik334
Příspěvky: 3
Registrován: 12 říj 2018, 21:39
Reputation: 0

Led ws2812b blink

Příspěvek od keksik334 » 12 říj 2018, 21:47

Ahoj
muze mi nekdo pomoci?
pouzivam tenhle kod
a potreboval bych jeste pridelat aby se po privedeni HIGH na pin dejme tomu 12 je to jedno
seply oba pasky ale jinou barvou tam si nastavim cervenou ale aby zaroven pokud bude seplej levy pasek na blikani tak pravy svitil cervene a po vypnuti leveho se rozsvitil stejne jako pravy cervene.

Kód: Vybrat vše

#include <Adafruit_NeoPixel.h>

////// NASTAVENI LEVEHO PASKU
#define PIN_L_PASEK 6   //pin l pasku
#define NUM_LEDS_L_PASEK 15  //pocet led l pasku
Adafruit_NeoPixel L_PASEK = Adafruit_NeoPixel(NUM_LEDS_L_PASEK, PIN_L_PASEK, NEO_GRB + NEO_KHZ800);

////// NASTAVENI PRAVEHO PASKU
#define PIN_P_PASEK 4  //pin p pasku
#define NUM_LEDS_P_PASEK 15  //pocet led p pasku
Adafruit_NeoPixel P_PASEK = Adafruit_NeoPixel(NUM_LEDS_P_PASEK, PIN_P_PASEK, NEO_GRB + NEO_KHZ800);

////////////POCET LED JEDNOHO Z PASKU
#define NUM_LEDS NUM_LEDS_L_PASEK

////// NASTAVENI VSTUPNICH PINU
#define L_BLINKR_PIN 8  //vstup z l blinkru
#define P_BLINKR_PIN 10  //vstup z p blinkru

void setup() {
/// Nastaveni pinu na ktere pujdou vstupy/ blinkry
  pinMode(L_BLINKR_PIN, INPUT);
  pinMode(P_BLINKR_PIN, INPUT);

///Nastaveni pasku
  L_PASEK.begin();
  L_PASEK.show();

  P_PASEK.begin();
  P_PASEK.show();
}

void loop() {
    if(digitalRead(P_BLINKR_PIN) && !digitalRead(L_BLINKR_PIN))
    {
      colorWipe(0xff,0x3f,0x00, 20, 1);
      colorWipe(0x00,0x00,0x00, 10, 1);
    }

    if(digitalRead(L_BLINKR_PIN) && !digitalRead(P_BLINKR_PIN))
    {
      colorWipe(0xff,0x3f,0x00, 20, 0);
      colorWipe(0x00,0x00,0x00, 10, 0);
    }

     if(digitalRead(L_BLINKR_PIN) && digitalRead(P_BLINKR_PIN))
    {
      colorWipe(0xff,0x3f,0x00, 20, 2);
      colorWipe(0x00,0x00,0x00, 10, 2);
    }
  
}

void colorWipe(byte red, byte green, byte blue, int SpeedDelay, int pasek) {
  if(pasek == 0){
    for(uint16_t i=0; i<NUM_LEDS_L_PASEK; i++) {
      setPixelL_PASEK(i, red, green, blue);
      showL_PASEK();
      delay(SpeedDelay);
     }
    }

if(pasek == 1){
     for(uint16_t i=0; i<NUM_LEDS_P_PASEK; i++) {
      setPixelP_PASEK(i, red, green, blue);
      showP_PASEK();
      delay(SpeedDelay);
     }
    }
    if(pasek == 2){
    for(uint16_t i=0; i<NUM_LEDS; i++) {
      setPixelL_PASEK(i, red, green, blue);
      setPixelP_PASEK(i, red, green, blue);
      showL_PASEK();
      showP_PASEK();
      delay(SpeedDelay);
     }
    }

}

void showL_PASEK() {
 #ifdef ADAFRUIT_NEOPIXEL_H 
   // NeoPixel
    L_PASEK.show();
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H
   // FastLED
   FastLED.show();
 #endif
}

void setPixelL_PASEK(int Pixel, byte red, byte green, byte blue) {
 #ifdef ADAFRUIT_NEOPIXEL_H 
   // NeoPixel
   L_PASEK.setPixelColor(Pixel, L_PASEK.Color(red, green, blue));
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H 
   // FastLED
   leds[Pixel].r = red;
   leds[Pixel].g = green;
   leds[Pixel].b = blue;
 #endif
}

void showP_PASEK() {
 #ifdef ADAFRUIT_NEOPIXEL_H 
   // NeoPixel
   P_PASEK.show();
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H
   // FastLED
   P_PASEK.show();
 #endif
}

void setPixelP_PASEK(int Pixel, byte red, byte green, byte blue) {
 #ifdef ADAFRUIT_NEOPIXEL_H 
   // NeoPixel
   P_PASEK.setPixelColor(Pixel, P_PASEK.Color(red, green, blue));
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H 
   // FastLED
   leds[Pixel].r = red;
   leds[Pixel].g = green;
   leds[Pixel].b = blue;
 #endif
}

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Led ws2812b blink

Příspěvek od petan » 13 říj 2018, 07:35

Posledni dobou se tu rozmohl takovy nesvar. Nove prichozi nectou pravidla fora (viz cercene nahore) a vkladaji do kategorie "pomoc s projekty" kus programu, ktery byva dost dlouhy, bidne okomentovany, pripadne neprehledny a chteji na nem nejakou upravu.

Chapu, ze pro zacatecnika je to problem, ale pochybuju, ze nekdo bude chtit debugovat cizi program a delat bv nem nejaky upravy kdyz ani nevi co to dela...

Lepsi by bylo, kdyby se autor koukl treba do knihy Arduino a snazil se ten kod vubec pochopit a pak pripadne zadal radu na nejakou konkretni cast. Kod k dotazum ve stylu "stahl jsem program z netu, chci tam pridat dve funkce, hotovej kod mi napiste sem" uz ani nectu. Zvlast, kdyz je v teto kategorii.

Abych nevypadal, ze ti nechci poradit... Na zacatku funjce loop jsou podminky, ktere podle aktivnich tlacitek sposteji mody sviceni. Staci nadefinovat dalsi vstup a pridat podminku, podle toho, jak chces svitit. Bohuzel jsem na mobilu, tak nebudu vkladat kod, protoze se to blbe pise.

keksik334
Příspěvky: 3
Registrován: 12 říj 2018, 21:39
Reputation: 0

Re: Led ws2812b blink

Příspěvek od keksik334 » 13 říj 2018, 10:15

No popravde jsem se pokusil podminku pridat a jedine co se mi povedlo tak to ze se rozsvitil cervene ale pokud do toho zapnu jeste levy pasek tak se to tluce a strida se animace a probliknuti cervene
Ale pokud je to fakt takovej problem omlouvam se za zalozeni temata.

Jen je smutny ze se rozmohl takovy nesvar
Ze pokud uplne nerozumite vode a zeptate se instalatera jak to udelat... ze vam nejdriv rekne kdyz ses uplne blbej tak to nedelej bez do skoly a nauc se to
Dnesni doba je fakt divna

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Led ws2812b blink

Příspěvek od petan » 13 říj 2018, 13:00

Však já jsem nepsal, že ti tu nikdo nepomůže, ale že jsi v blbej kategorii. Ze začátku tu byly problémy, proto se tam přidal ten červenej nápis. Naopak si myslím, že se tady na fóru pomohlo hodně lidem i s docela zapeklitejma problémama. Tady nejsme na fóru elektrika.cz
S tím instalatérem to je spíš tak, že si chceš v domě udělat vodu, ale ani nevíš, že existujou různý kolena a spojky, hadice a trubky.. To pak je rada těžká, když ti řekne dej tam redukci na "tříčtvrtku". Potom je lepší si nastudovat alespoň základy (cykly, podmínky, ...) a pak se teprv dá od něčeho odpíchnout. Sám pak uvidíš, že víš na co se zeptat.

Celkově je problém, že když člověk neví, co ten kód dělá a jak je zapojenej HW, tak s tím každej stráví kupu času. A kdo by tady zadara debugoval cizí programy, zvlášť když si to nemůže reálně vyzkoušet. Někdy i zdánlivě jednoduchá úprava je docela velkej zásah do kódu, protože na to kód nemusí být úplně připravenej.

Pokud to chápu správně, máš LEDkový blinkry, který se postupně rozsvěcejí když "blikají" (jako na Audi?). V jedné podmínce pásek rozsvěcíš i a následně zhasínáš. Takže mezi tyto dvě části v podstatě nic vložit nejde.
Pokud sepneš brzdu, tak se červeně rozsvítí světlo, které nemá aktivní blinkr. Pokud pustíš brzdu, zhasne světlo, které nemá aktivní blinkr. Blikání (rozsvícení i zhasnutí) si řeší ty předchozí podmínky.

Zkus za loop() přidat teto kód. Do "BRZDA_PIN" musíš vložit číslo pinu.

Kód: Vybrat vše

    if(digitalRead(BRZDA_PIN){
      //je sepnutá brzda
      
      if(!digitalRead(L_BLINKR_PIN)){
        //není aktivní L blinkr, takže rozsvítit červeně
        colorWipe(0xff,0x00,0x00, 0, 0);
      }

       if(!digitalRead(P_BLINKR_PIN)){
        //není aktivní P blinkr, takže rozsvítit červeně
        colorWipe(0xff,0x00,0x00, 0, 1);
      }
    }
    else{
      //není sepnutá brzda
      
      if(!digitalRead(L_BLINKR_PIN)){
        //není aktivní L blinkr, takže zhasnout
        colorWipe(0x00,0x00,0x00, 0, 0);
      }

       if(!digitalRead(P_BLINKR_PIN)){
        //není aktivní P blinkr, takže zhasnout
        colorWipe(0x00,0x00,0x00, 0, 1);
      }
    }
    
Ještě tam můžeš přidat tenhle kód:

Kód: Vybrat vše

    if(!digitalRead(L_BLINKR_PIN) && !digitalRead(P_BLINKR_PIN) && !digitalRead(BRZDA_PIN))
    {
      colorWipe(0x00,0x00,0x00, 0, 2);
    }
    
Je to jen takovej detail. Ale tohle bude "nutit" světla zhasnout, když se nebude nic mačkat. Je to jen takovej sichr, aby nezůstalo něco z nějakýho důvodu svítit, když by nemělo.

keksik334
Příspěvky: 3
Registrován: 12 říj 2018, 21:39
Reputation: 0

Re: Led ws2812b blink

Příspěvek od keksik334 » 13 říj 2018, 14:20

ano jak ma AUDI :-) v odkazu na puvodni verzi
https://www.youtube.com/watch?v=CWI6qZ8Meb0

ted na stole kopie je plne funkcni i s brzdou :-)


moc dekuji za cas a pomoc

koficek
Příspěvky: 1
Registrován: 12 pro 2019, 18:45
Reputation: 0

Re: Led ws2812b blink

Příspěvek od koficek » 12 pro 2019, 19:35

Ahoj, měl bys ještě ten finální kod? Dělám něco podobné a nemůžu furt najít nějaký kód. Děkuji

Odpovědět

Kdo je online

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