PCA9685 przejście z supla-device-25.6 na ver.25.11

User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

A w zasadzie jakbyś chciał aby ustawiać kolor RGB jednym przyciskiem?
Bo dla CCT jest to jasne, tam jest jeden parameter i można po nim przebiegać.
Najlepsze suple dla Twojego domu :mrgreen:
rysieks
Posts: 30
Joined: Tue Feb 25, 2025 12:22 pm

Post

klew wrote: Wed Jul 22, 2026 4:44 pm A w zasadzie jakbyś chciał aby ustawiać kolor RGB jednym przyciskiem?
Bo dla CCT jest to jasne, tam jest jeden parameter i można po nim przebiegać.
Naprzykład po kole kolorów, ale to chyba sztuka dla sztuki bo praktyczne to by nie było.

Mi chodziło o zastosowanie w CCT, i oprogramowanie tego na płytce, żeby było pod przyciskiem.

Chociaż jak teraz prowadzę próby efektów to wystarczający jest z przycisku ciepły, neutralny, zimny,
a właściwie według mojego gustu ciepły i neutralny, a jak ktoś chce się pobawić to ma apkę.
Zrobiłem to przy pomocy sceny gdzie jest możliwość ustawienia "Temperatury białego" i podłączyłem po wieloklik,
bo przycisk na ścianie jest zawsze a smartfon już nie zawsze pod ręką.

A tak przy okazji kawał dobrej roboty zrobiony.
I pytanie laika czy dużo namieszałem jak zmieniłem linie w bibliotece bo nie mogłem sobie poradzić z moim kompilatorem w platformio;
- framework-arduinoespressif32 @ 3.20016.0 (2.0.16)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5

plik supla-device-26.4\src\supla\io\PCA9685.h w linii 64

Code: Select all

  int customDigitalRead(int channelNumber, uint8_t pin) override {
    uint8_t val = 0;
    if (mutex_) mutex_->lock();
    if (pca_.isConnected()) {
      val = 0;                                         // val = pca_.read1(pin);     ZMIANA
    }
    if (mutex_) mutex_->unlock();
    return (val == 1) ? 1 : 0;
  }
plik supla-device-26.4\src\supla\io.cpp w linii 110 i 125

Code: Select all

#ifdef ARDUINO_ARCH_ESP32
  analogWriteResolution(resolutionBits);  //analogWriteResolution(static_cast<uint8_t>(pin), resolutionBits); //ZMIANA
#elif defined(ARDUINO_ARCH_ESP8266)
  analogWriteRange(1UL << resolutionBits);
#else
  (void)(resolutionBits);
#endif
}
void IoPin::setAnalogOutputFrequency(uint32_t frequencyHz) {
  if (io != nullptr) {
    io->customSetPwmFrequency(static_cast<uint16_t>(frequencyHz));
    return;
  }
#ifdef ARDUINO_ARCH_ESP32
  analogWriteFrequency(frequencyHz);   //analogWriteFrequency(static_cast<uint8_t>(pin), frequencyHz);// ZMIANA
#elif defined(ARDUINO_ARCH_ESP8266)
  analogWriteFreq(frequencyHz);
#else
  (void)(frequencyHz);
#endif
}
oraz supla-device-26.4\src\supla\crypto.cpp w linii 51 int ret = mbedtls_pkcs5_pbkdf2_hmac_ext( ....
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

rysieks wrote: Wed Jul 22, 2026 8:17 pm plik supla-device-26.4\src\supla\io\PCA9685.h w linii 64

Code: Select all

  int customDigitalRead(int channelNumber, uint8_t pin) override {
    uint8_t val = 0;
    if (mutex_) mutex_->lock();
    if (pca_.isConnected()) {
      val = 0;                                         // val = pca_.read1(pin);     ZMIANA
    }
    if (mutex_) mutex_->unlock();
    return (val == 1) ? 1 : 0;
  }
Jeśli używasz tej implementacji PCA, to jest to krytyczna zmiana :). Nigdy nie wykryje wciśnięcia przycisku, bo zawsze zwracasz 0.
Jesli nie używasz, to wyrzuć z listy include ten plik to kompilator nie będzie go kompilował i nie zgłosi problemu (o ile nie ma tam cpp też)
rysieks wrote: Wed Jul 22, 2026 8:17 pm plik supla-device-26.4\src\supla\io.cpp w linii 110 i 125

