Fahrpult 146 Schülerptojekt
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Fahrpult 146 Schülerptojekt
Hallo,
ich habe mir einen Arduino Leonardo zugelegt, habe ihn mit einer 9V Stromversorgung und dem USB Kabel mit meinem PC verbunden, um ihn als Gamepad zu funktionieren. Ich weiß, dass ich das Teil nun Programmieren muss, jedoch möchte ich es erstmal verbinden und da fängt mein Problem an - Ich kann den Leonardo zwar als Board festlegen, jedoch kann ich keinen Port auswählen, beim Versuch, ein fertiges Programm zu installieren, wurde ich darauf hingewiesen, dass auf dem Port "COM 1" sich kein Leonardo befinfet.
Warscheinlich facepalmen grade welche, aber ich verstehe es nicht.
Gruß Gero.
ich habe mir einen Arduino Leonardo zugelegt, habe ihn mit einer 9V Stromversorgung und dem USB Kabel mit meinem PC verbunden, um ihn als Gamepad zu funktionieren. Ich weiß, dass ich das Teil nun Programmieren muss, jedoch möchte ich es erstmal verbinden und da fängt mein Problem an - Ich kann den Leonardo zwar als Board festlegen, jedoch kann ich keinen Port auswählen, beim Versuch, ein fertiges Programm zu installieren, wurde ich darauf hingewiesen, dass auf dem Port "COM 1" sich kein Leonardo befinfet.
Warscheinlich facepalmen grade welche, aber ich verstehe es nicht.
Gruß Gero.
Zuletzt geändert von Gero am 17.05.2014 23:12:36, insgesamt 3-mal geändert.
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Wie kann ich HID aus einer Variable machen?
Die Probleme sind behoben, ich habe auch schon geschafft einen Wert aus den Potis zu lesen, jedoch weiß ich nicht, wie man jetzt einen Wert von der Variable in die HID Gamecontroller-basis schnickt.
Gruß Gero
Gruß Gero
- Arne aus dem Norden
- Beiträge: 721
- Registriert: 25.12.2011 14:28:21
- Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
- Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)
Re: Ardunio Leonardo Programmieren
Moin,Gero hat geschrieben:ich habe mir einen Arduino Leonardo zugelegt, habe ihn mit einer 9V Stromversorgung und dem USB Kabel mit meinem PC verbunden
das ist eigentlich unsinnig mit den 9V, weil sich der Arduino bei Anschluß über USB den Strom eigentlich über letzteren holt. Wenn man das Teil direkt am Rechner oder einem Hub hat und nicht z.B. an der Tastatur ist das mit der Stromversorgung über USB normal auch völlig ausreichend...
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
- Arne aus dem Norden
- Beiträge: 721
- Registriert: 25.12.2011 14:28:21
- Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
- Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)
Re: Wie kann ich HID aus einer Variable machen?
Ich hab ehrlich gesagt noch nie einen Gamecontroller benutzt oder gehabt -vielleicht ist es auch eine Wissenslücke bei mir- aber ich wüßte eigentlich auch nicht, das der Leonardo als solcher erkannt werden würde/könnte...Gero hat geschrieben:Die Probleme sind behoben, ich habe auch schon geschafft einen Wert aus den Potis zu lesen, jedoch weiß ich nicht, wie man jetzt einen Wert von der Variable in die HID Gamecontroller-basis schnickt.
Die mir bekannten HID-Fähigkeiten des Leo beruhen lediglich auf einigen Maus und Tastaturemulationen.
Ich programmiere jedenfalls meine Leos immer so, das sie die typischen Tastaturkürzel an Zusi senden, also eine 8 für Fahrschalter auf oder eine 2 für FS ab.
Wie das genau geht ist hier ja im Nachbarthread mit einigen Beispielen recht ausführlich dargestellt.
Viele Grüße, Arne
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Ardunio Leonardo Programmieren
Hallo,
ich habe hinbekommen, dass der Arduino wie ein HID Controller erkannt wird, nun habe ich noch das Problem, dass die Analogeingänge zufällige Werte liefern, wenn ich nichts anschließe, schließe ich mein 10k Poti an, bleiben die Werte gleich, das Passiert ebenfalls, wenn ich die Kabel aneinanderhalte, ich verbinde das eine Kabel mit der Mitte, das andere mit dem Äußeren, ich habe schon beide Ausprobiert, nichts hat sich geändert. Die Tasten funktionieren einwandfrei, die Verbindung zu Windows auch, ich habe sie mit festen Werten getestet. Bin ein 14 Jähriger Schüler, was der Grund für meine schlechten Elektrotechnischen Kenntnisse ist. Bitte helft mir!
Gruß Gero
ich habe hinbekommen, dass der Arduino wie ein HID Controller erkannt wird, nun habe ich noch das Problem, dass die Analogeingänge zufällige Werte liefern, wenn ich nichts anschließe, schließe ich mein 10k Poti an, bleiben die Werte gleich, das Passiert ebenfalls, wenn ich die Kabel aneinanderhalte, ich verbinde das eine Kabel mit der Mitte, das andere mit dem Äußeren, ich habe schon beide Ausprobiert, nichts hat sich geändert. Die Tasten funktionieren einwandfrei, die Verbindung zu Windows auch, ich habe sie mit festen Werten getestet. Bin ein 14 Jähriger Schüler, was der Grund für meine schlechten Elektrotechnischen Kenntnisse ist. Bitte helft mir!
Gruß Gero
Zuletzt geändert von Gero am 10.05.2014 10:50:37, insgesamt 1-mal geändert.
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Ardunio Leonardo Programmieren
Nun habe ich alles noch einmal ausprobiert, leider besteht das Problem mit den Potis immer noch, muss ich einstellen, welchen Widerstand das Poti hat?
Danke
Danke
- Carsten Hölscher
- Administrator
- Beiträge: 33432
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Vielleicht zeigst Du mal, was genau Du gemacht hast. Also z.B. Code im Arduino und ein Foto des Aufbaus.
Carsten
Carsten
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Hallo,
Hier der Code:
Das Ganze ist mit dem LeoJoy Treiber verbunden, was bei den Knöpfen bereits Funktioniert.
Verbunden ist das Poti mit A1 und +5V, am Messgerät ist es in Ordnung. Schließe ich es an, zeigt der Eingang einen leicht schwankenden Wert an, stecke ich es aber aus, so werden irgendwelche zufälligen Werte angezeigt.
Meine Frage: Kann man das mit einem Befehl lösen?
Gruß Gero
Hier der Code:
Code: Alles auswählen
/*
LeoJoy Sample Code
Alan Chatham - 2013
unojoy.com
Hardware - Attach buttons to any of the pins 2-12, A4 and A5
to ground, and see different controller buttons
be pressed.
Analog stick controls can be enabled by removing
some comments at the bottom, since it's way
easier to test just with some wire and not have
to go drag out some pots.
This code is in the public domain
*/
/* Usage of LeoJoy
The dataForController_t struct is the core of the library.
You'll create an instance of that and manipulate it,
then use the Joystick.setControllerData function to send that data out.
The two main functions that LeoJoy! adds are
- Joystick.setControllerData(dataForController_t)
This actually updates the USB controller. Edit the dataForController_t struct
as much as you like before pushing it out the USB interface with this function.
- getBlankDataForController()
This utility function returns a dataForController_t object, with no buttons pressed
and both of the analog sticks centered. Handy!
So, basically, you'll do something like this:
void loop(void){
// Set up an empty controller data struct
dataForController_t joystickData = getBlankDataForController();
// Set some of the buttons
joystickData.squareOn = someBooleanInput();
// Send the data over USB to the PC
Joystick.setControllerData(joystickData);
}
The fields of the dataForController_t stuct are below.
The struct is hard-coded into the USB communications library of LeoJoy,
so it's not designed to be changed.
typedef struct dataForController_t
{
uint8_t triangleOn : 1; // Each of these member variables
uint8_t circleOn : 1; // control if a button is off or on
uint8_t squareOn : 1; // For the buttons,
uint8_t crossOn : 1; // 0 is off
uint8_t l1On : 1; // 1 is on
uint8_t l2On : 1;
uint8_t l3On : 1; // The : 1 here just tells the compiler
uint8_t r1On : 1; // to only have 1 bit for each variable.
// This saves a lot of space for our type!
uint8_t r2On : 1;
uint8_t r3On : 1;
uint8_t selectOn : 1;
uint8_t startOn : 1;
uint8_t homeOn : 1;
uint8_t dpadLeftOn : 1;
uint8_t dpadUpOn : 1;
uint8_t dpadRightOn : 1;
uint8_t dpadDownOn : 1;
uint8_t padding : 7; // We end with 7 bytes of padding to make sure we get our data aligned in bytes
uint8_t leftStickX : 8; // Each of the analog stick values can range from 0 to 255
uint8_t leftStickY : 8; // 0 is fully left or up
uint8_t rightStickX : 8; // 255 is fully right or down
uint8_t rightStickY : 8; // 128 is centered.
// Important - analogRead(pin) returns a 10 bit value, so if you're getting strange
// results from analogRead, you may need to do (analogRead(pin) >> 2) to get good data
} dataForController_t;
*/
void setup(){
setupPins();
}
void loop(){
// Always be getting fresh data
dataForController_t controllerData = getControllerData();
// Then send out the data over the USB connection
// Joystick.set(controllerData) also works.
Joystick.setControllerData(controllerData);
}
void setupPins(void){
// Set all the digital pins as inputs
// with the pull-up enabled, except for the
// two serial line pins
for (int i = 2; i <= 12; i++){
pinMode(i, INPUT);
digitalWrite(i, HIGH);
}
pinMode(A4, INPUT);
digitalWrite(A4, HIGH);
pinMode(A5, INPUT);
digitalWrite(A5, HIGH);
}
dataForController_t getControllerData(void){
// Set up a place for our controller data
// Use the getBlankDataForController() function, since
// just declaring a fresh dataForController_t tends
// to get you one filled with junk from other, random
// values that were in those memory locations before
dataForController_t controllerData = getBlankDataForController();
// Since our buttons are all held high and
// pulled low when pressed, we use the "!"
// operator to invert the readings from the pins
controllerData.triangleOn = !digitalRead(2);
controllerData.circleOn = !digitalRead(3);
controllerData.squareOn = !digitalRead(4);
controllerData.crossOn = !digitalRead(5);
controllerData.dpadUpOn = !digitalRead(6);
controllerData.dpadDownOn = !digitalRead(7);
controllerData.dpadLeftOn = !digitalRead(8);
controllerData.dpadRightOn = !digitalRead(9);
controllerData.l1On = !digitalRead(10);
controllerData.r1On = !digitalRead(11);
controllerData.selectOn = !digitalRead(12);
controllerData.startOn = !digitalRead(A4);
controllerData.homeOn = !digitalRead(A5);
// Set the analog sticks
// Since analogRead(pin) returns a 10 bit value,
// we need to perform a bit shift operation to
// lose the 2 least significant bits and get an
// 8 bit number that we can use
controllerData.leftStickX = analogRead(A0);// analogRead(A0) >> 2;
controllerData.leftStickY = analogRead(A1);//analogRead(A1) >> 2;
controllerData.rightStickX = analogRead(A2);//analogRead(A2) >> 2;
controllerData.rightStickY = analogRead(A3);//analogRead(A3) >> 2;
// And return the data!
return controllerData;
}
Verbunden ist das Poti mit A1 und +5V, am Messgerät ist es in Ordnung. Schließe ich es an, zeigt der Eingang einen leicht schwankenden Wert an, stecke ich es aber aus, so werden irgendwelche zufälligen Werte angezeigt.
Meine Frage: Kann man das mit einem Befehl lösen?
Gruß Gero
Zuletzt geändert von Max Senft am 11.05.2014 20:59:42, insgesamt 2-mal geändert.
Grund: Den Code in ein Code-Block gepackt.
Grund: Den Code in ein Code-Block gepackt.
- nonesense
- Beiträge: 506
- Registriert: 15.07.2006 12:50:10
- Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla - Wohnort: Köln
- Kontaktdaten:
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Moin,
wenn nichts an die Analogeneingänge angeschlossen wird, nehmen die Rauschen auf. Wie eine Antenne.
Deswegen die Zufälligen Werte.
Ich sehe auch keinen Grund, im fertigen Aufbau das Poti abzuklemmen.
Gruß
Jens
wenn nichts an die Analogeneingänge angeschlossen wird, nehmen die Rauschen auf. Wie eine Antenne.
Deswegen die Zufälligen Werte.
Ich sehe auch keinen Grund, im fertigen Aufbau das Poti abzuklemmen.
Gruß
Jens
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Das ist mir auch aufgefallen, aber es ist das Problem, dass immer ein gleichbleibender und nur um ca 5-10 Schritte schwankender Wert ausgegeben wird, wenn ich ein Poti anschließe und dran drehe, ich habe auch verschiedene Widerstände ausprobiert, ich habe so ein bisschen das Gefühl, dass der Controller kaputt ist.
Gruß
Gero
Gruß
Gero
- Carsten Hölscher
- Administrator
- Beiträge: 33432
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Hast Du mal systematisch getestet? 2 Festwiderstände statt Poti usw.?
Carsten
Carsten
- Arne aus dem Norden
- Beiträge: 721
- Registriert: 25.12.2011 14:28:21
- Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
- Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Probiers aus. Lade das hier hoch und teste bei geöffnetem Serial Monitor nacheinander mit entsprechend geändertem Pin A0 bis A5 durch.Gero hat geschrieben:ich habe so ein bisschen das Gefühl, dass der Controller kaputt ist.
Außerdem: warum tun sich hier alle bei Problemen immer so schwer, einfach mal ein Handyfoto ihres elektrischen Aufbaus zu zeigen?
Code: Alles auswählen
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1);
}
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Ich lese nur etwas von Analogeingang, Poti und +5V. Fehlt da nicht ne Masse am dritten Pin des Potis? Oder kann man da auch wieder irgendwelche internen Pulldowns nutzen, deren Aktivierung ich aber nirgends im Quellcode finde?
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Hallo und erstmal Danke!
Ich habe das Poti mit der Masse verbunden, das Funktioniert nun einwandfrei, vorher habe ich es aber schonmal ausprobiert, damals blieb es ohne Erfolg.
Ich werde wahrscheinlich bald mit neuen Fragen auftauchen, ich baue grob ein Pult der Br146.
Gruß
Gero
Ich habe das Poti mit der Masse verbunden, das Funktioniert nun einwandfrei, vorher habe ich es aber schonmal ausprobiert, damals blieb es ohne Erfolg.
Ich werde wahrscheinlich bald mit neuen Fragen auftauchen, ich baue grob ein Pult der Br146.
Gruß
Gero
- nonesense
- Beiträge: 506
- Registriert: 15.07.2006 12:50:10
- Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla - Wohnort: Köln
- Kontaktdaten:
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Google: "arduino interner pulldown"Thomas U. hat geschrieben:Ich lese nur etwas von Analogeingang, Poti und +5V. Fehlt da nicht ne Masse am dritten Pin des Potis? Oder kann man da auch wieder irgendwelche internen Pulldowns nutzen, deren Aktivierung ich aber nirgends im Quellcode finde?
Im erstes Ergebnis liest, wie das geht:
pinMode(pin, INPUT); // Anschluss als Eingang definieren
digitalWrite(pin, HIGH); // Pull Up Widerstand aktivieren
Gleiches geht auch als Pulldown.
Das funktioniert aber nur mit den digitalen Anschlüssen.
Gruß
Jens
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Arduino Leonardo - Analogeingänge Funktionieren nicht
Heute habe ich mich an die Taster gewagt. Ich habe drei Schaltbau-Taster/Schalter genommen, die vermutlich aus einer Einheitslok stammen. Habe es ausprobiert und festgestellt, dass ich nun gar nicht mehr die Tastatur benutzen kann, um Eingaben zu machen, ich konnte nur noch mit den Tastern steuern. Weil ich aber aus Kostengründen keine Bügel/Hauptschalter etc. Taster habe möchte, möchte ich noch Eingaben über eine Tastatur machen. Wie kann ich das umsetzen? Gibt es da einen Trick?
Gruß
Gero
Gruß
Gero
Zuletzt geändert von Gero am 20.05.2014 21:03:12, insgesamt 1-mal geändert.
-
- Beiträge: 71
- Registriert: 30.04.2014 12:49:56
- Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen
Re: Fahrpult 146 Schülerptojekt
Ich bin nun mit dem Elektonischen Teil fast fertig, ich brauche nur noch Maße und die Abstände von den Hebeln. Hat die jemand?
Dann würde ich anfangen, die Hebel zu bauen, hat jemand schon Erfahrung mit Holzgestellen für die Hebel gemacht? Soll ich lieber Metall nehmen? Schonmal Danke im Voraus!
Gruß Gero
Dann würde ich anfangen, die Hebel zu bauen, hat jemand schon Erfahrung mit Holzgestellen für die Hebel gemacht? Soll ich lieber Metall nehmen? Schonmal Danke im Voraus!
Gruß Gero
- Carsten Hölscher
- Administrator
- Beiträge: 33432
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Fahrpult 146 Schülerptojekt
Mir ist jetzt nicht ganz klar, was Du brauchst - vielleicht etwas ausführlicher?
Carsten
Carsten