Arduino Leonardo keyboard.print продолжает печатать знак равенства
Сейчас я работаю над самодельным контроллером для Train Sim World. Я относительно новичок в Arduino и языке программирования C. Мой код структурирован так, чтобы искать нажатия кнопок или вводы джойстика PS2 и печатать определенный символ для каждой кнопки. Я также включил выключатель на контакте 3. Однако, когда я запускаю код и открываю Блокнот, чтобы увидеть результаты, Arduino продолжает печатать символ =
, даже если контакт 3 не находится в низком уровне. После того, как я нажимаю на контакт 3 низкий уровень и нажимаю кнопку, происходит задержка около двух секунд, в течение которой символ =
продолжает печататься снова и снова, и по прошествии этих 2 секунд Arduino печатает символ атрибутировать кнопку несколько раз, прежде чем возвращаться к печати =
снова и снова.
Что я могу сделать, чтобы это исправить?
#include <Keyboard.h>
void setup() {
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
}
bool pantograph = 0;
void loop() {
while (digitalRead(3) == LOW) {
Keyboard.write("M");
if (digitalRead(1) == LOW) {
Keyboard.write("W");
} else if (digitalRead(2) == LOW) {
Keyboard.write("S");
} else if (digitalRead(0) == LOW) {
Keyboard.write("Q");
} else if (digitalRead(5) == LOW) {
Keyboard.write("Y");
} else if (digitalRead(6) == LOW) {
Keyboard.write("T");
} else if (digitalRead(7) == LOW) {
Keyboard.write("G");
} else if (digitalRead(8) == LOW) {
Keyboard.write("K");
} else if (digitalRead(9) == LOW) {
Keyboard.write("Z");
} else if (digitalRead(10) == LOW) {
if (pantograph == 0) {
Keyboard.write("P");
} else {
Keyboard.write("O");
}
} else if (digitalRead(11) == LOW) {
Keyboard.write(9);
} else if (digitalRead(12) == LOW) {
Keyboard.write("N");
} else if (digitalRead(13) == LOW) {
Keyboard.write(32);
} else if (analogRead(A0) > 700) {
Keyboard.write(93);
} else if (analogRead(A0) < 200) {
Keyboard.write(91);
} else if (analogRead(A1) > 700) {
Keyboard.print(39);
} else if (analogRead(A1) < 200) {
Keyboard.print(59);
} else if (analogRead(A2) > 700) {
Keyboard.print("A");
} else if (analogRead(A2) < 200) {
Keyboard.print("D");
}
}
delay(1000);
}
@, 👍1
Обсуждение1 ответ
Метод write
с одним параметром принимает char, а не строку. Используйте write('W')
, а не write("W");
- Arduino nano как клавиатура HID
- Keyboard.h не найден
- Нажать клавишу Windows, используя «keyboard.press();»
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
- Какие диоды использовать в матричном вводе кнопок/клавиш? (Изготовление игровой клавиатуры)
- NodeMCU поддерживает внедрение ключей?
- ESP8266: #include <Keyboard.h>вызывает фатальную ошибку: HID.h: No such file or directory
- Как преобразовать USB в PS/2?
Я не уверен, что это вызвало бы это, но я думаю, что вы должны иметь
Keyboard.begin()
в конце функции настройки., @PeterJты читал мой ответ?, @Juraj