Add MUX diagnostic commands and GPIO probe
Serial commands: - dump: show button and LED state - ledon/ledoff: toggle all LEDs - ledtest: sequential LED test - read: raw button read - probe: check pin states and test LD toggle
This commit is contained in:
+55
-1
@@ -27,6 +27,52 @@ void midi_task(void* parameter) {
|
||||
}
|
||||
}
|
||||
|
||||
void handle_serial_command(const String& cmd) {
|
||||
if (cmd == "dump" || cmd == "d") {
|
||||
mux.dump();
|
||||
} else if (cmd == "ledon") {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
mux.set_led(i, true);
|
||||
delay(50);
|
||||
}
|
||||
Serial.println("[CMD] All LEDs ON");
|
||||
} else if (cmd == "ledoff") {
|
||||
mux.clear_all();
|
||||
} else if (cmd == "ledtest") {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
mux.set_led(i, true);
|
||||
delay(200);
|
||||
mux.set_led(i, false);
|
||||
delay(100);
|
||||
}
|
||||
Serial.println("[CMD] LED test complete");
|
||||
} else if (cmd == "read") {
|
||||
uint16_t raw = mux.read_buttons();
|
||||
Serial.printf("[CMD] Raw button state: 0x%03X (binary: ", raw);
|
||||
for (int i = 9; i >= 0; i--) {
|
||||
Serial.print((raw >> i) & 1);
|
||||
}
|
||||
Serial.println(")");
|
||||
} else if (cmd == "probe") {
|
||||
Serial.println("[CMD] Probing MUX pins...");
|
||||
Serial.printf(" DAT (GPIO %d) = %d\n", 9, digitalRead(9));
|
||||
Serial.printf(" LD (GPIO %d) = %d\n", 10, digitalRead(10));
|
||||
Serial.printf(" CLK (GPIO %d) = %d\n", 11, digitalRead(11));
|
||||
Serial.printf(" DI (GPIO %d) = %d\n", 12, digitalRead(12));
|
||||
|
||||
Serial.println(" Toggling LD pin...");
|
||||
for (int i = 0; i < 5; i++) {
|
||||
digitalWrite(10, HIGH);
|
||||
delayMicroseconds(100);
|
||||
digitalWrite(10, LOW);
|
||||
delayMicroseconds(100);
|
||||
}
|
||||
Serial.printf(" DI after LD toggle: %d\n", digitalRead(12));
|
||||
} else {
|
||||
Serial.println("[CMD] Commands: dump, ledon, ledoff, ledtest, read, probe");
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
delay(2000);
|
||||
@@ -66,12 +112,20 @@ void setup() {
|
||||
|
||||
Serial.println("=================================");
|
||||
Serial.println(" All systems ready");
|
||||
Serial.println(" Waiting for USB MIDI host...");
|
||||
Serial.println(" Type 'help' for diagnostics");
|
||||
Serial.println("=================================");
|
||||
Serial.flush();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
controller.update();
|
||||
|
||||
if (Serial.available()) {
|
||||
String cmd = Serial.readStringUntil('\n');
|
||||
cmd.trim();
|
||||
cmd.toLowerCase();
|
||||
handle_serial_command(cmd);
|
||||
}
|
||||
|
||||
delay(10);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user