Schubregler mit Ardunino

Ziel:
Schubregler für Steuerung per Fuß mit 0% bis 100% Schub und WEP/Afterburner(AB),
Ausführung als Gleitschiene, nicht als Pedal

Gleitschiene – Baumarkt Schubladen Halbauszug 300mm
auf ein Holzlatte schrauben

bei 23 cm ein schwererer Gang/Lauf  der Schiene, bis zum Ende von 28 cm 
0-23 cm soll 0-100% werden und ab 23 cm soll es WEP/Afterburner(AB) fungieren

Gameport-USB Adapter + Adapter D-Sub 15 Pin schraubbar
conrad.de/de/usb-20-anschlusskabel-1x-usb-20-stecker-a-1x-d-sub-stecker-15pol-150-m-schwarz-ul-zertifiziert-logilink-986536.html
conrad.de/de/d-sub-stiftleiste-180-polzahl-15-16-delock-65275-1-st-788419.html

de.wikipedia.org/wiki/Gameport   Pinbelegung erlaubt 4 Achsen und 4 Buttons.
Eine Achse benötigt einen 100kOhm Widerstand, 5V Pin und GND Pin und Achse Pin. Ein Button funktioniert durch schließen der ButtonPins gegen Ground.
http://www.epanorama.net/documents/joystick/pc_joystick.html
https://vvvv.org/documentation/howto-gameport

wir benötigen also für die Achse einen 100kOhm Potentionmeter.
Diese Potetiometer müssen wir von aussen ansteuern, drehen, also per Arduino einen Servo benutzen, der das Poti aufmontiert bekommt und gegen einen festmontierten Schraubenzieher dreht.
Den Servo kann man auf exakte Positioen fahren in xGrad Schritten.
modelcraft standard-servo rs 2
servodatabase.com/servo/modelcraft/rs-2
macht 203 grad… darauf verteilen wir die 0% bis 100% + WEP/Afterburner(AB)

Arduino steuert also den Servo, der steuert den Potentiometer und damit die GameportAchse.
Arduino muss auf anderen Seite aber erst einmal Sensorwerte einlesen, um dann Servo/Poti/Achse zu steuern.

Sensor Ansatz 1: Ultraschallsensor,
dazu ein Brettchen als Reflektor per Metallwinkel an das vorderer Halbauszugende montieren,
der Ultraschallsensor hat leider einen Messbereich in Form eines Trichters/Winkels..
siehe Grafik: komputer.de/zen/index.php?main_page=product_info&products_id=329
vielleicht könnte man mit einem Trichter um den Sensor herum, den Zielbereich eingrenzen ohne Reflektionen zurückzusenden.. 
Fazit:
Aktuell hab ich diese Lösung erstmal verworfen

Sensor Ansatz 2: TOF time of flight,
Adafruit VL6180X Time of Flight Distance Ranging Sensor (VL6180)  – 5 to 200mm
adafruit.com/product/3316
Adafruit VL53L0X Time of Flight Distance Sensor – ~30 to 1000mm
adafruit.com/product/3317
learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout
sensoren basieren auf SensorChip von ST-Electronics:
st.com/en/imaging-and-photonics-solutions/proximity-sensors.html?querycriteria=productId=SC1934
Adruino Sensoren sind aber aktuell in den einschlägigen Shops nicht verfügbar (2017-KW01).
Fazit:
Aufgrund der Nichtverfügbarkeit dieser Sensoren erstmal verworfen.

Sensor Ansatz 3: Lichtschranken, LinearEncoder
Lichtschranken aus SEN0038
dfrobot.com/wiki/index.php/Wheel_Encoders_for_DFRobot_3PA_and_4WD_Rovers_(SKU:SEN0038)
soll lineare Ausführung werden, daher als EncoderRad eine EncodeLeiste…
ein Strichholz unterbricht, eine Nadel hingegen nicht, daher muss EncoderLeiste mindestens je Spalt und Stift die Abmessung eines Streichholzes haben.
Ein Kamm mittlerer Ausprägung, nicht zu fein, nicht zu grob, funktioniert.
Eine durchsehbare Plastikleiste mit schmalen schwarzen Klebenstreifen funktioniert.
Problem: man kann zwar sehr schön die Zähne/Stifte der Encoderleiste auslesen,
aber man erhält keine Richtung.. 
Für Richtungsmessung benötigt man zweite Lichtschranke, die kann auf selber oder eigener Encoderleiste sitzen, wichtig ist das beide Lichtschranken, LOW/HIGH in Phase 50% Überdeckung messen.. und hier kommen wir wieder an die Grenzen, denn die benötigte Genauigkeit muss man Vergrößerung der Luftspalt und Zähne/Stifte erkaufen, womit die Auflösung geringer wird…
Fazit:
Aufgrund der benötigten und schwer umzusetzenden Genauigkeiten nicht weiter verfolgt.

Sensor Ansatz 4: Widerstandsmessung
elektronik-labor.de/Arduino/Ohmmeter.html
anstelle des zu messenden Widerstandes benutzen wir einen magnetic ReedSwitch plus Widerstand…  wir benutzen 20 + 2 dieser Sets… an der Schiene/Halbauszug einen Magnet befestigen, der die ReedSwitch von normal open dann closed.. dann kann der Widerstand an diesem ReedSwitch gelesen werden..
Mit/ohne Interrupt.. testen…
Damit der ReedSwitch auch wirklich lang genug geschlossen wird, sollte der Magnet lang genug sein,.. mehrere Magnete möglich,..
die günstigen ReedSwitches sind meist aus Glas, es empfiehlt sich aber die haltbareren  
conrad.de/de/Search.html?searchType=REGULAR&search=reed%20kontakt&sort=Price-asc
https://www.conrad.de/de/reed-relais-1-schliesser-24-vdc-05-a-10-w-sip-4-mes1a24-504610.html
diese ReedSwitch-Widerstands-Kombis kann man nun parallel anlegen..
auf 23 cm sind 20 Sets anzulegen, damit wir Auflösung von 5% Schritten haben, also haben wir je Set etwas mehr als 1 cm…  das läßt sicher gut mit Lochplatine 2,54 Rastermaß umsetzen
conrad.de/de/Search.html?search=lochplatine&sc.queryFromSuggest=true&searchType=SUGGEST&searchSource=SUGGEST_QUERY&category=%1FElektromechanik%1FLeiterplatten 
darauf die Reed-Switches und Widerstände auflöten.. die eine Seite geht zum Arduino AnalogPin X und die andere Seite zum Arduino GND. 
Fazit:
aktuell noch dran..