| 12345678910111213141516171819202122232425262728 |
- // 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;
|