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] Added D48 keyboard (qmk#8548)
* [Keyboard] Added D48 keyboard. * Updated README. * Cleanups. * Moved d48 to handwired/ * Added link to build process album. * Coding conventions cleanups. * Added DS1307 RTC! * Minor cleanups. * Apply suggestions from code review Co-Authored-By: Drashna Jaelre <[email protected]> * Minor refactoring. * Readme fix. * Moved leftover keymap-specific code from keyboard space into keymap. * Added encoder button pins to extra matrix row. * Updated README, updated pinout & cleaned up the glcdfont * Apply suggestions from code review Co-Authored-By: Drashna Jaelre <[email protected]> * Update config.h * Apply suggestions from code review Co-Authored-By: Ryan <[email protected]> * Added default keymap. Refactored existing keymap. * Update keyboards/handwired/d48/README.md Co-Authored-By: Ryan <[email protected]> * Apply suggestions from code review Co-Authored-By: Joel Challis <[email protected]> * Minor alignment fix. * Update keyboards/handwired/d48/glcdfont_d48.c Co-Authored-By: Ryan <[email protected]> * Changes as per PR. * Apply suggestions from code review Co-authored-by: James Young <[email protected]> Co-authored-by: Drashna Jaelre <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Joel Challis <[email protected]> Co-authored-by: James Young <[email protected]>
- Loading branch information
1 parent
eb0eee5
commit eac8c4f
Showing
6 changed files
with
147 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,46 @@ | ||
#include "dmc12.h" | ||
|
||
static uint32_t dmc12_color = 0; | ||
static uint16_t dmc12_timer = 0; | ||
static int8_t dmc12_current = 0; | ||
static uint8_t dmc12_direction = 1; | ||
|
||
void dmc12_start(uint32_t color, bool reset) { | ||
dmc12_color = color; | ||
if (reset) { | ||
dmc12_timer = 0; | ||
dmc12_current = 0; | ||
dmc12_direction = 1; | ||
} | ||
} | ||
|
||
void dmc12_process(void) { | ||
if (!dmc12_timer) { | ||
dmc12_timer = timer_read(); | ||
return; | ||
} | ||
float dist_from_center = ((float)abs(dmc12_current - RGBLED_NUM / 2)) / ((float)RGBLED_NUM); | ||
if (timer_elapsed(dmc12_timer) > dist_from_center * LED_INTERVAL) { | ||
dmc12_current += dmc12_direction; | ||
if (dmc12_current == 0 || dmc12_current == RGBLED_NUM - 1) { | ||
dmc12_direction *= -1; | ||
} | ||
dmc12_timer = timer_read(); | ||
for (int i = 0; i < RGBLED_NUM; i++) { | ||
if (i > dmc12_current - LED_RADIUS && i < dmc12_current + LED_RADIUS) { | ||
float intensity = (LED_RADIUS - abs(i - dmc12_current)) / ((float)LED_RADIUS); | ||
if (i != dmc12_current) { | ||
intensity /= 4.0; | ||
} | ||
rgblight_setrgb_at( | ||
((dmc12_color >> 16) & 0xFF) * intensity, | ||
((dmc12_color >> 8) & 0xFF) * intensity, | ||
(dmc12_color & 0xFF) * intensity, | ||
i | ||
); | ||
} else { | ||
rgblight_setrgb_at(0, 0, 0, i); | ||
} | ||
} | ||
} | ||
} |
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,9 @@ | ||
// Sexy LED animation. | ||
|
||
#include "quantum.h" | ||
|
||
#define LED_INTERVAL 160 | ||
#define LED_RADIUS 6 | ||
|
||
void dmc12_start(uint32_t color, bool reset); | ||
void dmc12_process(void); |
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,38 @@ | ||
#include "seq.h" | ||
|
||
static char buffer[32]; | ||
static uint8_t buffer_size = 0; | ||
|
||
void seq_start(void) { | ||
buffer_size = 0; | ||
SEND_STRING(":"); | ||
} | ||
|
||
bool seq_feed(uint16_t keycode) { | ||
if (keycode == KC_ENTER) { | ||
for (int i = 0; i < buffer_size + 1; i++) { | ||
tap_code(KC_BSPACE); | ||
} | ||
for (int i = 0; i < seq_config_size; i++) { | ||
seq_t item = seq_config[i]; | ||
if (strncmp(item.sequence, buffer, buffer_size) == 0) { | ||
send_unicode_string(item.result); | ||
} | ||
} | ||
buffer_size = 0; | ||
return false; | ||
} else if (keycode == KC_BSPACE) { | ||
if (buffer_size) { | ||
buffer_size--; | ||
tap_code(keycode); | ||
} | ||
return true; | ||
} else { | ||
if (keycode >= KC_A && keycode <= KC_Z) { | ||
buffer[buffer_size++] = keycode - KC_A + 'a'; | ||
tap_code(keycode); | ||
} | ||
return true; | ||
} | ||
} | ||
|
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,14 @@ | ||
#include "quantum.h" | ||
|
||
#include <string.h> | ||
|
||
typedef struct seq_t { | ||
const char *sequence; | ||
const char *result; | ||
} seq_t; | ||
|
||
extern seq_t seq_config[]; | ||
extern uint16_t seq_config_size; | ||
|
||
void seq_start(void); | ||
bool seq_feed(uint16_t keycode); |
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,34 @@ | ||
#include <smoothled.h> | ||
|
||
static uint32_t sourceColor = 0x000000; | ||
static uint32_t currentColor = 0x000000; | ||
static uint32_t targetColor = 0x000000; | ||
static int32_t smoothledTimer = -1; | ||
|
||
void smoothled_set(uint32_t color) { | ||
smoothledTimer = timer_read32(); | ||
sourceColor = currentColor; | ||
targetColor = color; | ||
} | ||
|
||
void smoothled_process(void) { | ||
if (smoothledTimer < 0) { | ||
return; | ||
} | ||
int32_t kb = timer_elapsed32(smoothledTimer); | ||
int32_t ka = SMOOTH_DURATION - kb; | ||
if (kb > SMOOTH_DURATION) { | ||
kb = SMOOTH_DURATION; | ||
ka = 0; | ||
smoothledTimer = -1; | ||
} | ||
currentColor = 0; | ||
for (int i = 2; i >= 0; i--) { | ||
uint32_t shift = i * 8; | ||
currentColor |= (ka * ((uint32_t)(sourceColor >> shift) & 0xFF) + kb * ((uint32_t)(targetColor >> shift) & 0xFF)) / SMOOTH_DURATION; | ||
/*currentColor |= ((targetColor >> shift) & 0xFF);*/ | ||
currentColor <<= 8; | ||
} | ||
currentColor >>= 8; | ||
rgblight_setrgb((currentColor >> 16) & 0xFF, (currentColor >> 8) & 0xFF, currentColor & 0xFF); | ||
} |
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,6 @@ | ||
#include "quantum.h" | ||
|
||
#define SMOOTH_DURATION 160 | ||
|
||
void smoothled_set(uint32_t color); | ||
void smoothled_process(void); |