thanks larryd!
I checked the link and fixed my code, but in the simulator, it does not work.
I'm trying to replace my trigger on my airsoft gun with Arduino and I want to make different modes ˝safety, semi, 2 burst-shot, full auto, restart˝, and every mode has its own led and it's own code on how to control the motor, except the restart, that just restarts the count. I want to switch from mode to mode with a button.
my pushbutton is wired in S1.
this is the full code
const int mode = 2;
const int led1 = 7;
const int led2 = 8;
const int led3 = 9;
const int led4 = 10;
const int led5 = 11;
const int t = 4;
const int r = 5;
const int q = 6;
int tStatus = 0;
int rStatus = 0;
int modeState = 0;
int modecount = 0;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(q, OUTPUT);
pinMode(t, INPUT);
pinMode(r, INPUT);
pinMode(mode, INPUT);
Serial.begin(9600);
}
void loop() {
tStatus = digitalRead(t);
rStatus = digitalRead(r);
modeState = digitalRead(mode);
if (modeState)
{
modecount++;
}
if (modecount == 0) //semi
{
Serial.println("mode = 0");
off();
digitalWrite(led1, HIGH);
digitalWrite(q, LOW);
}
if (modecount == 1) //2 semi
{
Serial.println("mode = 1");
off();
digitalWrite(led2, HIGH);
if (tStatus == LOW && rStatus == HIGH)
{
digitalWrite(q, LOW);
delay(750);
} else {
digitalWrite(q, HIGH);
}
}
else if (modecount == 2) //2 burst shot
{
Serial.println("mode = 2");
off();
digitalWrite(led3, HIGH);
for (int i = 0; i <= 2; i++) {
if (tStatus == LOW && rStatus == HIGH)
{
digitalWrite(q, LOW);
delay(750);
} else {
digitalWrite(q, HIGH);
}
}
}
else if (modecount == 3) //full auto
{
Serial.println("mode = 3");
off();
digitalWrite(led4, HIGH);
if (tStatus == LOW && rStatus == HIGH)
{
digitalWrite(q, LOW);
} else {
digitalWrite(q, HIGH);
}
}
else if (modecoutn == 4)//restart
{
Serial.println("mode = 4");
modecount = 0;
}
}
void off() {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}