Arduino OSU! Gamepad Probleme und Co.

Ein Frischeinsteiger mit Problemen :cry:

Ich habe mir als Projekt einen OSU! Controller vorgenommen , jedoch will der Compiler die Keyboard.h nicht finden , und das obwohl die ja oben drinnen steht .

Bin schon echt am verzweifeln , mal hat er gesagt das er die Datei nicht findet und mal hat er gesagt das Keyboard nicht deklariert ist .
Seit drei Tagen bin ich am Googlen was mit der Keyboard.h ist , leider ohne erfolg.
Nun verstehe ich absolut nichts mehr.

Ich hoffe ihr könnt mir helfen , nach dem Keyboard kommt dann meine nähste Hürde das RGB LED Farbspektrum mit den Zwei LED in verschiedenen geschwindigkeiten darzustellen...aber das kann ja noch warten.

Hier der derzeitige Code:

#include <keyboard.h>


const int LED2 = 16;
const int LED1 = 15;
const int Led1R = 6;
const int Led1G = 8;
const int Led1B = 9;
const int Led2R = 12;
const int Led2G = 13;
const int Led2B = 14;
const int Trigger = 5;
const int TriggerY = 7;
const int TriggerX = 10;
const int TriggerESC = 11;

int counter = 0;


void setup() {
  // put your setup code here, to run once:
  pinMode (LED2, OUTPUT);
  pinMode (LED1, OUTPUT);
  pinMode (Led1R, OUTPUT);
  pinMode (Led1G, OUTPUT);
  pinMode (Led1B, OUTPUT);
  pinMode (Led2R, OUTPUT);
  pinMode (Led2G, OUTPUT);
  pinMode (Led2B, OUTPUT);
  pinMode (TriggerY, INPUT);
  pinMode (TriggerX, INPUT);
  pinMode (TriggerESC, INPUT);
  pinMode (Trigger, INPUT);



  int start = random(1); // Zufällige Startzeichen
  switch (start) {


    case 0:

      digitalWrite(Led1R, HIGH);
      digitalWrite(Led2R, HIGH);
      delay(500);

      digitalWrite(Led1R, LOW);
      digitalWrite(Led2R, LOW);
      delay(500);

      digitalWrite(Led1G, HIGH);
      digitalWrite(Led2G, HIGH);
      delay(500);

      digitalWrite(Led1G, LOW);
      digitalWrite(Led2G, LOW);
      delay(500);

      digitalWrite(Led1B, HIGH);
      digitalWrite(Led2B, HIGH);
      delay(500);

      digitalWrite(Led1B, LOW);
      digitalWrite(Led2B, LOW);
      delay(1000);
      //case 1:

      //case 2:

      //case 3:

      //case 4:
  }
Keyboard.begin());
}





void loop() {
  // put your main code here, to run repeatedly:
  
  // Tastenabfrageschleife
  if (digitalRead(TriggerY) == HIGH) {
    Keyboard.press('Y');
    digitalWrite(LED1, HIGH);
    counter++;
  }

  else (digitalRead(TriggerY) == LOW) {
    Keyboard.release('Y');
    digitalWrite(LED1, LOW);
  }

  if (digitalRead(TriggerX) == HIGH) {
    Keyboard.press('X');
    digitalWrite(LED2, HIGH)
    counter++;
  }

  else (digitalRead(TriggerX) == LOW) {
    Keyboard.release('X');
    digitalWrite(LED2, LOW);
  }

  if (digitalRead(TriggerESC) == HIGH) {
    Keyboard.press('KEY_ESC');
  }

  else (digitalRead(TriggerESC) == LOW) {
    Keyboard.release('KEY_ESC');
  }


/*

    if (counter == 100)
    {

    }

    if (counter == 500)
    {

    }

    if (counter == 1000)
    {

    }

    if (counter == 2200)
    {

    }

    if (counter == 3000)
    {
    counter - 3000;
    }


  */








}

Seit drei Tagen bin ich am Googlen was mit der Keyboard.h ist , leider ohne erfolg.

Das scheint eine Library zu sein.
Aber welche du da verwendest(oder verwenden willst), ka...

Warum schreibst du im Text Keyboard.h und im Programm keyboard.h?
Das ist nicht das gleiche.

