Hallo,
ich komme leider irgendwie nicht so richtig weiter, da der Code nicht das tut was ich gerne hätte.
Es geht darum, dass ich bei einem Fahrzeug den Gangwahlhebel umbauen möchte.
Während der original verbaute Gangwahlhebel zwischen Manuell und Automatik umschaltet (siehe Schaltplan aus dem Werkstatthandbuch; A/T DEVICE), ist es bei dem anderem Gangwahlhebel so, dass man den Hebel in einer Position hat, ihn nach rechts drückt, dabei der Taster betätigt wird und der Hebel dann wieder zurückgeht.
Dieses Signal müsste ich nun im Arduino erfassen und damit bei jeder Betätigung zwischen Automatik und Manuell wechseln.
Desweiteren sollen die Signale (im Code LED_UP, LED_DOWN und LED_MIDDLE genannt) nur leuchten, wenn aktuell der Manuelle Modus ist.
Den Aufbau habe ich wie folgt gemacht, doch anstatt dem Tacho habe ich LEDs für die Darstellung der einzelnen Pins genommen.
Hier ist der Code, wo ich nicht weiterkomme:
const int BUTTON_MODE = 2;
const int BUTTON_UP = 3;
const int BUTTON_DOWN = 4;
const int LED_UP = 9;
const int LED_MIDDLE = 10;
const int LED_DOWN = 11;
const int LED_AUTOMODE = 12;
void setup(){
pinMode(LED_AUTOMODE, OUTPUT);
pinMode(LED_MIDDLE, OUTPUT);
pinMode(LED_UP, OUTPUT);
pinMode(BUTTON_MODE, INPUT_PULLUP);
pinMode(BUTTON_UP, INPUT_PULLUP);
pinMode(BUTTON_DOWN, INPUT_PULLUP);
}
void loop(){
AUTOMODE:
if (digitalRead(BUTTON_MODE) == true) {
digitalWrite(LED_AUTOMODE, HIGH);
digitalWrite(LED_MIDDLE, LOW);
}
while(digitalRead(BUTTON_MODE) == true);
delay(50);
MANUELLMODE:
if (digitalRead(BUTTON_MODE) == false) {
digitalWrite(LED_AUTOMODE, LOW);
digitalWrite(LED_MIDDLE, HIGH);
digitalWrite(LED_UP, LOW);
digitalWrite(LED_DOWN, LOW);
}
while((digitalRead(BUTTON_UP) == true) || (digitalRead(BUTTON_DOWN) == true) || (digitalRead(BUTTON_MODE) == true));
delay(50);
//UPSHIFT
if (digitalRead(BUTTON_UP) == true) {
digitalWrite(LED_MIDDLE, LOW);
digitalWrite(LED_UP, HIGH);
digitalWrite(LED_DOWN, LOW);
}
else
{
digitalWrite(LED_MIDDLE, HIGH);
digitalWrite(LED_UP, LOW);
digitalWrite(LED_DOWN, LOW);
}
//DOWNSHIFT
if (digitalRead(BUTTON_DOWN) == true) {
digitalWrite(LED_MIDDLE, LOW);
digitalWrite(LED_UP, LOW);
digitalWrite(LED_DOWN, HIGH);
}
else
{
digitalWrite(LED_MIDDLE, HIGH);
digitalWrite(LED_UP, LOW);
digitalWrite(LED_DOWN, LOW);
}
//CHANGE INTO AUTOMODE
if (digitalRead(BUTTON_MODE) == true) {
goto AUTOMODE;
}
goto MANUELLMODE;
}