<Keyboard.h> nicht gefunden

Programmierung und Hardwaredesign mit AVR, PIC und Konsorten.

Moderatoren: SeriousD, ebastler, MaxZ

Antworten
Nachricht
Autor
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 508
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 21 Mal

<Keyboard.h> nicht gefunden

#1 Beitrag von L_B_S »

Moin zusammen,

die IDE zeigt mir folgende Fehlermeldung:
IDE.jpg
sehr seltsam, die Lib ist richtig im Verzeichnis, da wo sie sein sollte n:\- Arduino\Arduino - IDE-1.8.7\libraries\Keyboard\.....
Im Sketch ist sie auch. Ich weiß nicht , was da falsch ist. Habe ich so orginal aus der Arduino REff. übernommen. Kann das mal jemand testen ?
Der Code:

Code: Alles auswählen

#include <Keyboard.h>


void setup() {
  // Pin 2 wird ein Inputpin mit Pullup-Widerstand.
  // Pin 2 ist damit immer high, bis er auf Ground
  // verbunden wird:
  pinMode(2, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  //Wenn der Button gedrückt wird
  if (digitalRead(2) == LOW){
    //Sende ein ASCII 'A'
    Keyboard.write(65);
  }
}
Danke
Ludwig

Nachtrag:
könnte das vll. damit im Zusammenhang stehen ?
...
N:\- Arduino\Arduino - IDE-1.8.7\libraries\Keyboard\src/Keyboard.h:29:2: warning: #warning "Using legacy HID core (non pluggable)" [-Wcpp]

#warning "Using legacy HID core (non pluggable)"
.....

Benutzeravatar

V-Troxi
Beiträge: 222
Registriert: Sa 14. Apr 2018, 20:52
Hat sich bedankt: 15 Mal
Danksagung erhalten: 43 Mal

Re: <Keyboard.h> nicht gefunden

#2 Beitrag von V-Troxi »

Hallo,

Du hast anscheinend einen Arduino Uno, oder?
Die Keyboard Library geht nämlich nicht überall (z.B. nicht auf dem Arduino Uno):

"The Keyboard and Mouse libraries are not compatible with the Uno board you are compiling for. If you have an Uno board, you will not be able to use these libraries. You would need to get a board with native USB functionality (e.g., Leonardo, Micro, MKR, Nano 33 IoT, Zero, Due) to use these libraries. If you do have a board with native USB, then you need to select the correct board from the IDE's Tools > Board menu." -https://forum.arduino.cc/t/library-erro ... ded/629788

Sonst könnte vielleicht auch das helfen:
-> https://arduino.stackexchange.com/quest ... -not-found

LG
V-Troxi

Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 508
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 21 Mal

Re: <Keyboard.h> nicht gefunden

#3 Beitrag von L_B_S »

Hallo V-Troxi,

das erklärt natürlich einiges. Ich habe es auf dem UNO und MEGA getestet.

In der Referenz wird darauf hingewiesen, hab's leider übersehen:
USB (32u4 based boards and Due/Zero only)
If you have Arduino/Genuino Uno selected as your board in the Tools ► Board ► menu, then you get the error. If you select Arduino Leonardo it compiles correctly.
Sollte das die Lösung sein oder interpretiere ich das falsch ? Hab es mal compilieren bzw. überprüfen lassen, vorher das Board auf Leonardo umgestellt. Dann kommt keine Fehlermeldung.
Hab's noch nicht probiert aber ich könnte das jetzt hochladen auf den UNO, zweifele aber, ob das funktioniert auf dem UNO oder sollte das wirklich die Lösung sein ?
Keyboard.h (and Mouse.h) only works on devices that use the ATmega32u4 processor, like the Leonardo or Micro.
....aber warscheinlich nicht :cry:

Gruss
Ludwig

Benutzeravatar

gamerpaddy
Beiträge: 2552
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 278 Mal
Kontaktdaten:

Re: <Keyboard.h> nicht gefunden

#4 Beitrag von gamerpaddy »

der uno hat ein usb-seriell wandler zwischen dem chip und deinem PC, da funktioniert keine direkte usb steuerung.
Es gibt einige Arduinos die die einen 16u2 chip als usb/serial wandler haben, da kann man mit einem anderen bootloader wie den hoodloader
https://github.com/NicoHood/Hoodloader

den wandler-chip als usb steuergerät nutzen.
die meisten nachbauten benutzen aber ftdi oder ch340 serial wandler, da geht das nicht.

die boards mit dem atmel 32u4 haben eine direkte usb verbindung und erstellen ein virtuellen serial port. da geht das ohne umwege.
:wurst:

Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 508
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 21 Mal

Re: <Keyboard.h> nicht gefunden

#5 Beitrag von L_B_S »

... hab mir jetzt einen LEONARDO bestellt

Danke

Nur nochmal ne Frage, ob ich das richtig verstanden habe: wenn das Arduino Prog einen simulierten Tastendruck sendet, ist das dann so, wie wenn ich am PC-Keyboard eine Taste drücke, richtig ?
z. Bsp. ein 'A' wird gesendet..... wenn sich der Cursor am PC gerade in einem beliebigen Programm (am PC) in einem Eingabefeld befindet, wird dort an dieser Stelle das 'A' geschrieben...richtig ?
Also wie bei einem "normalen" Tastendruck ?

Benutzeravatar

gamerpaddy
Beiträge: 2552
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 278 Mal
Kontaktdaten:

Re: <Keyboard.h> nicht gefunden

#6 Beitrag von gamerpaddy »

Ja, der Arduino meldet sich über USB als ganz normale Tastatur an sobald man die keyboard.h inkludiert.
Wenn man die Mouse.h noch mit reinpackt, hat man zusätzlich eine virtuelle Maus auf dem selben gerät.

Das geht auch mit anderen USB HID "descriptors" wie Joysticks, Speichergeräte usw. braucht aber extra libraries dafür.

Aber vorsicht was du programmierst, wenn du zb. in dem main/setup schon eine Tastenfolge packst die deinen PC herunterfährt oder alt+f4 spammt und du kein "killswitch" einbaust wie zb. ein pin der LOW sein muss, musst du ggf. den Arduino das nächste mal über ICSP mittels eines zweiten arduinos als ISP programmieren :D


Das funktioniert überall wo USB HID unterstützt ist.. also im prinzip überall wo es USB gibt, android.. windows.. linux..
:wurst:

Antworten