I have 2 buttons. one is mode select and one is the trigger. when i hit the mode select id like the led to flash a different color indicating im in that mode. i only want it to flash 1 time per mode just to indicate what one of the 3 modes im in.
const int solenoidpin = 5;
const int triggerswitchpin = 7;
boolean running = false;
const int buttonPin = 2;
const int ledPin = 13;
const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode (13, OUTPUT); //LASER
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode (solenoidpin, OUTPUT);
pinMode(triggerswitchpin, INPUT);
digitalWrite(triggerswitchpin, HIGH);
Serial.begin(9600);
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(100);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(100);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(100);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(100);
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(100);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
Serial.println("off");
}
delay(50);
}
lastButtonState = buttonState;
if (buttonPushCounter == 0) {
if (digitalRead(triggerswitchpin) == HIGH)
{
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(20);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
digitalWrite(solenoidpin, HIGH);
delay(9);
digitalWrite(solenoidpin, LOW);
while (digitalRead(triggerswitchpin) == HIGH) {
digitalWrite(solenoidpin, LOW);
}
}
else if (digitalRead(triggerswitchpin) == LOW)
digitalWrite(solenoidpin, LOW);
}
if (buttonPushCounter == 1) {
if (digitalRead(triggerswitchpin) == HIGH)
{
digitalWrite(solenoidpin, HIGH);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay (20);
digitalWrite(solenoidpin, LOW);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(80);
digitalWrite(solenoidpin, HIGH);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay (20);
digitalWrite(solenoidpin, LOW);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(80);
digitalWrite(solenoidpin, HIGH);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay (20);
digitalWrite(solenoidpin, LOW);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(80);
while (digitalRead(triggerswitchpin) == HIGH) {
digitalWrite(solenoidpin, LOW);
}
}
else if (digitalRead(triggerswitchpin) == LOW)
digitalWrite(solenoidpin, LOW);
}
if (buttonPushCounter == 2) {
if (digitalRead(triggerswitchpin) == HIGH)
{
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(20);
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
digitalWrite(solenoidpin, HIGH);
delay (20);
digitalWrite(solenoidpin, LOW);
delay(20);
}
else if (digitalRead(triggerswitchpin) == LOW)
digitalWrite(solenoidpin, LOW);
}
if (buttonPushCounter == 3) {
digitalWrite(solenoidpin, LOW);
buttonPushCounter = 0;
}
}