Du solltest den Code in Code Tags setzen, sonst liest sich das keiner durch.

Welchen Arduino verwendest du?

combie:
Welchen Arduino verwendest du?

Steht im Titel, es ist ein Nano. Den kann man nicht als Keyboard nutzen, das geht bspw. mit dem Leonardo und dem Micro.

sth77:
Steht im Titel, es ist ein Nano.

Oh!
Danke.

Ja, mit dem Nano wird das nichts!

Vielen Dank schon mal ,
wenn ich den Code aber für den Arduino Micro complieren (boah dieses Wort) will, sagt Arduino mir das er die keyboard.h nicht finden kann.

Gibt es da wirklich keine Möglichkeit diese simplen Tastendrücke über USB zu übermitteln , habe jetzt alles so schön Geplant.

Wenn der Compiler die Keyboard.h nicht findet, hast du die wohl nicht oder falsch in deinem System installiert.

Zeig doch mal die Fehlermeldung die kommt.

Hier eine Beschreibung wie du eine Library einbindest. Library einbinden

Schau dir an, welchen Schnittstellenchip dein Nano(-Klon?) hat. Dann schaust du ins Datenblatt des Chips. Ein FT232 kann z.B. nur die USB-Seriell-Wandlung, mehr geht nicht.
Du könntest auch den Tastendruck über die serielle Schnittstelle weitergeben. Ich bin mir ziemlich sicher, dass es kleine Tools gibt, die eben jene seriell eingehende Zeichen dem System als Tastendrücke vorgaukeln.

wenn ich den Code aber für den Arduino Micro complieren (boah dieses Wort) will, sagt Arduino mir das er die keyboard.h nicht finden kann.

keyboard.h != Keyboard.h
Sachte ich doch anfangs schon ...
:wink:

combie:
keyboard.h != Keyboard.h

Ich befürchte, das musst du dem TO besser erklären. :wink:

Wenn ich mir die Beispiele bei meiner Version 1.6.5 so ansehe, gibt es keyboard.h nicht mehr.
Die Beispiele benutzen einfach das Keyboard Objekt, ohne irgend ein include.

/* 
 Keyboard Message test
 
 For the Arduino Leonardo and Micro.
 
 Sends a text string when a button is pressed.

 The circuit:
 * pushbutton attached from pin 4 to +5V
 * 10-kilohm resistor attached from pin 4 to ground
 
 created 24 Oct 2011
 modified 27 Mar 2012
 by Tom Igoe
 modified 11 Nov 2013
 by Scott Fitzgerald
 
 This example code is in the public domain.
 
 http://www.arduino.cc/en/Tutorial/KeyboardMessage
 */

const int buttonPin = 4;          // input pin for pushbutton
int previousButtonState = HIGH;   // for checking the state of a pushButton
int counter = 0;                  // button push counter

void setup() {
  // make the pushButton pin an input:
  pinMode(buttonPin, INPUT);
  // initialize control over the keyboard:
  Keyboard.begin();
}

void loop() {
  // read the pushbutton:
  int buttonState = digitalRead(buttonPin);
  // if the button state has changed,
  if ((buttonState != previousButtonState)
      // and it's currently pressed:
      && (buttonState == HIGH)) {
    // increment the button counter
    counter++;
    // type out a message
    Keyboard.print("You pressed the button ");
    Keyboard.print(counter);
    Keyboard.println(" times.");
  }
  // save the current button state for comparison next time:
  previousButtonState = buttonState;
}

Damit wird es auf dem Nano natürlich nicht lauffähiger...

KeyboardMessage.ino: In function 'void setup()':
KeyboardMessage.ino:31:3: error: 'Keyboard' was not declared in this scope
KeyboardMessage.ino: In function 'void loop()':
KeyboardMessage.ino:44:5: error: 'Keyboard' was not declared in this scope
'Tastatur' wird nur vom Arduino Leonardo unterstützt

Wenn ich mir die Beispiele bei meiner Version 1.6.5 so ansehe, gibt es keyboard.h nicht mehr.

Wenn ich mir die Beispiele bei meiner Version 1.6.7 so ansehe, dann wird in jedem Beispiel eine Keyboard.h eingebunden.
Und, ohne compiliert es nicht.

Eine Keyboard.h
Keine keyboard.h

