Im moment arbeite ich an eine stark erweiterte Version vom
rcc (real cockpit connector) als kompletter Gamedash zur Ansteuerung von unterschiedlichster Hardware.
Ein einfaches Möglichkeit um z.b. eine Drehzahlanzeige in einem Cockpit zu steuern wäre die Kontrolle mit einem Servo.
/*
This is a servo sample for rcc with rpm
http://www.arduino.cc/en/Tutorial/Sweep
*/
#include Servo myservo; // create servo object to control a servo,
//twelve servo objects can be created on most boards
String ver = "2.0.0.3";
const int servPin = 9; // Servo Pin
const int nChar = 30; // size of char
String inString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
void setup() {
myservo.attach(servPin); // attaches the servo to the servo object
inString.reserve(nChar);
Serial.begin(38400);
}
void readdata() {
if (stringComplete) {
if (inString.substring(0, 2) == "RR") {
int vRpm = inString.substring(2, 6).toInt();
int pos = map(vRpm, 0, 800, 255, 0);
myservo.write(pos);
}
inString = "";
stringComplete = false;
}
}
void serialReadEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inString += inChar;
if (inChar == ';') {
stringComplete = true;
}
}
}
void loop() {
serialReadEvent();
readdata();
}
Da ich ein wenig Zeit hatte habe ich wieder ein wenig am rcc – real cockpit connector gearbeitet.
rcc unterstützt ab jetzt die 11 gängigsten Autosimulationen:
American Truck Simulator, Assetto Corsa, Dirt3, Dirt Rally, Euro Truck Simulator 2, GRID Autosport,
Live for Speed, Project Cars, RaceRoom Racing Experience, rFactor, rFactor2
.. mit den Grundfunktionen „Speed, Rpm, Fuel, Gear, Temp“
In dieser Version sind noch erweiterete Telemetrydaten für Project Cars hinzugekommen.
(Drücke, Temperaturen von Bremsen, Öl etc., Schäden usw.)
Gestern sind aus „good old China“ meine Breakoutboards für den Arduino Nano und den Mega gekommen.
(Für den Uno lohnt sich das für mich nicht da der Nano die geichen Funktionen hat und wesentlich kleiner ist)
Warum Breakoutboard ?
Ganz einfach. Die Arduinos sind super um kleine Schaltungen mit Steckverbindungen zu testen. Für eine dauerhafte Lösung muss dann aber gelötet oder geklebt werden.
Da ich meine Arduinos aber stellenweise für die unterschiedlichsten Projekte verwende musste eine andere Lösung her.
Bei beiden Shields lassen sich die Kabel normal anschrauben.
Beim MegaShield besteht zusätzlich noch die möglichkeit den Arduino weiter für Steckverbindungen und/oder Lötverbindungen zu nutzen.
Rundum durchdacht.
Das Mega Shield gibt es hier: zur Bucht
da es ja jetzt Mode ist sich auf Facebook zu präsentieren…
Ich würde mich freuen wenn Ihr dort meine Seite „liken“ würdet.
Nachdem jetzt doch einige gefragt haben ob ich nicht noch mehr Telemetrydaten in das rcc – (real cockpit connecktor) einbauen kann, habe ich mich entschlossen den Wünschen nachzukommen da ich ja sowieso noch einige Ideen im Hinterkopf habe.
Eine davon ist das Anzeigen der Telemetrydaten auf einem 20×4 LCD (HD44780) .
Da ich schon einige andere Arduinoprojekte mit LCD gemacht habe war die Umsetzung recht schnell erledigt.
Zu diesem Zweck habe ich mir noch ein I2C-controler besorgt. Schnell und unkompliziert, denn damit ist das LCD mit 4 Kabeln an den Arduino angeschlossen.
Jaaaa… und damit fingen die Probleme dann auch an.
Da die Daten relativ schnell kommen und nicht statisch sind, lassen sich die Werte, trotz Gegenprüfung auf alte und neue Werte im Code, schlecht lesen.
Also die grosse Glaskugel befragt und dort bin ich auf verschiedene Anschlussmöglichkeiten mit doch sehr verschiedenen Geschwindigkeiten gestoßen.
Stichwort NewLiquidCrystal
Unter anderem finden wir im oben genannen Link folgende Tabelle.
Interface ByteXfer 16x2FPS Ftime
----------------------------------------------
4BIT 338us 86.92 11.51ms (orignal Arduino IDE Liquid Crystal)
4BIT 98us 298.58 3.35ms
SR2W 76us 388.62 2.57ms
SR_2W 72us 406.90 2.46ms
SR_3W 61us 480.03 2.08ms
SR3W 102us 287.92 3.47ms
I2C 957us 30.74 32.25ms
I2C (GPIO) 839us 35.07 28.51ms
SR1W_HC 94us 311.41 3.21ms
SR1W_SC 116us 252.83 3.96ms
Diese Werte musste ich doch sofort überprüfen da es doch schon ein gravierender Unterschied geben soll. Zu diesem Zweck hab ich mir also ein noch rumliegendes
Shiftregister Breakout mit 74HC595 mit einem LCD 16×2 und ein LCD 16×2 mit I2C geschnappt und verkabelt.
LCD mit I2C | LCD mit SR_3W |
Fazit:
I2C ist schön weil es schnell angeschlossen ist. Aber für schnelle Zeichenwechsel auf einem LCD ist es leider nicht zu gebrauchen.
Ich werde dann jetzt mal mein Cockpit wieder zerlegen und wacker ein bischen umlöten.
Ich würde mich freuen wenn ihr hier in den Kommentaren eure Videos zu eurem Rennsimulator und auch eure Einstellungen mit dem verwendeten Tacho eintragt.
I would be glad if you chose to use here in the comments your videos to your racesimulator and also your settings with the speedometer used.
Andreas