99teki Napisano 26 września Udostępnij Napisano 26 września - jest program obsługujący klawisz ale nie pasuje mi Klasa w programie. - można to jakoś "przerzucić" do *.cpp, *.h // 2024.09.26, bubu321 /** * FunctionalButton.ino - Example for the OneButtonLibrary library. * This is a sample sketch to show how to use OneClick library functionally on ESP32,ESP8266... * */ #include <Arduino.h> #include <OneButton.h> // v 2.6.1 https://github.com/mathertel/OneButton #define ROTARY_PIN_A 01 #define ROTARY_PIN_B 02 #define ROTARY_BUTTON 0 // boot0 #define BATTERY_PIN 4 #define CONTRASTPIN 15 // jasnosc GPIO15 #define POWER_ON 46 int klaw = 0; int value; // ----------------- class Button{ private: OneButton button; // int value; public: explicit Button(uint8_t pin):button(pin) { button.attachClick([](void *scope) { ((Button *) scope)->Clicked();}, this); button.attachDoubleClick([](void *scope) { ((Button *) scope)->DoubleClicked();}, this); button.attachLongPressStart([](void *scope) { ((Button *) scope)->LongPressed();}, this); } void Clicked(){ //Serial.println("Click then value++"); //value++; klaw = 1; } void DoubleClicked(){ //Serial.println("DoubleClick"); klaw = 2; } void LongPressed(){ //Serial.print("LongPress and the value is "); //Serial.println(value); klaw = 6; } void handle(){ button.tick(); } }; // --- end-class --- Button button(ROTARY_BUTTON); // ------------------------------------------- setup --------------------------- void setup() { Serial.begin(115200); Serial.println(" start-button"); } // -------------------------------------------- loop -------------------------- void loop() { button.handle(); if (klaw == 1) { Serial.println("click "); // Serial.println(value); } if (klaw == 2) { Serial.println("DoubleClick "); // Serial.println(value); } if (klaw == 6) { Serial.println("LongPress "); // Serial.println(value); } klaw = 0; } // -- end --- Link do komentarza Share on other sites More sharing options...
spook 27 września Udostępnij 27 września Trzeba ją rozbić na nagłówek i implementację. Coś w ten deseń: class Button{ private: OneButton button; // int value; public: explicit Button(uint8_t pin) : button(pin); void Clicked(); void DoubleClicked(); void LongPressed(); void handle(); }; explicit Button::Button(uint8_t pin):button(pin) { button.attachClick([](void *scope) { ((Button *) scope)->Clicked(); }, this); button.attachDoubleClick([](void *scope) { ((Button *) scope)->DoubleClicked(); }, this); button.attachLongPressStart([](void *scope) { ((Button *) scope)->LongPressed(); }, this); } void Button::Clicked() { //Serial.println("Click then value++"); //value++; klaw = 1; } // I tak dalej }; Pozdrawiam -- Spook. 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »