Hi
I'm trying to make a gear shift.
The gear shift works fine up and down.
but I try to make it go to 0 when I press both buttons with this code:
//--- gear nutral
if(gearUp == true && gearDn == true){
Gear = 0;
gearUp = false;
gearDn = false;}
but it does not work, it just changes 1 up and 1 quickly.
Can you help?
here is all the code.
boolean gearUp = false;
boolean gearDn = false;
int lastUpdate;
// --------- Delay
int shiftDelay = 50;
// --------- Button
int Buttonup = 10;
boolean ButtonUpPressed = false;
int Buttondown = 11;
boolean ButtonDownPressed = false;
boolean Toggle = false;
boolean ToggleDown = false;
int Gear = 0;
int DebounceUp = 0;
int DebounceDown = 0;
// --------------------- Outputs
int valve1 = 2;
int valve2 = 3;
int valve3 = 4;
int valve4 = 5;
int valve5 = 6;
int valve6 = 7;
int valve7 = 8;
void setup() {
pinMode(12, OUTPUT); digitalWrite(12, HIGH);
pinMode(Buttonup, INPUT);
pinMode(Buttondown, INPUT);
pinMode(valve1, OUTPUT);digitalWrite(valve1, HIGH);
pinMode(valve2, OUTPUT);digitalWrite(valve2, HIGH);
pinMode(valve3, OUTPUT);digitalWrite(valve3, HIGH);
pinMode(valve4, OUTPUT);digitalWrite(valve4, HIGH);
pinMode(valve5, OUTPUT);digitalWrite(valve5, HIGH);
pinMode(valve6, OUTPUT);digitalWrite(valve6, HIGH);
pinMode(valve7, OUTPUT);digitalWrite(valve7, HIGH);
Serial.begin(9600);
}
void loop() {
// UP----------------------------------------------
if(digitalRead(Buttonup) == LOW)
{
DebounceUp++;
}else
{
DebounceUp = 0;
ButtonUpPressed = false;
Toggle = false;
}
if(DebounceUp >= 5000)
{
ButtonUpPressed = true;
}
if(ButtonUpPressed == true && Toggle == false)
{
Toggle = true;
gearUp = true;
}
// DOWN---------------------------------------------------------
if(digitalRead(Buttondown) == LOW)
{
DebounceDown++;
}else
{
DebounceDown = 0;
ButtonDownPressed = false;
ToggleDown = false;
}
if(DebounceDown >= 5000)
{
ButtonDownPressed = true;
}
if(ButtonDownPressed == true && ToggleDown == false)
{
ToggleDown = true;
gearDn = true;
}
//--- gear nutral
if(gearUp == true && gearDn == true){
Gear = 0;
gearUp = false;
gearDn = false;
}
//--- gear up
if (gearUp == true && Gear<6)
Gear++;
gearUp = false;
//--- gear dn
if (gearDn == true && Gear>0){
Gear--;
gearDn = false;
}
if(lastUpdate != Gear){
lastUpdate = Gear;
Serial.println(Gear);
switch (Gear) {
case 0:
digitalWrite(valve1, LOW);
delay(shiftDelay);
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 1:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, LOW);
delay(shiftDelay);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 2:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, LOW);
delay(shiftDelay);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 3:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, LOW);
delay(shiftDelay);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 4:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, LOW);
delay(shiftDelay);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 5:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, LOW);
delay(shiftDelay);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, HIGH);
break;
case 6:
digitalWrite(valve1, HIGH);
digitalWrite(valve2, HIGH);
digitalWrite(valve3, HIGH);
digitalWrite(valve4, HIGH);
digitalWrite(valve5, HIGH);
digitalWrite(valve6, HIGH);
digitalWrite(valve7, LOW);
delay(shiftDelay);
digitalWrite(valve7, HIGH);
break;
}
}
}
