Customowa funkcja setRGBWValueOnDevice dla dimmera

xjotto
Posts: 15
Joined: Tue Jul 23, 2019 2:52 pm

Post

Chcę zrobić własną funkcję dla dimmera, która będzie zmieniałą trochę wejściową wartość brightness.

Zrobiłem coś takiego:

Code: Select all

class MyDimmer : public Supla::Control::DimmerBase {
  public:
    MyDimmer(int brightnessPin) : brightnessPin(brightnessPin) {}
    
    void setRGBWValueOnDevice(uint32_t red,
                              uint32_t green,
                              uint32_t blue,
                              uint32_t colorBrightness,
                              uint32_t brightness) {
                                Serial.println("BRAJTNES");
                                Serial.println(brightness);
      auto new_brightness = map(brightness, 0, 1023, 120, 1023);
      Serial.println(new_brightness);
      analogWrite(brightnessPin, new_brightness);
    }
  protected:
    int brightnessPin;
};
Nie podoba mi się, że muszę robić własną klasę. Czy mogę jakoś prościej zmienić funkcję `setRGBWValueOnDevice`, bez tworzenia nowej klasy?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Klasa DimmerBase nie jest kompletną implementacja dimmera, tylko klasą bazową, którą trzeba uzupełnić właśnie o implementację tej metody.
Jest jedną klasa, która implementuje sterowanie wyjściem przy pomocy sygnału PWM (chyba nazywała się DimmerLeds).

Nie do końca rozumiem w czym jest problem.
Najlepsze suple dla Twojego domu :mrgreen:
xjotto
Posts: 15
Joined: Tue Jul 23, 2019 2:52 pm

Post

Bardziej mi chodziło o to, że biorę klasę `DimmerLeds` i modyfikuję metodę `setRGBWValueOnDevice` poza tą klasą (coś jak kiedyś były callbacki).
Trochę mnie python naleciał, ale z tego co rozumiem nie jest to możliwe w C++.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Po to są klasy i metody wirtualne. Aby zrobić jedną metodę więcej, to naprawdę jest tylko kilka linijek kodu więcej. Rozumiem, że jesteś przyzwyczajony do innego stylu programowania, ale od strony funkcjonalnej nie będziesz miał żadnej różnicy.
Najlepsze suple dla Twojego domu :mrgreen:
xjotto
Posts: 15
Joined: Tue Jul 23, 2019 2:52 pm

Post

Dziękuję :)

Return to “Pomoc”