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

Обсуждение

Я не уверен, что это вызвало бы это, но я думаю, что вы должны иметь Keyboard.begin() в конце функции настройки., @PeterJ

ты читал мой ответ?, @Juraj


1 ответ


1

Метод write с одним параметром принимает char, а не строку. Используйте write('W'), а не write("W");

,