diff options
Diffstat (limited to 'keyboards/work_louder/micro/micro.c')
-rw-r--r-- | keyboards/work_louder/micro/micro.c | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/keyboards/work_louder/micro/micro.c b/keyboards/work_louder/micro/micro.c new file mode 100644 index 0000000000..aae8048c59 --- /dev/null +++ b/keyboards/work_louder/micro/micro.c @@ -0,0 +1,170 @@ +// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#if defined(RGB_MATRIX_ENABLE) +// clang-format off +led_config_t g_led_config = { { + { NO_LED, 10, 11, NO_LED }, + { 9 , 8, 7, 6 }, + { 2, 3, 4, 5 }, + { NO_LED, 1, 0, NO_LED } + }, { + { 122, 64 }, { 103, 64 }, + { 84, 45 }, { 103, 45 }, { 133, 45 }, { 152, 45 }, + { 152, 26 }, { 122, 26 }, { 103, 26 }, { 84, 26 }, + { 103, 7 }, { 122, 7 } + }, + { + 4, 4, + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4 + } +}; +// clang-format on +#endif + +#if defined(ENCODER_ENABLE) && !defined(ENCODERS) && !defined(ENCODER_MAP_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } else if (index == 1) { + if (clockwise) { + tap_code_delay(KC_WH_U, 10); + } else { + tap_code_delay(KC_WH_D, 10); + } + } + return true; +} +#endif + +void work_louder_micro_led_1_on(void) { + writePin(WORK_LOUDER_LED_PIN_1, true); +} +void work_louder_micro_led_2_on(void) { + writePin(WORK_LOUDER_LED_PIN_2, true); +} +void work_louder_micro_led_3_on(void) { + writePin(WORK_LOUDER_LED_PIN_3, true); +} + +void work_louder_micro_led_1_off(void) { + writePin(WORK_LOUDER_LED_PIN_1, false); +} +void work_louder_micro_led_2_off(void) { + writePin(WORK_LOUDER_LED_PIN_2, false); +} +void work_louder_micro_led_3_off(void) { + writePin(WORK_LOUDER_LED_PIN_3, false); +} + +void work_louder_micro_led_all_on(void) { + work_louder_micro_led_1_on(); + work_louder_micro_led_2_on(); + work_louder_micro_led_3_on(); +} + +void work_louder_micro_led_all_off(void) { + work_louder_micro_led_1_off(); + work_louder_micro_led_2_off(); + work_louder_micro_led_3_off(); +} + +void work_louder_micro_led_1_set(uint8_t n) { +#if WORK_LOUDER_LED_PIN_1 == B7 + OCR1C = n; +#else + n ? work_louder_micro_led_1_on() : work_louder_micro_led_1_off(); +#endif +} +void work_louder_micro_led_2_set(uint8_t n) { +#if WORK_LOUDER_LED_PIN_2 == B6 + OCR1B = n; +#else + n ? work_louder_micro_led_2_on() : work_louder_micro_led_2_off(); +#endif +} +void work_louder_micro_led_3_set(uint8_t n) { +#if WORK_LOUDER_LED_PIN_3 == B5 + OCR1A = n; +#else + n ? work_louder_micro_led_3_on() : work_louder_micro_led_3_off(); +#endif +} + +void work_louder_micro_led_all_set(uint8_t n) { + work_louder_micro_led_1_set(n); + work_louder_micro_led_2_set(n); + work_louder_micro_led_3_set(n); +} + +#ifdef DEFER_EXEC_ENABLE +uint32_t startup_animation(uint32_t trigger_time, void *cb_arg) { + static uint8_t index = 0; + + switch (index) { + case 0: + work_louder_micro_led_1_on(); + break; + case 1: + work_louder_micro_led_2_on(); + break; + case 2: + work_louder_micro_led_3_on(); + break; + case 3: + work_louder_micro_led_1_off(); + break; + case 4: + work_louder_micro_led_2_off(); + break; + case 5: + work_louder_micro_led_3_off(); + break; + default: + return 0; + } + index++; + return 100; +} +#endif + +void matrix_init_kb(void) { + + setPinOutput(WORK_LOUDER_LED_PIN_1); // left led + writePin(WORK_LOUDER_LED_PIN_1, false); + setPinOutput(WORK_LOUDER_LED_PIN_2); // middle led + writePin(WORK_LOUDER_LED_PIN_2, false); + setPinOutput(WORK_LOUDER_LED_PIN_3); // right led + writePin(WORK_LOUDER_LED_PIN_3, false); + +#ifdef DEFER_EXEC_ENABLE + defer_exec(500, startup_animation, NULL); +#else + wait_ms(500); + work_louder_micro_led_1_on(); + wait_ms(100); + work_louder_micro_led_2_on(); + wait_ms(100); + work_louder_micro_led_3_on(); + wait_ms(100); + work_louder_micro_led_1_off(); + wait_ms(100); + work_louder_micro_led_2_off(); + wait_ms(100); + work_louder_micro_led_3_off(); + wait_ms(200); +#endif + matrix_init_user(); + +} |