Problem mit nem Vorhaben und meinem Arduino

Hallo

Eventuell können mir einige von euch auch mit nem arduino projekt helfen.

Unzwar mein problem, ich will mir gerne für den ls15 ne steuerung bauen mit 6 buttons die ich im spiel wie folgt nutzen kann

Vorne Gerät heben | Hinten Gerät heben

Vorne Gerät An/Aus | Hinten Gerät An/Aus

Vorne Gerät Senken | Hinten Gerät Senken

So nun meine Frage wie schreibe ich dort nun meinen code ?

Ich bin bisher soweit:

/*
Pin Belegungen
Button1 = 2
Button2 = 4 
Button3 = 7
Button4 = 8
Button5 = 12
Button6 = 13 
*/
const int buttonPin1 = 2;
const int buttonPin2 = 4;//4
const int buttonPin3 = 7;//7
const int buttonPin4 = 8;
const int buttonPin5 = 12;
const int buttonPin6 = 13; 
int buttonState1 = 0;
int buttonState2 = 0;
String data; 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(buttonPin1,INPUT);
  pinMode(buttonPin2,INPUT);
  pinMode(buttonPin3,INPUT);
  pinMode(buttonPin4,INPUT);
  pinMode(buttonPin5,INPUT);
  pinMode(buttonPin6,INPUT);
}
void loop() {
  if(digitalRead(buttonPin1) == HIGH) 
  { 
      Serial.println("W");  
  }
  
  delay(1000);
  if(digitalRead(buttonPin2) == HIGH) 
  { 
      Serial.println("A");  
  }
  delay(1000);
  if(digitalRead(buttonPin3) == HIGH) 
  { 
      Serial.println("S");  
  }
  
  delay(1000);
  if(digitalRead(buttonPin4) == HIGH) 
  { 
      Serial.println("D");  
  }
  delay(1000);
  if(digitalRead(buttonPin5) == HIGH) 
  { 
      Serial.println("F");  
  }
  delay(1000);
  
  if(digitalRead(buttonPin6) == HIGH) 
  { 
      Serial.println("G");  
  }
  delay(1000);
  
  
}

Aber wenn ich den Sketch hochlade und den Seriellen monitor starten tuhe, dann schreibt er mir nur

W

A

S

D

F

G

wartet etwas

W

A

S

D

F

G

Kann mir jemand helfen wie ich die buttons am pc nutzen kann ?

Danke schonmal

  • pinMode(buttonPinX, INPUT_PULLUP);
  • die Buttons nach GND schließen lassen
  • auf LOW statt HIGH überprüfen
  • Tastenprellen behandeln
    alternativ für die letzten beiden Punkte eine Library einsetzen.

Ich bin noch neu in dieser Welt des Arduino ( naya funduino eher hehe) aber was ist Tastenprellen ? :slight_smile:
Aber danke schonmal für den Rat,

Aber auf GND setzen die buttons, das sind keine mit 4 Pins unten dran, sondern solche wie bei nem Spielautomat so in der art, mit 2 Kabeln hab ich die am Arduino ich glaube microtaster heisen die

entweder du baust an jeden Taster einen Pulldown Widerstand, oder du nimmst den Vorschlag von whandall an.

De_Kerwer:
was ist Tastenprellen ? :slight_smile:

Mechanische Taster schließen nicht beim Drücken sondern "flattern" erst ein wenig bis der Kontakt stabil ist. Das nennt man Prellen und das bekommt der Prozessor ohne Probleme mit. Wenn Du also glaubst Du hast einfach nur gedrückt sieht der arduino z.B. 31 Tastendrücke (oder halt 5 oder 9 oder oder ... :slight_smile: )

Also nimm die Debounce-Library und alles wird gut.

De_Kerwer:
Aber auf GND setzen die buttons, das sind keine mit 4 Pins unten dran, sondern solche wie bei nem Spielautomat so in der art, mit 2 Kabeln hab ich die am Arduino ich glaube microtaster heisen die

Ähh, ja ... Du schaltest die Pins mit den Tastern auf High, im nichtgedrückten Zustand ist der Einganspin offen. Das taugt nix! Also den Taster auf GND schalten lassen und die internen Pullups aktivieren. Sparst Du Dir den Pull-Down-Widerstand.

Zwei Kontakte reichen bei Buttons.

Einer an GND, einer an den Arduino Pin mit INPUT_PULLUP.

Auch die 'normalen' kleinen Vierbeiner haben meist nur zwei,
oft sind da jeweils zwei Beine verbunden und
die Anzahl dient mehr der Stabilität als elektrischer Funktion.

Cool, Danke dir, Funktioniert.
Aber nun ne Frage kannst du mir noch sagen wie ich die Taster nun am pc nutzen kann in nem Spiel als programmierbare tasten ?
Das geht mit dem processing tool oder ?

Am einfachsten ginge es mit einem Leonardo oder ähnlichen, der direkt eine USB-Tastatur emulieren kann.

Wenn du über Seriell via USB gehen willst, kannst du irgendeine Prorammiersprache verwenden, Processing inclusive.
Ich würde eher zu Python tendieren, weil man keine GUI Ausgabe braucht, aber das ist reine Geschmackssache.

Das geht mit vielen Umgebungen/Sprachen. Auch .NET erlaubt Konsolen-Anwendungen. Oder man kann das GUI im Tray verstecken. Letztlich Geschmackssache.

Wieso nimmst du bei sowas nicht einen Leonardo? Der kann sich als USB Tastatur ausgeben

  1. Ich versuche das nun mit bounce im Arduino
    Aber wenn ich die libary einbinde komt diese Fehlermeldung
    C:\Program Files (x86)\Arduino\libraries\Bounce\Bounce.cpp:4:22: fatal error: WProgram.h: No such file or directory
    #include "WProgram.h"
    ^
    compilation terminated.
    Fehler beim Kompilieren.

Ja Leonardo hab ich auch schon gedacht, aber immomment das Geld nicht dafür hehe, und ist ja hauptsächlich nur für neben bei dieses projekt hier aber ich will es halt einmal zum laufen bringen :wink:

Nimm eine aktuelle Version:

Ja nun geht's aber bekomme es immer noch nicht hin, das ich im Seriellen monitor nur eine ausgabe pro knopf druck bekomme kann mir da jeemand nen denkanstoß verpassen wie ich die libary ( code ) nun in meinen Code einbinden tuhe das dies Funktioniert ?

Bin euch aber bisher schonmal dankbar, also das ich so schnell antworten bekomm hätt ich nicht gedacht