forked from forks/qmk_firmware
99 lines
1.7 KiB
C
99 lines
1.7 KiB
C
#include "cluecard.h"
|
|
#define BL_RED OCR1B
|
|
#define BL_GREEN OCR1A
|
|
#define BL_BLUE OCR1C
|
|
|
|
void matrix_init_kb(void) {
|
|
// put your keyboard start-up code here
|
|
// runs once when the firmware starts up
|
|
|
|
matrix_init_user();
|
|
}
|
|
|
|
void matrix_scan_kb(void) {
|
|
// put your looping keyboard code here
|
|
// runs every cycle (a lot)
|
|
|
|
matrix_scan_user();
|
|
}
|
|
|
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
// put your per-action keyboard code here
|
|
// runs for every action, just before processing by the firmware
|
|
|
|
return process_record_user(keycode, record);
|
|
}
|
|
|
|
void led_set_kb(uint8_t usb_led) {
|
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
|
|
|
led_set_user(usb_led);
|
|
}
|
|
|
|
void backlight_init_ports(void)
|
|
{
|
|
// Set B5, B6, and B7 as output
|
|
DDRB |= (1<<7)|(1<<6)|(1<<5);
|
|
|
|
// Setup PWM
|
|
ICR1 = 0xFFFF;
|
|
TCCR1A = 0b10101010;
|
|
TCCR1B = 0b00011001;
|
|
|
|
BL_RED = 0xFFFF;
|
|
BL_GREEN = 0xFFFF;
|
|
BL_BLUE = 0xFFFF;
|
|
}
|
|
|
|
void backlight_set(uint8_t level)
|
|
{
|
|
// Set the RGB color
|
|
switch (level)
|
|
{
|
|
case 0:
|
|
// Off
|
|
BL_RED = 0xFFFF;
|
|
BL_GREEN = 0xFFFF;
|
|
BL_BLUE = 0xFFFF;
|
|
break;
|
|
case 1:
|
|
// Red
|
|
BL_RED = 0x0000;
|
|
BL_GREEN = 0xFFFF;
|
|
BL_BLUE = 0xFFFF;
|
|
break;
|
|
case 2:
|
|
// Green
|
|
BL_RED = 0xFFFF;
|
|
BL_GREEN = 0x0000;
|
|
BL_BLUE = 0xFFFF;
|
|
break;
|
|
case 3:
|
|
// Blue
|
|
BL_RED = 0xFFFF;
|
|
BL_GREEN = 0xFFFF;
|
|
BL_BLUE = 0x0000;
|
|
break;
|
|
case 4:
|
|
// Magenta
|
|
BL_RED = 0x4000;
|
|
BL_GREEN = 0x4000;
|
|
BL_BLUE = 0x4000;
|
|
break;
|
|
case 5:
|
|
// Purple
|
|
BL_RED = 0x0000;
|
|
BL_GREEN = 0xFFFF;
|
|
BL_BLUE = 0x0000;
|
|
break;
|
|
case 6:
|
|
// Yellow
|
|
BL_RED = 0x0000;
|
|
BL_GREEN = 0x0000;
|
|
BL_BLUE = 0xFFFF;
|
|
break;
|
|
default:
|
|
xprintf("Unknown level: %d\n", level);
|
|
}
|
|
}
|