Code: Select all

#ifdef ARDUINO_ARCH_ESP32
  analogWriteResolution(resolutionBits);  //analogWriteResolution(static_cast<uint8_t>(pin), resolutionBits); //ZMIANA
#elif defined(ARDUINO_ARCH_ESP8266)
  analogWriteRange(1UL << resolutionBits);
#else
  (void)(resolutionBits);
#endif
}
void IoPin::setAnalogOutputFrequency(uint32_t frequencyHz) {
  if (io != nullptr) {
    io->customSetPwmFrequency(static_cast<uint16_t>(frequencyHz));
    return;
  }
#ifdef ARDUINO_ARCH_ESP32
  analogWriteFrequency(frequencyHz);   //analogWriteFrequency(static_cast<uint8_t>(pin), frequencyHz);// ZMIANA
#elif defined(ARDUINO_ARCH_ESP8266)
  analogWriteFreq(frequencyHz);
#else
  (void)(frequencyHz);
#endif
}

oraz supla-device-26.4\src\supla\crypto.cpp w linii 51 int ret = mbedtls_pkcs5_pbkdf2_hmac_ext( ....
To są błędy wynikające z tego, że używasz starych boardów esp32.
Poszukaj w sieci jak to zrobić, aby mieć boardy esp32 na platformio na bazie esp-idf 6.x
Najlepsze suple dla Twojego domu :mrgreen:
rysieks
Posts: 30
Joined: Tue Feb 25, 2025 12:22 pm

Post

klew wrote: Wed Jul 22, 2026 9:39 pm
To są błędy wynikające z tego, że używasz starych boardów esp32.
Poszukaj w sieci jak to zrobić, aby mieć boardy esp32 na platformio na bazie esp-idf 6.x
Dzięki za naprowadzenie, coprawda dzień czasu spędziłem żeby poznać zawiłości PlatformIO, pioarduino, i ustawić środowisko ale już z jakąś świadomością (lub nieświadomie) potrafię to wykorzystać.
Biblioteka supala-device-26.4 już nie wyrzuca błedów.

Dla walczących z tym tematem pozostawiam konfigurację platformio.ini dla pioarduino (czy dobra to niewiem, ale działająca)
Trzeba się tylko uzbroić w cierpliwość bo ściąganie może trwać i 10 minut.

Code: Select all

; =============== default konfiguracja =========================================
[platformio]
default_envs = esp32_v3_2_0

;================ ustawienia globalne ==========================================
[env]
framework = arduino
board_build.partitions = huge_app.csv ; Wyłącza OTA, przestrzeń programu z 1310720 do 3145728 bytes
build_unflags = 
    -std=gnu++11                    ; dla v2.0.16
build_flags = 
    -DCORE_DEBUG_LEVEL=0            ; wyłącza logi wewnętrzne (zmniejsza pamiec programu)
    -std=gnu++17                    ; dla v2.0.16

;================ pioarduino Arduino Core v3.2.0 ESP-IDF v5.4.1. =============== OK*
[env:esp32_v3_2_0]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.20/platform-espressif32.zip
board = esp32dev

;================ PlatformIO Arduino Core v2.0.16 ESP-IDF 4.4.7. ===============
[env:esp32_v2_9_16]
platform = espressif32 @ 6.7.0    ; PlatformIO z wersją stabilną 2.0.16
board = esp32dev

Return to “Arduino IDE”