Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hardware abstraction should be by composition rather than inheritance #70

Open
jamesmyatt opened this issue Aug 26, 2020 · 6 comments
Open

Comments

@jamesmyatt
Copy link
Contributor

jamesmyatt commented Aug 26, 2020

Especially since there is a Button class now, the hardware abstraction should be done by composition rather than inheritance. For example, it's not possible to define a Button instance that uses something other than digitalRead to read the state. What do you think?

https://en.wikipedia.org/wiki/Composition_over_inheritance

@thomasfredericks
Copy link
Owner

Hum, interesting. But how would this be implemented?

@KenwoodFox
Copy link

I also want to find a way to do this, id like to be able to define a button instance with an input that is not digitalRead, maybe add in an override?

@thomasfredericks
Copy link
Owner

@KenwoodFox this can already be implemented. See the source for class Bounce in Bounce2.h.

You can set your custom override for digitalRead :
virtual bool readCurrentState() { return digitalRead(pin); }

@KenwoodFox
Copy link

@KenwoodFox this can already be implemented. See the source for class Bounce in Bounce2.h.

You can set your custom override for digitalRead : virtual bool readCurrentState() { return digitalRead(pin); }

This is pretty awesome! thanks so much.

@KenwoodFox
Copy link

@KenwoodFox this can already be implemented. See the source for class Bounce in Bounce2.h.

You can set your custom override for digitalRead : virtual bool readCurrentState() { return digitalRead(pin); }

Sorry to ask, but where would you implement this? Should this be done for every button instance you create or do i need to make my own button class using inheriting from bounce?

@Thynix
Copy link

Thynix commented Feb 28, 2022

It isn't a complete replacement because it doesn't have complex debouncing techniques, but the Debouncer library allows passing in the value to use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants