allow debug control via serial

main
radex 2024-02-17 18:18:59 +01:00
parent 91543a4a3d
commit e342d6f684
Signed by: radex
SSH Key Fingerprint: SHA256:hvqRXAGG1h89yqnS+cyFTLKQbzjWD4uXIqw7Y+0ws30
5 changed files with 95 additions and 6 deletions

View File

@ -51,6 +51,19 @@ SwitchEvent handleSwitch() {
return isPressed ? SWITCH_PRESSED : SWITCH_RELEASED;
}
bool shouldReleaseDebugSwitch = false;
SwitchEvent handleDebugSwitch(char key) {
if (shouldReleaseDebugSwitch) {
shouldReleaseDebugSwitch = false;
return SWITCH_RELEASED;
} else if (key == ' ') {
shouldReleaseDebugSwitch = true;
return SWITCH_PRESSED;
} else {
return SWITCH_NONE;
}
}
unsigned long lastEncoderChangeAt = 0;
EncoderEvent handleEncoder() {
@ -87,3 +100,13 @@ EncoderEvent handleEncoder() {
// return event
return event;
}
EncoderEvent handleDebugEncoder(char key) {
if (key == '[') {
return ENCODER_COUNTER_CLOCKWISE;
} else if (key == ']') {
return ENCODER_CLOCKWISE;
} else {
return ENCODER_NONE;
}
}

View File

@ -13,4 +13,6 @@ typedef int8_t EncoderEvent;
void setupEncoder();
SwitchEvent handleSwitch();
SwitchEvent handleDebugSwitch(char key);
EncoderEvent handleEncoder();
EncoderEvent handleDebugEncoder(char key);

View File

@ -129,3 +129,43 @@ uint8_t getPressedDigit(Key key) {
if (key == KEY_NONE) return KEY_NONE;
return digits[key];
}
Key handleDebugKeyboard(char key) {
if (!key) {
return KEY_NONE;
} else if (key == '1') {
return 0;
} else if (key == '2') {
return 1;
} else if (key == '3') {
return 2;
} else if (key == '4') {
return 3;
} else if (key == 'q') {
return 4;
} else if (key == 'w') {
return 5;
} else if (key == 'e') {
return 6;
} else if (key == 'r') {
return 7;
} else if (key == 'a') {
return 8;
} else if (key == 's') {
return 9;
} else if (key == 'd') {
return 10;
} else if (key == 'f') {
return 11;
} else if (key == 'z') {
return 12;
} else if (key == 'x') {
return 13;
} else if (key == 'c') {
return 14;
} else if (key == 'v') {
return 15;
} else {
return KEY_NONE;
}
}

View File

@ -30,3 +30,14 @@ Key handleKeyboard();
* Returns pressed digit or KEY_NONE if the key is not a digit
*/
uint8_t getPressedDigit(Key key);
/*
1234
QWER
ASDF
ZXCV
*/
Key handleDebugKeyboard(char key);

View File

@ -32,7 +32,12 @@ void loop() {
debugScanI2C();
demoTimer();
char debugKey = Serial.available() > 0 ? Serial.read() : 0;
auto key = handleKeyboard();
if (key == KEY_NONE && debugKey) {
key = handleDebugKeyboard(debugKey);
}
if (key != KEY_NONE) {
Serial.print("Key pressed: ");
Serial.print(allKeys[key]);
@ -62,16 +67,24 @@ void loop() {
}
}
if (auto event = handleSwitch()) {
auto switchEvent = handleSwitch();
if (!switchEvent) {
switchEvent = handleDebugSwitch(debugKey);
}
if (switchEvent) {
tick();
Serial.println(event == SWITCH_PRESSED ? "Pressed" : "Released");
Serial.println(switchEvent == SWITCH_PRESSED ? "Pressed" : "Released");
}
if (auto event = handleEncoder()) {
auto encoderEvent = handleEncoder();
if (!encoderEvent) {
encoderEvent = handleDebugEncoder(debugKey);
}
if (encoderEvent) {
tick();
Serial.println(event == ENCODER_CLOCKWISE ? "Clockwise" : "Counter-clockwise");
// demo_moveBy(event == ENCODER_CLOCKWISE ? 800 : -800);
changeFreq(event == ENCODER_CLOCKWISE ? 1 : -1);
Serial.println(encoderEvent == ENCODER_CLOCKWISE ? "Clockwise" : "Counter-clockwise");
// demo_moveBy(encoderEvent == ENCODER_CLOCKWISE ? 800 : -800);
changeFreq(encoderEvent == ENCODER_CLOCKWISE ? 1 : -1);
Serial.println(OCR1A);
}
}