forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Keyboard: Add new keyboard "Sol" from RGBKB (qmk#4497)
* Add final RGBKB Sol firmware * Apply suggestions from code review Apply most of the changes noroadsleft has suggested Co-Authored-By: Legonut <[email protected]> * 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 <[email protected]>
- Loading branch information
Showing
35 changed files
with
3,838 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,244 @@ | ||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. | ||
// See gfxfont.h for newer custom bitmap font info. | ||
|
||
#ifndef FONT5X7_H | ||
#define FONT5X7_H | ||
|
||
#ifdef __AVR__ | ||
#include <avr/io.h> | ||
#include <avr/pgmspace.h> | ||
#elif defined(ESP8266) | ||
#include <pgmspace.h> | ||
#else | ||
#define PROGMEM | ||
#endif | ||
|
||
// Standard ASCII 5x7 font | ||
|
||
static const unsigned char font[] PROGMEM = { | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, | ||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, | ||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, | ||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, | ||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, | ||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, | ||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, | ||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, | ||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00, | ||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, | ||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, | ||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00, | ||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, | ||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, | ||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, | ||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, | ||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, | ||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, | ||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, | ||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, | ||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, | ||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00, | ||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, | ||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, | ||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, | ||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, | ||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, | ||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, | ||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, | ||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, | ||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, | ||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00, | ||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, | ||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, | ||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00, | ||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00, | ||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00, | ||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, | ||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, | ||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, | ||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, | ||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00, | ||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00, | ||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, | ||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00, | ||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, | ||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, | ||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00, | ||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, | ||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, | ||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00, | ||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, | ||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00, | ||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00, | ||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, | ||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00, | ||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, | ||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00, | ||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00, | ||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00, | ||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, | ||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, | ||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, | ||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, | ||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, | ||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, | ||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, | ||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, | ||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, | ||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, | ||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, | ||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, | ||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, | ||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, | ||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, | ||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, | ||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, | ||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00, | ||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, | ||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, | ||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, | ||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, | ||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00, | ||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00, | ||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, | ||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, | ||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00, | ||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, | ||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00, | ||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00, | ||
0x00, 0x03, 0x07, 0x08, 0x00, 0x00, | ||
0x20, 0x54, 0x54, 0x78, 0x40, 0x00, | ||
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, | ||
0x38, 0x44, 0x44, 0x44, 0x28, 0x00, | ||
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, | ||
0x38, 0x54, 0x54, 0x54, 0x18, 0x00, | ||
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, | ||
0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, | ||
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, | ||
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, | ||
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, | ||
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, | ||
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, | ||
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, | ||
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, | ||
0x38, 0x44, 0x44, 0x44, 0x38, 0x00, | ||
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, | ||
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, | ||
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, | ||
0x48, 0x54, 0x54, 0x54, 0x24, 0x00, | ||
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, | ||
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, | ||
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, | ||
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, | ||
0x44, 0x28, 0x10, 0x28, 0x44, 0x00, | ||
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, | ||
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, | ||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00, | ||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00, | ||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00, | ||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00, | ||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, | ||
0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, | ||
0xFE, 0xF8, 0xF0, 0xC0, 0x20, 0xF8, | ||
0xFE, 0xFF, 0xFE, 0x79, 0x27, 0x1F, | ||
0x7F, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, | ||
0xC0, 0x20, 0xF8, 0xFE, 0xFF, 0xFF, | ||
0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFE, | ||
0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, | ||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | ||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0xFF, 0x7F, 0x7F, 0x7F, | ||
0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xE0, | ||
0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, | ||
0xF8, 0x78, 0x78, 0x7C, 0x3C, 0x3C, | ||
0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, | ||
0xBF, 0xBF, 0xDF, 0xDF, 0xEF, 0xEF, | ||
0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF, | ||
0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0, | ||
0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, | ||
0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00, | ||
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, | ||
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, | ||
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, | ||
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, | ||
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, | ||
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, | ||
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, | ||
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0xC1, 0xF3, | ||
0xCF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFC, | ||
0xFB, 0xE7, 0x81, 0x00, 0x00, 0x00, | ||
0x00, 0x80, 0xE3, 0xCF, 0x3F, 0xFF, | ||
0xFF, 0xFF, 0xFC, 0xFB, 0xE7, 0x81, | ||
0x00, 0x00, 0x00, 0x00, 0x81, 0xE7, | ||
0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, | ||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | ||
0xFF, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, | ||
0x7E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, | ||
0xFF, 0xFF, 0xF7, 0xF7, 0xF7, 0xFB, | ||
0xFB, 0x7D, 0x7D, 0x7D, 0xBE, 0xBE, | ||
0xBE, 0xDF, 0xDF, 0xE0, 0xE0, 0x00, | ||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | ||
0x00, 0xFC, 0xFC, 0x7C, 0x7E, 0x7E, | ||
0x3E, 0x3E, 0x1F, 0x1F, 0x1F, 0x0F, | ||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x81, | ||
0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | ||
0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x81, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, | ||
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, | ||
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, | ||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, | ||
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, | ||
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, | ||
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, | ||
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x60, 0x70, 0x7C, 0x7F, 0x7F, 0x7F, | ||
0x7F, 0x1F, 0x06, 0x01, 0x03, 0x0F, | ||
0x3F, 0x7F, 0x7F, 0x7E, 0x7C, 0x7C, | ||
0x7E, 0x7F, 0x7F, 0x7F, 0x1F, 0x06, | ||
0x01, 0x07, 0x0F, 0x3F, 0x7F, 0x7F, | ||
0x7E, 0x7C, 0x7C, 0x7E, 0x7F, 0x7F, | ||
0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, | ||
0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, | ||
0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, | ||
0x7F, 0x7F, 0x7D, 0x7D, 0x3D, 0x3E, | ||
0x1E, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, | ||
0x07, 0x07, 0x07, 0x03, 0x03, 0x00, | ||
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, | ||
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, | ||
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, | ||
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, | ||
0x00, 0x40, 0x70, 0x78, 0x7E, 0x7F, | ||
0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x01, | ||
0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x7F, | ||
0x7E, 0x78, 0x70, 0x40, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
}; | ||
#endif // FONT5X7_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
#include "knob_v2.h" | ||
|
||
bool knob_prev_a = false; | ||
static knob_report_t knob_report = {.dir = 0, .phase = 0}; | ||
|
||
void knob_init(void) { | ||
// I use pins D1 (ISR1) & D4 for a knob. | ||
|
||
// Set pin mode for D4 as input. | ||
DDRD &= ~(0UL << ENCODER_PIN_2); | ||
|
||
// Enable internal pull-up for D4. | ||
// This is done by "writing" 1 to a pin that has its mode set to input. | ||
PORTD |= (1 << ENCODER_PIN_2); | ||
|
||
// Enable interrupt for D1 | ||
// For more info on the below flags see this awesome section 11.1 (pages 89-90) here: | ||
// https://cdn-shop.adafruit.com/datasheets/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf | ||
// Set pin mode & pull-up. | ||
DDRD &= ~(0UL << ENCODER_PIN_1); | ||
PORTD |= (1UL << ENCODER_PIN_1); | ||
|
||
// INT: 33221100 | ||
EICRA |= 0b00010000; // 0b01 - any edge | ||
// INT: 6 3210 | ||
EIMSK |= 0b00000100; | ||
} | ||
|
||
ISR(ENCODER_INT) { | ||
bool a = PIND & (1 << ENCODER_PIN_1); | ||
|
||
if (knob_prev_a != a) { | ||
// "A" channel has REALLY changed. | ||
knob_report.phase = a; | ||
knob_prev_a = a; | ||
bool b = PIND & (1 << ENCODER_PIN_2); | ||
if (a == b) { | ||
// Halfway through CCW rotation (A == B) | ||
// | ||
// +---YOU ARE HERE (A=1, B=1) | ||
// | +---OR HERE (A=0, B=0) | ||
// | | | ||
// v v | ||
// A: _____/^^^^^\__ | ||
// B: __/^^^^^\_____ | ||
knob_report.dir++; | ||
} else { | ||
// Halfway through CW rotation (A != B) | ||
// | ||
// +---YOU ARE HERE (A=1, B=0) | ||
// | +---OR HERE (A=0, B=1) | ||
// | | | ||
// v v | ||
// A: _____/^^^^^\_____ | ||
// B: ________/^^^^^\__ | ||
knob_report.dir--; | ||
} | ||
} | ||
} | ||
|
||
knob_report_t knob_report_read(void) { | ||
// Return knob report. | ||
return knob_report; | ||
} | ||
|
||
void knob_report_reset(void) { | ||
// Call this ASAP once you've processed the previous knob report. | ||
// TODO: This should probably be called within `knob_report_read`. | ||
knob_report.dir = 0; | ||
knob_report.phase = 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; |
Oops, something went wrong.