Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ESP32 Fastled+WIFI+Bluetoth+Dotyk+DS18b20

05 Mar 2019 15:15 171 5
  • Poziom 2  
    Witajcie Przyjaciele!
    Zmajstrowałem sobie na balkon lampki oparte na WS2812b (300 szt.) steruje to teraz Arduino nano ,Kodowanie dla FASTLED.Wszystko fajnie hula. Chciałbym jednak troszkę sprawę rozwinąć, a mianowicie:
    1. Sterować za pomocą ESP32
    2. Bluetoth ze smartfonem do zmiany efektów i załączania
    3. WIFI z komputera stacjonarnego funkcje j.w.
    4. Jeśli ESP32 to chciałbym przy sterowaniu manualnym wykorzystać możliwość zastosowania dotykowych "klawiszy"
    5. Pomiar temperatury (DS18b20 ?) (a co!!!)
    O co Was proszę i jakie mam wątpliwości ? ( moja wiedza raczej kiepska):
    Chodzi mi o rodzaj "mapy drogowej" i określenie wykonalności.
    1 . Czy zastosowanie powyższych funkcjonalności nie spowoduje blokowania transmisji do ledów (przerwania!), bo ta musi być bardzo szybka (SPI?)?
    2. Czy mogę skonfigurować dostęp do WIFI przez Bluetoth?
    3. Tak technicznie: czy klawisze dotykowe muszę "gasić" kondensatorami.

    Bardzo liczę na Waszą pomoc . Jednocześnie proszę brać moją małą wiedzę :)))
    Pozdrawiam

    Kod którego używam:

    #include "FastLED.h"
    #define LED_COUNT 300
    #define LED_PIN 11
    struct CRGB leds[LED_COUNT];
    //================================================

    uint8_t hue = 32;
    byte idex = 255;
    byte meteorLength = 47;

    void setup() {

    delay(2000);
    LEDS.addLeds<WS2812, LED_PIN, GBR>(leds, LED_COUNT);
    LEDS.setBrightness(250);
    }

    void loop(){

    meteorShower();
    }

    void meteorShower(){

    memmove8( &leds[1], &leds[0], (LED_COUNT - 1) * 3 );


    idex++;

    if ( idex > meteorLength ) {
    idex = 0;

    hue += 34;
    }

    /
    switch ( idex ) {
    case 0:
    leds[0] = CRGB(200,200,200);
    break;
    case 1:
    leds[0] = CHSV((hue - 15), 255, 180);
    break;
    case 2:
    leds[0] = CHSV((hue - 18), 255, 170);
    break;
    case 3:
    leds[0] = CHSV((hue - 20), 255, 160);
    break;
    case 4:
    leds[0] = CHSV((hue - 22), 255, 150);
    break;
    case 5:
    leds[0] = CHSV((hue - 24), 255, 140);
    break;
    case 6:
    leds[0] = CHSV((hue - 29), 160, 130);
    break;
    case 7:
    leds[0] = CHSV((hue - 30), 140, 120);
    break;
    case 8:
    leds[0] = CHSV((hue - 31), 120, 110);
    break;
    case 9:
    leds[0] = CHSV((hue - 32), 100, 100);
    break;
    case 10:
    leds[0] = CHSV((hue - 33), 90, 90);
    break;
    case 11:
    leds[0] = CHSV((hue - 34), 80, 80);
    break;
    case 12:
    leds[0] = CHSV((hue - 35), 70, 70);
    break;
    case 13:
    leds[0] = CHSV((hue - 36), 60, 60);
    break;
    case 14:
    leds[0] = CHSV((hue - 34), 50, 50);
    break;
    case 15:
    leds[0] = CHSV((hue - 35), 40, 40);
    break;
    default:
    leds[0] = CRGB::Black;
    }


    FastLED.show();

    delay(60);
    }
  • PCBway
  • PCBway
  • Poziom 2  
    Faktycznie w zły sposób umieściłem kod . Poprawie się :))))
  • Poziom 34  
    qwerty411 napisał:
    1 . Czy zastosowanie powyższych funkcjonalności nie spowoduje blokowania transmisji do ledów (przerwania!), bo ta musi być bardzo szybka (SPI?)?
    2. Czy mogę skonfigurować dostęp do WIFI przez Bluetoth?
    3. Tak technicznie: czy klawisze dotykowe muszę "gasić" kondensatorami.


    1. Na jednym rdzeniu ESP32 wykonują się zadania związane obsługą WiFi oraz stosu IP, na drugim będzie chodził Twój program, więc nie powinno być problemu, o ile nie będziesz wymuszał wykonywania własnych zadań na dwóch rdzeniach (jest to możliwe). Obsługa przerwań wykonuje się niezależnie w obu rdzeniach.

    A co do samej obsługi SPI (z DMA lub bez) jest informacja na ten temat tutaj.

    2. A jak to koncepcyjnie sobie wyobrażasz? Teoretycznie po utworzeniu połączenia BT do ESP32, możesz uruchomić procedury logowania się do WiFi. Taki mechanizm musisz jednak sam napisać.

    3. To zależy jakimi konkretnie dysponujesz, zwykle nie trzeba tego robić - mam na przykład takie, gdzie wbudowana elektronika już to załatwia.
  • Poziom 30  
    qwerty411 napisał:
    Czy zastosowanie powyższych funkcjonalności nie spowoduje blokowania transmisji do ledów (przerwania!), bo ta musi być bardzo szybka (SPI?)?

    Użyj DMA.