Sorry if I do not include everything that I needed in this, this is my first post. So I have been working on making an airlift gun have select fire modes using an Arduino nano, but when I use this code the gun starts shooting without me even touching the trigger. Any help would be greatly appreciated.
int led1 = 12;
int led2 = 11;
int led3 = 7;
int led4 = 10;
int led5 = 9;
int motor = 3;
int selector = 8;
int trigger = 5;
int A = 0;
int B = 0;
int count = 0;
int count2 = 0;
int buttonState = 0;
int lastState;
boolean motorState = false;
unsigned long motorStartTime;
void setup() {
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode (led5, OUTPUT);
pinMode (selector, INPUT_PULLUP);
pinMode (trigger, INPUT);
pinMode (motor, OUTPUT);
}
void loop() {
A = digitalRead (selector);
if (A!=B) {
if (A == HIGH) {
count++;
}
}
B = A;
if (count == 1) {
digitalWrite (led2, HIGH);
buttonState = digitalRead(trigger);
if (buttonState == HIGH) {
digitalWrite (motor, HIGH);
delay (10);
digitalWrite (motor, LOW);
}
}
if (count == 2) {
digitalWrite (led2, HIGH);
buttonState = digitalRead(trigger);
if (buttonState != lastState && motorState == false)
{
//Serial.println(buttonState? "HIGH" : "LOW");
motorStartTime = millis();
motorState = true;
}
lastState = buttonState;
if (motorState == true)
{
if (millis() - motorStartTime <= 10UL)
{
digitalWrite(motor, HIGH);
}
else
{
digitalWrite(motor, LOW);
motorState = false;
}
}
}
if (count == 3) {
digitalWrite (led3, HIGH);
buttonState = digitalRead(trigger);
if (buttonState == HIGH) {
digitalWrite (motor, HIGH);
delay (10);
digitalWrite (motor, LOW);
while (buttonState == HIGH) {
//Do nothing
}
}
}
if (count == 4) {
digitalWrite (led4, HIGH);
buttonState = digitalRead(trigger);
if (buttonState == HIGH) {
for (int count2=0; count2<3; count2++) {
digitalWrite (motor, HIGH);
delay (10);
digitalWrite (motor, LOW);
}
}
}
if (count == 5) {
digitalWrite (led5, HIGH);
buttonState = digitalRead(trigger);
if (buttonState == HIGH) {
for (int count2=0; count2<4; count2++) {
digitalWrite (motor, HIGH);
delay (10);
digitalWrite (motor, LOW);
}
}
}
if (count == 6) {
count = 0;
digitalWrite (led2, LOW);
digitalWrite (led3, LOW);
digitalWrite (led4, LOW);
digitalWrite (led5, LOW);
}
}