Eine Keyboard.h
Keine keyboard.h

Hast du dich also als Nicht-Windows-Nutzer geoutet, combie ...
( Windows - Nutzer dürfen bei #include sogar backslashes benutzen )


Aber wenn Aleksi1999 mal den Titel ändern könnte, bitte:
Nano und Keyboard.h oder ein Keyboard Objekt macht ja nun wirklich keinen Sinn.

michael_x:
Hast du dich also als Nicht-Windows-Nutzer geoutet, combie ...
( Windows - Nutzer dürfen bei #include sogar backslashes benutzen )

Da darf ich dich überraschen!
Wenns im Realleben auch manchmal hapert, bestehe ich doch in der Programmierung auf Disziplin.
Und ja, ich setze Win und Unixoide Systeme ein.


Und jetzt zur Überraschung:

#include "keyboard.h"

Wirft:

fatal error: keyboard.h: No such file or directory


#include "Keyboard.h"

Compiliert einwandfrei.
Getestet unter Win7 und IDE 1.6.7
Überraschung gelungen?
:wink:

Überraschung gelungen?

Du siehst mich verblüfft.

Ich füge bei mir (arduino 1.6.7 / windows 8 ) eine Zeile

#include "x.h"

ein und erhalte den Fehler

C:\Users\michaelx\Documents\Arduino\sketch_apr20a\sketch_apr20a.ino:1:15: fatal error: x.h: No such file or directory

Ich erzeuge eine leere Datei x.h im gleichen Verzeichnis und der Fehler ist weg.
Ich ändere den Sketch auf

#include "X.h"

und es compiliert immer noch.

michael_x:
Ich ändere den Sketch auf

#include "X.h"

und es compiliert immer noch.

Das muss aber nicht immer so sein. (Windows7/IDE V1.6.5)

Habe es gerade mal mit der FastLED.h probiert,

Die erscheint normal in rot, sobald ich "fastLED.h" schreibe, ist die Schrift schwarz und der Sketch lässt sich nicht kompilieren.

Auch die Datei ...\Arduino\1.6.7\libraries\Stepper\src\Stepper.h
findet er, wie auch immer, mit
#include "Stepper.h" sowie mit #include <Stepper.h> aber nicht mit anderer Groß-Kleinschreibung

Ändere ich die Datei selber auf stepper.h, compiliert die Stepper.cpp immer noch (in der natürlich #include "Stepper.h" steht).
In der .ino muss aber der Dateiname richtig ( jetzt klein, und daher nicht mehr rot ) stehen...

Die Erklärung dieses Dilemmas ist eine ganz einfache!

Dem Win macht die Groß-/Kleinschreibung wirklich nichts aus.
Und dem Compiler Gedöns auch nicht.
Das ist Wahr.

Die Probleme treten auf, wenn die IDE die #include untersucht, und daraufhin die benötigten Libs im Build Ordner sammelt.
Dieser Vorgang ist IDE intern und Case sensitiv.
Es tritt also nur mit eingebundenen Libs auf.

Ich kenne nur eine Abhilfe: Disziplin.

Wow, Leute , ihr seid viel zu schnell im Antworten .

Ich habe jetzt alle Fehlermeldungen ausgemerzt bekommen .

Wie es ausschaut muss ich mir dann ja einen Arduino Micro kaufen -.-

So jetzt habe ich nur noch das kleingroße Problem ein Farbspektrum darzustellen.
Wenn mir da noch jemand Helfen könnte.

Ihr seid alle so hilfreich , Danke <3

So jetzt habe ich nur noch das kleingroße Problem ein Farbspektrum darzustellen.
Wenn mir da noch jemand Helfen könnte.

Aber gerne!

So Leute ich habe jetzt so ziemlich alles erreicht wasich wollte , wenn die Hardware ankommt werde ich weiter Berichten.

Hättet ihr noch Ideen was man da noch einbauen, oder verbessern könnte?

Derzeitiger Code ist im anhang wegen der 9000 Char Grenze.

Das Farbspektrum habe ich dank dieser http://html-color-codes.info/webfarben_hexcodes/ Seite geschafft , Wikipedia war mir da doch etwas zu komplex. :smiley:

OSU_Gamepad.ino (10.7 KB)