Starting to implement the Joystick library here
Still need to add debouncing and the logic to detect key presses then I'll finish the thing
This commit is contained in:
+1
-1
@@ -12,10 +12,10 @@
|
|||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
board = sparkfun_promicro16
|
board = sparkfun_promicro16
|
||||||
framework = arduino
|
framework = arduino
|
||||||
# upload_port = /dev/ttyACM0
|
|
||||||
build_flags = -Wl,-Map=${BUILD_DIR}/${PROGNAME}.map
|
build_flags = -Wl,-Map=${BUILD_DIR}/${PROGNAME}.map
|
||||||
extra_scripts = post:check.py
|
extra_scripts = post:check.py
|
||||||
max_ram = 2560
|
max_ram = 2560
|
||||||
max_ram_perc = 80
|
max_ram_perc = 80
|
||||||
max_flash = 28672
|
max_flash = 28672
|
||||||
max_flash_perc = 90
|
max_flash_perc = 90
|
||||||
|
lib_deps = mheironimus/Joystick@^2.1.1
|
||||||
|
|||||||
+58
-7
@@ -4,9 +4,41 @@
|
|||||||
* them from the getgo
|
* them from the getgo
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// The Matrix
|
||||||
|
/*
|
||||||
|
* 1 1 1 R3 F9 F10 F11 F12
|
||||||
|
* 1 1 1 R2 F5 F6 F7 F8
|
||||||
|
* 1 1 1 M1 F1 F2 F3 F4
|
||||||
|
* 1 1 1 m1 R1 r1 r2 r3
|
||||||
|
* 1 1 1 M2 T3 T4 T5 T6
|
||||||
|
* 1 1 1 m2 t3 t4 t5 t6
|
||||||
|
*
|
||||||
|
* Toggle Switches (On - Off - On):
|
||||||
|
* T -> up, t -> down.
|
||||||
|
* From left to right
|
||||||
|
*
|
||||||
|
* Toggle Switches (Hold On - Off - Hold On)
|
||||||
|
* M -> up, m -> down
|
||||||
|
* From left to right
|
||||||
|
*
|
||||||
|
* Puny Rotary Encoders Click:
|
||||||
|
* R1 - 3
|
||||||
|
* From left to right
|
||||||
|
*
|
||||||
|
* Chonky Rotary Encoder:
|
||||||
|
* R0 - 3
|
||||||
|
* Positions on the encoder
|
||||||
|
*
|
||||||
|
* F keys:
|
||||||
|
* F1 - F12
|
||||||
|
* Count them
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "595n.h"
|
#include "595n.h"
|
||||||
#include "165.h"
|
#include "165.h"
|
||||||
|
#include <Joystick.h>
|
||||||
|
|
||||||
// NOTES - 595N
|
// NOTES - 595N
|
||||||
// On the board, the first output pin on the SR595 is Qb
|
// On the board, the first output pin on the SR595 is Qb
|
||||||
@@ -26,7 +58,7 @@
|
|||||||
#define IN_P4 0b00000100
|
#define IN_P4 0b00000100
|
||||||
#define IN_P5 0b00000010
|
#define IN_P5 0b00000010
|
||||||
uint8_t rows[] = {IN_P0, IN_P1, IN_P2, IN_P3, IN_P4, IN_P5};
|
uint8_t rows[] = {IN_P0, IN_P1, IN_P2, IN_P3, IN_P4, IN_P5};
|
||||||
size_t num_rows = sizeof(rows) / sizeof(rows[0]);
|
const size_t NUM_ROWS = 6;
|
||||||
|
|
||||||
// NOTES - 165
|
// NOTES - 165
|
||||||
#define OUT_PARALLEL_LOAD_IN 10 // PL - pin1 (Async Parallel Load In)
|
#define OUT_PARALLEL_LOAD_IN 10 // PL - pin1 (Async Parallel Load In)
|
||||||
@@ -44,31 +76,50 @@ size_t num_rows = sizeof(rows) / sizeof(rows[0]);
|
|||||||
#define OUT_P3 0b11110111
|
#define OUT_P3 0b11110111
|
||||||
#define OUT_P4 0b11101111
|
#define OUT_P4 0b11101111
|
||||||
uint8_t cols[] = {OUT_P0, OUT_P1, OUT_P2, OUT_P3, OUT_P4};
|
uint8_t cols[] = {OUT_P0, OUT_P1, OUT_P2, OUT_P3, OUT_P4};
|
||||||
size_t num_cols = sizeof(cols) / sizeof(cols[0]);
|
const size_t NUM_COLS = 5;
|
||||||
|
|
||||||
SR595N input = NewSR595N(IN_SERIAL_PIN, IN_LATCH_PIN, IN_CLOCK_PIN);
|
SR595N input = NewSR595N(IN_SERIAL_PIN, IN_LATCH_PIN, IN_CLOCK_PIN);
|
||||||
SR165 output = NewSR165(OUT_PARALLEL_LOAD_IN, OUT_CLOCK_ENABLE,
|
SR165 output = NewSR165(OUT_PARALLEL_LOAD_IN, OUT_CLOCK_ENABLE,
|
||||||
OUT_CLOCK_IN, OUT_COMPLEMENTARY_OUT);
|
OUT_CLOCK_IN, OUT_COMPLEMENTARY_OUT);
|
||||||
|
|
||||||
|
#define JOYSTICK_BTN_COUNT 32
|
||||||
|
#define JOYSTICK_HAT_COUNT 0
|
||||||
|
Joystick_ Joystick(
|
||||||
|
JOYSTICK_DEFAULT_REPORT_ID,
|
||||||
|
JOYSTICK_TYPE_JOYSTICK,
|
||||||
|
JOYSTICK_BTN_COUNT, // Button count
|
||||||
|
JOYSTICK_HAT_COUNT, // Hat switch count
|
||||||
|
// no axes since this is just buttons
|
||||||
|
false, false, false, false, false,
|
||||||
|
false, false, false, false, false,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
Joystick.begin();
|
||||||
|
for(int k = 0; k < JOYSTICK_BTN_COUNT; k++) {
|
||||||
|
Joystick.setButton(k, 0);
|
||||||
|
}
|
||||||
|
|
||||||
SR595N_write(&input, 0b00000100);
|
SR595N_write(&input, 0b00000100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop(void) {
|
void loop(void) {
|
||||||
uint8_t scanResults[num_rows];
|
uint8_t scanResults[NUM_ROWS];
|
||||||
|
|
||||||
for (size_t row = 0; row < num_rows ; row++) {
|
for (size_t row = 0; row < NUM_ROWS ; row++) {
|
||||||
SR595N_write(&input, rows[row]);
|
SR595N_write(&input, rows[row]);
|
||||||
delayMicroseconds(5);
|
delayMicroseconds(5);
|
||||||
|
|
||||||
scanResults[row] = SR165_read(&output);
|
scanResults[row] = SR165_read(&output);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(size_t row = 0; row < num_rows; row++) {
|
Serial.print("\033[2J\033[H");
|
||||||
|
for(size_t row = 0; row < NUM_ROWS; row++) {
|
||||||
Serial.println(scanResults[row], BIN);
|
Serial.println(scanResults[row], BIN);
|
||||||
}
|
}
|
||||||
// Serial.println(SR165_read(&output), BIN);
|
|
||||||
|
|
||||||
delay(5);
|
delay(35);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user