diff options
author | Legonut <legonut3@gmail.com> | 2018-12-04 21:15:52 -0500 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2018-12-04 18:15:52 -0800 |
commit | 8a330b33ff41ffc1ec3f8fa39722e93115ea3f0f (patch) | |
tree | 3ef91766a6063422fb7cd884c377959fa6b2ab39 /keyboards/sol/common/knob_v2.h | |
parent | 6d0dc910d92bc381d3cce9ea712aa47ae40ddf15 (diff) |
Keyboard: Add new keyboard "Sol" from RGBKB (#4497)
* Add final RGBKB Sol firmware
* Apply suggestions from code review
Apply most of the changes noroadsleft has suggested
Co-Authored-By: Legonut <legonut3@gmail.com>
* Cleanup readme
* Cleanup keymaps per @noroadslefts suggestions
* Remove eeproms, use set_single_persistent_default_layer
* Suggestions from @noroadsleft and @drashna
some small cleanup
* Change RGB_SMOD to RGB_RMOD
* fix RGB_SMOD
* Apply suggestions from code review
Remove redundant lines
Co-Authored-By: Legonut <legonut3@gmail.com>
Diffstat (limited to 'keyboards/sol/common/knob_v2.h')
-rw-r--r-- | keyboards/sol/common/knob_v2.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/keyboards/sol/common/knob_v2.h b/keyboards/sol/common/knob_v2.h new file mode 100644 index 0000000000..45196eb1a6 --- /dev/null +++ b/keyboards/sol/common/knob_v2.h @@ -0,0 +1,28 @@ +// Rotary knob implementation - Version 2. +// Uses 2 digital pins - D2 (via interrupt) & D6. +// #include "rev1.h" +#include <avr/io.h> +#include <avr/interrupt.h> +#include <stdbool.h> + +#ifndef ENCODER_PIN_1 + #define ENCODER_PIN_1 PD2 +#endif +#ifndef ENCODER_PIN_2 + #define ENCODER_PIN_2 PD6 +#endif +#ifndef ENCODER_INT + #define ENCODER_INT INT2_vect +#endif + +typedef struct knob_report_t { + int8_t dir; // Contains number of rotations that happened + int8_t phase; // Contains 0 if last rotation happened on 90 degrees, 1 if on 270 +} knob_report_t; + +void knob_init(void); +knob_report_t knob_report_read(void); +void knob_report_reset(void); + +bool knob_prev_a; +int8_t knob_dir; |