36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
## GNAP! keyboard firmware
|
|
![GNAP! 1.0 Assembled](GNAP.jpg)
|
|
======================
|
|
GNAP! dual matrix, dual controller. Per key LED control, reactive lighting.
|
|
![GNAP! 1.0 PCB Front](pcb-front.png)
|
|
![GNAP! 1.0 PCB Schematic](schematic.png)
|
|
|
|
Dual Pro Micro's. One running TMK, the other running an Arduino sketch driving the LEDs. Pro Micro's are connected to each other via hardware serial UART.
|
|
|
|
Pinout
|
|
|
|
Rows D1, D0, D4, C6
|
|
Cols D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4
|
|
|
|
keymap_gnap.c contains functions to send bytes to the LED controller. The Arduino code interprets these to change modes or brightness.
|
|
|
|
//GNAP keymap functions
|
|
void gnaplight_step(void) {
|
|
serial_send(101);
|
|
}
|
|
|
|
void gnaplight_toggle(void) {
|
|
serial_send(100);
|
|
}
|
|
|
|
\tmk_core\common\keyboard.c was modified to send the row/column of the key being pressed encoded as as single byte over the serial link to the LED controller.
|
|
|
|
#ifdef GNAP_ENABLE
|
|
//send single byte with value of row column
|
|
serial_send((r*16)+c);
|
|
#endif
|
|
|
|
The example Arduino sketch [LED_FastGPIO.ino](LED_FastGPIO.ino) uses the fastGPIO and TimerOne libraries. These can be installed with the Library manager.
|
|
|
|
[FastGPIO](https://github.com/pololu/fastgpio-arduino)
|
|
[TimerOne](https://www.pjrc.com/teensy/td_libs_TimerOne.html) |