Close

Led ws2812b pomoc

Úvodní stránka Fórum Vaše projekty Arduino Led ws2812b pomoc

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 52)
  • Autor
    Příspěvky
  • #8078
    keksik334
    Účastník

    Ahoj
    Potreboval bych pomoct mam led pasek ws2812 a chci sni nahradit led na moto kufru
    jiz ted mam na moto kufru led ktere blikaj zaroven s blinkrama
    jde mi o to jak sepnu led kdyz privedu signal treba z blinkru aby se rozjela animace
    predpokladam ze budu muset snizit napeti z blinkru cim nejlepe snizit napeti ktere by reklo arduinu sepni.
    tady je to co bych chtel pouzit ale potrebuju to sepnout az privedu signal..

    muzete mi pomoct s kodem? 🙂

    #include <Adafruit_NeoPixel.h>
    #define PIN 6
    #define NUM_LEDS 12
    // Parameter 1 = number of pixels in strip
    // Parameter 2 = pin number (most are valid)
    // Parameter 3 = pixel type flags, add together as needed:
    //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
    //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
    
    void setup() {
      strip.begin();
      strip.show(); // Initialize all pixels to 'off'
    }
    
    void loop() {
      colorWipe(0xff,0xa2,0x00, 40);
      colorWipe(0x00,0x00,0x00, 5);
    }
    
    void colorWipe(byte red, byte green, byte blue, int SpeedDelay) {
      for(uint16_t i=0; i<NUM_LEDS; i++) {
          setPixel(i, red, green, blue);
          showStrip();
          delay(SpeedDelay);
      }
    }
    void showStrip() {
     #ifdef ADAFRUIT_NEOPIXEL_H 
       // NeoPixel
       strip.show();
     #endif
     #ifndef ADAFRUIT_NEOPIXEL_H
       // FastLED
       FastLED.show();
     #endif
    }
    
    void setPixel(int Pixel, byte red, byte green, byte blue) {
     #ifdef ADAFRUIT_NEOPIXEL_H 
       // NeoPixel
       strip.setPixelColor(Pixel, strip.Color(red, green, blue));
     #endif
     #ifndef ADAFRUIT_NEOPIXEL_H 
       // FastLED
       leds[Pixel].r = red;
       leds[Pixel].g = green;
       leds[Pixel].b = blue;
     #endif
    }
    
    void setAll(byte red, byte green, byte blue) {
      for(int i = 0; i < NUM_LEDS; i++ ) {
        setPixel(i, red, green, blue); 
      }
      showStrip();
    }
    #8085
    Vojtěch Vosáhlo
    Účastník

    Ahoj,
    na snížení napětí se dá použít spousta věcí, nejjednoduší by byl asi obyčejný napěťový dělič ze 2 rezistorů, pak je taky možnost použít nějaký tranzistor, relé a nebo třeba nějaký optočlen. Chcete brát signál od blinkru, bylo by to od žárovky nebo od samotné páky? -> U páky dostaneme zap/vyp, u žárovky rovnou blikání… Dá se pracovat s obojím.

    Předpokládám že tyto funkce spouští animaci samotnou, poté by se hlavní smyčka upravila takto:

    void loop() {
        if(digitalRead(Pin Na ktery Jde Signal))
        {
          colorWipe(0xff,0xa2,0x00, 40);
          colorWipe(0x00,0x00,0x00, 5);
        }
      
    }

    A do void setup přidáte
    pinMode(Pin Na ktery Jde Signal, INPUT);

    To by mělo stačit.

    Držím palce

    #8086
    keksik334
    Účastník

    dekuji za reakci.. mam doma 7805 muzu pouzit? budu brat signal primo od blinkru mam to nejlepe dostupne tak ze bych dal 7805 snizil napeti na 5v privedl na pin. jinak na stole super uz funguje sepne po propojeni pinu tak ze zaklad bych mel
    a ted kdyz bych chtel spinat animaci na dvou vystupech (prava nebo leva strana)? 🙂

    #include <Adafruit_NeoPixel.h>
    #define PIN 6
    #define NUM_LEDS 12
    // Parameter 1 = number of pixels in strip
    // Parameter 2 = pin number (most are valid)
    // Parameter 3 = pixel type flags, add together as needed:
    //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
    //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
    
    void setup() {
      pinMode(8, INPUT);
      strip.begin();
      strip.show(); // Initialize all pixels to 'off'
    }
    
    void loop() {
        if(digitalRead(8))
        {
          colorWipe(0xff,0xa2,0x00, 40);
          colorWipe(0x00,0x00,0x00, 5);
        }
      
    }
    
    void colorWipe(byte red, byte green, byte blue, int SpeedDelay) {
      for(uint16_t i=0; i<NUM_LEDS; i++) {
          setPixel(i, red, green, blue);
          showStrip();
          delay(SpeedDelay);
      }
    }
    void showStrip() {
     #ifdef ADAFRUIT_NEOPIXEL_H 
       // NeoPixel
       strip.show();
     #endif
     #ifndef ADAFRUIT_NEOPIXEL_H
       // FastLED
       FastLED.show();
     #endif
    }
    
    void setPixel(int Pixel, byte red, byte green, byte blue) {
     #ifdef ADAFRUIT_NEOPIXEL_H 
       // NeoPixel
       strip.setPixelColor(Pixel, strip.Color(red, green, blue));
     #endif
     #ifndef ADAFRUIT_NEOPIXEL_H 
       // FastLED
       leds[Pixel].r = red;
       leds[Pixel].g = green;
       leds[Pixel].b = blue;
     #endif
    }
    
    void setAll(byte red, byte green, byte blue) {
      for(int i = 0; i < NUM_LEDS; i++ ) {
        setPixel(i, red, green, blue); 
      }
      showStrip();
    }
    #8087
    Vojtěch Vosáhlo
    Účastník

    mam doma 7805 muzu pouzit?

    Jak budete arduino napájet? LM7805 je regulátor napětí určený pro stabilizaci napájecího napájení, né pro snížení. Asi by se použít dal ale je to hodně zbytečné. Pokud máte po ruce 4 rezistory o stejné hodnotě, nemá cenu vymýšlet nic jiného.

    Tento kód by měl fungovat, nahoře akorát specifikujte ty piny a počty led. Kdyby to nešlo, ozvěte se.

    #include <Adafruit_NeoPixel.h>
    
    ////// NASTAVENI LEVEHO PASKU
    #define PIN_L_PASEK pin l pasku
    #define NUM_LEDS_L_PASEK pocet led l pasku
    Adafruit_NeoPixel l_pasek = Adafruit_NeoPixel(NUM_LEDS_L, PIN_L_PASEK, NEO_GRB + NEO_KHZ800);
    
    ////// NASTAVENI PRAVEHO PASKU
    #define PIN_P_PASEK pin p pasku
    #define NUM_LEDS_P_PASEK pocet led p pasku
    Adafruit_NeoPixel p_pasek = Adafruit_NeoPixel(NUM_LEDS_P, PIN_P_PASEK, NEO_GRB + NEO_KHZ800);
    
    ////// NASTAVENI VSTUPNICH PINU
    #define L_BLINKR_PIN vstup z l blinkru
    #define P_BLINKR_PIN vstup z p blinkru
    
    void setup() {
    /// Nastaveni pinu na ktere pujdou vstupy/ blinkry
      pinMode(L_BLINKR_PIN, INPUT);
      pinMode(R_BLINKR_PIN, INPUT);
    
    ///Nastaveni pasku
      l_pasek.begin();
      l_pasek.show();
    
      p_pasek.begin();
      p_pasek.show();
    }
    
    void loop() {
        if(digitalRead(P_BLINKR_PIN))
        {
          colorWipe(0xff,0xa2,0x00, 40, 1);
          colorWipe(0x00,0x00,0x00, 5, 1);
        }
    
        if(digitalRead(L_BLINKR_PIN))
        {
          colorWipe(0xff,0xa2,0x00, 40, 0);
          colorWipe(0x00,0x00,0x00, 5, 0);
        }
      
    }
    
    void colorWipe(byte red, byte green, byte blue, int SpeedDelay, int pasek /// 0 = levy pasek / 1 = pravy 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);
         }
        }
      
      
    }
    void showL_PASEK() {
     #ifdef ADAFRUIT_NEOPIXEL_H 
       // NeoPixel
        l_pasek.show();
     #endif
     #ifndef ADAFRUIT_NEOPIXEL_H
       // FastLED
       FastLED.show();
     #endif
    }
    
    void setPixel_L_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 setPixel_P_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
    }
    
    #8088
    keksik334
    Účastník

    Dostanu se k void loop

    Arduino: 1.6.10 (Windows 7), Vývojová deska: „Arduino/Genuino Uno“

    C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: In function ‚void loop()‘:

    netblink:33: error: ‚colorWipe‘ was not declared in this scope

    colorWipe(0xff,0xa2,0x00, 40, 1);

    ^

    netblink:39: error: ‚colorWipe‘ was not declared in this scope

    colorWipe(0xff,0xa2,0x00, 40, 0);

    ^

    C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: At global scope:

    netblink:46: error: expected ‚,‘ or ‚…‘ before ‚if‘

    if(pasek == 0){

    ^

    netblink:63: error: expected ‚)‘ before ‚}‘ token

    }

    ^

    netblink:63: error: expected initializer before ‚}‘ token

    netblink:63: error: expected declaration before ‚}‘ token

    exit status 1
    ‚colorWipe‘ was not declared in this scope

    #8089
    Vojtěch Vosáhlo
    Účastník

    Pardon, zapoměl jsem tam komentář 😉
    Takhle je to správně.

    
    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);
         }
        }
    
    f(pasek == 1){
         for(uint16_t i=0; i<NUM_LEDS_P_PASEK; i++) {
          setPixelP_PASEK(i, red, green, blue);
          showP_PASEK();
          delay(SpeedDelay);
         }
        }
    
    }
    
    #8090
    keksik334
    Účastník

    neni za co se omlouvat to ja se omlouvam ze tomu vuuubec ale vuuubec nerozumim

    Arduino: 1.6.10 (Windows 7), Vývojová deska: „Arduino/Genuino Uno“

    C:\Users\Jiri\Documents\Arduino\netblink\netblink.ino: In function ‚void colorWipe(byte, byte, byte, int, int)‘:

    netblink:48: error: ‚setPixell_pasek‘ was not declared in this scope

    setPixell_pasek(i, red, green, blue);

    ^

    netblink:49: error: ‚showl_pasek‘ was not declared in this scope

    showl_pasek();

    ^

    netblink:56: error: ‚setPixelp_pasek‘ was not declared in this scope

    setPixelp_pasek(i, red, green, blue);

    ^

    netblink:57: error: ‚showp_pasek‘ was not declared in this scope

    showp_pasek();

    ^

    exit status 1
    ‚setPixell_pasek‘ was not declared in this scope

    #8091
    keksik334
    Účastník

    Uz to mam dekuji moc za pomoc 😉

    #8092
    Vojtěch Vosáhlo
    Účastník

    Můžu jen vědět jak jste to nakonec vyřešil s napájením a spínáním? Použijete lm nebo…?

    #8093
    keksik334
    Účastník

    k napajeni asi pouziju LM spinat je asi opravdu hloupost pouzit LM tak pouziju nejaky ten odpor jak jsem jeste nehledal 🙂 rozumim tomu asi jako vcelam (vubec) ale bavi me spekulovat 😀

    #8094
    Vojtěch Vosáhlo
    Účastník

    😀 Tak to bude asi nejlepší, tady je link na kalkulačku pro odpory Voltage divider ale prakticky když dáte do série 2 stejné odpory, mezi nimi je polovina napětí které do nich pouštíte.

    napětí z blinkru —-| R1 |——| R2 |—- GND
    |
    |
    polovina napětí blinkru

    Samozřejmě čím větší je rozdíl v odporu mezi oběma rezistory, tím menší napětí je uprostřed. Nevím kolik má blinkr, asi 12V , takže R1 musí být 2x odpor R2 –> dostanete asi 4 volty uprostřed.

    #8095
    Vojtěch Vosáhlo
    Účastník

    Ta polovina má být mezi dvěma rezistory 😀 posunulo se to

    #8096
    keksik334
    Účastník

    Super dekuju za rady a pomoc 😉
    az bude vse hotovo dam video jak to slape 🙂 ale nebude to zitra 🙂

    #8097
    Vojtěch Vosáhlo
    Účastník

    Jasně, těším se.

    #8099
    Vojtěch Vosáhlo
    Účastník

    Super, teď to můžete posouvat dál 😀 Animace pro brzdový světlo, různý animave při zrychlování motorky, no už to vidim 😉 za chvíli z toho máte disko motorku.

Aktuálně je na stránce zobrazeno 15 příspěvků - 1. až 15. (celkem z 52)
  • Pro reakci na toto téma se musíte přihlásit.