Files
headphoneswitch/software/software.ino
2021-05-15 00:57:30 +02:00

56 lines
919 B
C++

#include "Keyboard.h"
#include "HID.h"
#if F_CPU == 16000000
#error should be running at 8MHz
#endif
void setup() {
pinMode(A0, INPUT_PULLUP);
Keyboard.begin();
Serial.begin(9600);
Serial.setTimeout(50);
}
void goto_bootloader() {
cli();
UDCON |= (1<<DETACH);
USBCON |= (1<<USBE);
TIMSK0 = 0;
MCUCR |= (1<<IVCE);
MCUCR |= (1<<IVSEL);
sei();
asm("jmp 0x7000");
}
void check_blcmd() {
if (Serial.available()) {
String in = Serial.readStringUntil("\n");
if (in.equals("bootloader\n")) {
goto_bootloader();
}
}
}
void loop() {
while (digitalRead(A0) == HIGH) {
check_blcmd();
delay(100);
}
Keyboard.press(KEY_F14);
Keyboard.releaseAll();
while (digitalRead(A0) != HIGH) {
check_blcmd();
delay(100);
}
Keyboard.press(KEY_F15);
Keyboard.releaseAll();
}