Comments (14)
Первый класс хранит номера пинов в шаблоне, второй - в переменных класса
from encbutton.
От этого большой выигрыш памяти скорости?
Могу попробовать написать обёртку для шаблонного варианта. Но не уверен что это можно сделать в с++11.
Хотя некоторые вещи всё таки компилит с варнингами.
from encbutton.
Выигрыш во всём - в шаблоне. Вторая версия класса сделана для удобного задания массива кнопок/энкодеров
from encbutton.
Ок тогда попробую завернуть EncButton.
Если выйдет, то можно попробовать и на другие распространить. Если таковые имеются.
from encbutton.
Похоже что виртуальными кнопками придётся пожертвовать или вынести отдельный класс.
from encbutton.
да зачем, и так всё отлично организовано. Сейчас отдельный класс нужен только для массива физических кнопок
from encbutton.
да зачем, и так всё отлично организовано. Сейчас отдельный класс нужен только для массива физических кнопок
Есть возможность всё в один свести.
from encbutton.
https://github.com/XRay3D/EncButton/tree/master
Борщенул с CRTP и выиграл от 50 до 102 байт по флешу, ОЗУ прежнее.
Теперь всё в одном классе.
Хотел ещё и недопустимые для выбранного типа проверки состояний вынести в ButtonImpl
и EncoderImpl
from encbutton.
Божечки! При всем желании не смогу разобраться, как оно работает)
from encbutton.
Божечки! При всем желании не смогу разобраться, как оно работает)
https://en.cppreference.com/w/cpp/language/partial_specialization
https://en.cppreference.com/w/cpp/language/crtp
https://en.cppreference.com/w/cpp/language/qualified_lookup
https://en.cppreference.com/w/cpp/language/adl
замена макросов дала львиную долю памяти.
// флаг макро
void setFlag(Internals::Flags x) { flags |= +(1 << x); }
void clrFlag(Internals::Flags x) { flags &= ~(1 << x); }
NODISCARD bool getFlag(Internals::Flags x) { return flags & (1 << x); }
template <Internals::Flags val>
NODISCARD bool checkFlag() { return getFlag(val) ? clrFlag(val), true : false; }
from encbutton.
https://en.cppreference.com/w/cpp/language/crtp
Это как "класс из кубиков лего собирать". Только у меня попой к переду работает.
from encbutton.
Брать будете? )) Дизайнил из-за обратной совместимости. Почти. Могу всё комментарииями обмазать.
from encbutton.
https://youtu.be/-QOaUNFGj6E?t=2968
from encbutton.
Божечки! При всем желании не смогу разобраться, как оно работает)
Годнота по теме подъехала.
https://www.youtube.com/watch?v=UrL5gdW2JOM
from encbutton.
Related Issues (20)
- Проблема с энкодерами HOT 2
- Не работают прерывания, как следует на stm32 HOT 1
- Добавить поддержку энкодера HOT 18
- Не работает на Arduino Nano 33 BLE HOT 36
- Опрос кнопок в момент перезагрузки устройства HOT 5
- Проект на wokwi с кнопками EncButton HOT 61
- Todo? HOT 8
- Migration from V2 to V3: tick() returns unreliable status HOT 5
- the 'eb.clear()' does not really set the encoder counter to 0 HOT 1
- Unusual step counting by rotary encoder HOT 5
- Многократное срабатывание виртуальной кнопки при однократном нажатии кнопки HOT 3
- fast() всегда false
- Ke-040 и 74hc165 HOT 9
- Совместимость с ESP8266 (Wemos D1 Mini) HOT 4
- Передать аргументы в событие. HOT 9
- 3.5.1 Won't compile HOT 1
- Описка в README HOT 1
- Внутрення подтяжка пинов INPUT_PULLUP HOT 13
- Невозможно использовать библиотеку после обновления до 3.5.9 HOT 2
- Иногда нет обработки вращения энкодера HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from encbutton.