int upshiftbutton=5;
int downshiftbutton=4;
int sensorpin1=A0;
int sensorpin2=A2;
int sensorpin3=A1;
int upshiftcoil=10;
int downshiftcoil=8;
int sensorvalue1;
int sensorvalue2;
int sensorvalue3;
int upshiftint=7;
int downshiftint=6;
volatile int gearcounter=3;
int buttonState1;
int lastButtonState1 = LOW;
int buttonState2;
int lastButtonState2 = LOW;
long lastDebounceTime1 = 0;
long lastDebounceTime2 = 0;
long debounceDelay = 50;
void setup()
{
Serial.begin(9600);
pinMode(upshiftbutton,INPUT);
pinMode(downshiftbutton,INPUT);
pinMode(upshiftcoil,OUTPUT);
pinMode(downshiftcoil,OUTPUT);
pinMode(upshiftint,OUTPUT);
pinMode(downshiftint,OUTPUT);
pinMode(sensorpin1,INPUT);
pinMode(sensorpin2,INPUT);
pinMode(sensorpin3,INPUT);
attachInterrupt(0,UPSHIFT,RISING);
attachInterrupt(1,DOWNSHIFT,RISING);
}
void loop()
{
sensorvalue2=digitalRead(sensorpin2);
if(sensorvalue2==1)
{
digitalWrite(upshiftcoil,LOW);
}
sensorvalue3=digitalRead(sensorpin3);
if(sensorvalue3==1)
{
digitalWrite(downshiftcoil,LOW);
}
int reading1 = digitalRead(upshiftbutton); \debounce delay code
if (reading1!= lastButtonState1)
{
lastDebounceTime1 = millis();
}
if ((millis() - lastDebounceTime1) > debounceDelay)
{
buttonState1 = reading1;
}
digitalWrite(upshiftint, buttonState1);
lastButtonState1 = reading1;
int reading2 = digitalRead(downshiftbutton); \debounce code
if (reading2!= lastButtonState2)
{
lastDebounceTime2 = millis();
}
if ((millis() - lastDebounceTime2) > debounceDelay)
{
buttonState2 = reading2;
}
digitalWrite(downshiftint, buttonState2);
lastButtonState2 = reading2;
}
void UPSHIFT ()
{
int up=digitalRead(5);
if(up==1)
{
sensorvalue1=digitalRead(sensorpin1);
if (sensorvalue1==1 && gearcounter<6)
{
gearcounter++;
Serial.println(gearcounter);
digitalWrite(upshiftcoil,HIGH);
Serial.println("UPSHIFT");
}
}
}
void DOWNSHIFT ()
{
int down=digitalRead(4);
if(down==1)
{
sensorvalue1=digitalRead(sensorpin1);
if (sensorvalue1==1 && gearcounter>1)
{
gearcounter--;
Serial.println(gearcounter);
digitalWrite(downshiftcoil,HIGH);
Serial.println("DOWNSHIFT");
}
}
}
Right now I got rid of the unneeded interrupts by only letting the interrupt function do anything when the pushbuttons are pressed, when the Arduino is getting uploaded, no button is pressed hence it ignores the interrupt.
But is there any better way of doing this?