Ошибка в наборе текста на клавиатуре Digispark
Я хочу открыть блокнот у моего Digispark. Я использую этот код:
/* * Generated with <3 by Dckuino.js, an open source project ! */
#include <avr/pgmspace.h>
#include "DigiKeyboard.h"
const char line1[] PROGMEM = "notepad.exe";
const char line2[] PROGMEM = "Hello World!";
char buffer[256];
#define GetPsz(x) (strncpy_P(buffer, (char*)x, 256))
#define KEY_UP_ARROW 0x52
#define KEY_DOWN_ARROW 0x51
#define KEY_LEFT_ARROW 0x50
#define KEY_RIGHT_ARROW 0x4F
#define KEY_LEFT_GUI 0xE3
#define KEY_ESC 0x29
#define KEY_TAB 0x2B
void digiBegin() {
DigiKeyboard.sendKeyStroke(0,0);
DigiKeyboard.delay(50);
}
void digiEnd() {
const int led=1;
pinMode(led, OUTPUT);
while (1) {
digitalWrite(led, !digitalRead(led));
DigiKeyboard.delay(1000);
}
}
void printText(char *txt) {
DigiKeyboard.print(txt);
DigiKeyboard.update();
}
void setup() {
digiBegin();
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(50);
// notepad.exe printText(GetPsz(line1));
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(100);
// Hello World! printText(GetPsz(line2));
digiEnd();
} /* Unused endless loop */ void loop() {}
Моя программа открыла RUN Windows, но вместо ввода "notepad.exe" он печатает "fgl]hY&]p]", и я не знаю, где я делаю ошибки. Пожалуйста, помогите мне.
Я должен написать свой код, подобный этому:
#include "DigiKeyboard.h"
int pinled = 1;
void setup()
{
pinMode(3, INPUT);
digitalWrite(3, HIGH);
}
void loop()
{
DigiKeyboard.sendKeyStroke(0);
if(digitalRead(3) == LOW)
{
DigiKeyboard.sendKeyPress(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(10);
DigiKeyboard.sendKeyStroke(0, 0);
DigiKeyboard.sendKeyStroke(KEY_C);
DigiKeyboard.sendKeyStroke(KEY_M);
DigiKeyboard.sendKeyStroke(KEY_D);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_I);
DigiKeyboard.sendKeyStroke(KEY_P);
DigiKeyboard.sendKeyStroke(KEY_C);
DigiKeyboard.sendKeyStroke(KEY_O);
DigiKeyboard.sendKeyStroke(KEY_N);
DigiKeyboard.sendKeyStroke(KEY_F);
DigiKeyboard.sendKeyStroke(KEY_I);
DigiKeyboard.sendKeyStroke(KEY_G);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
}
}
@m7.arman, 👍2
Обсуждение0
Смотрите также:
- Связь последовательного порта Digispark
- Библиотеки I2C для ATTiny85?
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
- Почему DigiSpark не распознается автоматически на других компьютерах?
- Digispark ATtiny 85 - не распознается как HID устройство
- Открытие программы в administrator с помощью Arduino (DigiSpark / DigiSparkKeyboard)
- Клавиатура Digispark ATtiny85
- Почему DigiKeyboard.print и println меняют строку?
Какая раскладка клавиатуры у вас активна на вашем компьютере?, @chrisl
Я попытался немного прояснить вопрос. У вас есть
// notepad.exe printText(GetPsz(строка 1));
, но я предполагаю, что это две отдельные строки в коде, который вы на самом деле запускаете; аналогично для "строки 2"., @timemageпри отладке кода, подобного вашему, всегда выводите строки типа "1111122222233333" или "aaabbbcc".... таким образом, вы можете определить, повторяются ли символы, даже если это неправильные символы ... в вашем примере один символ, по-видимому, повторяется, но он неопределенен, @jsotola