キーボード
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
キーボード [2025/04/21 07:56] – masatok | キーボード [2025/04/21 07:57] (現在) – masatok | ||
---|---|---|---|
行 2: | 行 2: | ||
{{: | {{: | ||
+ | |||
+ | |||
+ | #include " | ||
+ | |||
+ | const int KEYIN[] = { 8, 9 }; | ||
+ | const int KEYOUT[] = { 2, 3, 4, 5 }; | ||
+ | |||
+ | unsigned long previousMillis = 0; | ||
+ | const long interval = 30; | ||
+ | int columnNum = 0; | ||
+ | int sw[4][2] = { 0 }; | ||
+ | char keyMap[4][2] = { | ||
+ | { ' | ||
+ | { ' | ||
+ | { ' | ||
+ | { ' | ||
+ | }; | ||
+ | |||
+ | void setup() { | ||
+ | for (int i = 0; i < 4; i++) { | ||
+ | pinMode(KEYOUT[i], | ||
+ | digitalWrite(KEYOUT[i], | ||
+ | } | ||
+ | for (int i = 0; i < 2; i++) { | ||
+ | pinMode(KEYIN[i], | ||
+ | } | ||
+ | Keyboard.begin(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | unsigned long currentMillis = millis(); | ||
+ | |||
+ | if (currentMillis - previousMillis >= interval) { | ||
+ | previousMillis = currentMillis; | ||
+ | digitalWrite(KEYOUT[columnNum], | ||
+ | |||
+ | for (int rowNum = 0; rowNum < 2; rowNum++) { | ||
+ | int readValue = digitalRead(KEYIN[rowNum]); | ||
+ | if (readValue != sw[columnNum][rowNum] && readValue == HIGH) { | ||
+ | keyPress(keyMap[columnNum][rowNum]); | ||
+ | } | ||
+ | |||
+ | sw[columnNum][rowNum] = readValue; | ||
+ | delay(10); | ||
+ | Keyboard.releaseAll(); | ||
+ | } | ||
+ | |||
+ | digitalWrite(KEYOUT[columnNum], | ||
+ | columnNum++; | ||
+ | columnNum %= 4; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void keyPress(char key) { | ||
+ | switch (key) { | ||
+ | case ' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | Keyboard.write(' | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_ALT); | ||
+ | Keyboard.press(KEY_RIGHT_ARROW); | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_GUI); | ||
+ | Keyboard.press('/' | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_ALT); | ||
+ | Keyboard.press(KEY_LEFT_ARROW); | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_GUI); | ||
+ | Keyboard.press(KEY_LEFT_CTRL); | ||
+ | Keyboard.press(' | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_GUI); | ||
+ | Keyboard.press(KEY_RIGHT_ARROW); | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_CTRL); | ||
+ | Keyboard.press(' | ||
+ | break; | ||
+ | |||
+ | case ' | ||
+ | Keyboard.press(KEY_LEFT_GUI); | ||
+ | Keyboard.press(KEY_LEFT_ARROW); | ||
+ | break; | ||
+ | |||
+ | default: | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ |
キーボード.1745222173.txt.gz · 最終更新: by masatok