I'm working on a project with 4 inputs and 7 possible outputs on an Arduino Uno. Based on any combination of those inputs, I need to run a specific "loop" that will repeat until there is a change in ANY of the 4 inputs. Specifically:
- Input 1 = loop 1
- Input 2 = loop 2
- Input 3 = loop 3
- Input 4 = loop 4
- Input 2 and 3 = loop 5
- Input 2 and 4 = loop 6
- No input = do nothing
So I need to constantly read the 4 inputs and change output loops accordingly. I have basic Arduino knowledge but am stumped.
This is what I've tried - I have 4 input pins and 8 output pins
int outPin = 0;
int inPin = 0;
int CAR = 0;
int pinRead = 0;
void setup()
{
for (int outPin = 3; outPin < 11; outPin++); { //set pins 3 thru 10 as OUTPUT
pinMode(outPin, OUTPUT);
}
for (int inPin = 9; inPin < 13; inPin++); { //set pins 9 thru 12 as INPUT
pinMode(inPin, INPUT);
}
}
void loop()
{
for (int CAR = 3; CAR <11; CAR++); { //set all pins to LOW
digitalWrite(CAR, LOW);
}
// BRAKE
{while (digitalRead(9 == HIGH) && digitalRead(10 == LOW) && digitalRead (11 == LOW) && digitalRead(12 == LOW)) {
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}}
// LEFT
{while (digitalRead(9 == LOW) && digitalRead(10 == HIGH) && digitalRead(11 == LOW) && digitalRead(12 == LOW)) {
digitalWrite(0, HIGH);
delay (200);
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
delay (200);
digitalWrite(2, HIGH);
delay (200);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay (200);
// RIGHT
}}
{while (digitalRead(9 == LOW) && digitalRead(10 == LOW) && digitalRead(11 == HIGH) && digitalRead(12 == LOW)) {
digitalWrite(5, HIGH);
delay (200);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
delay (200);
digitalWrite(7, HIGH);
delay (200);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay (200);
// HAZARD
}}
{while (digitalRead(9 == LOW) && digitalRead(10 == LOW) && digitalRead(11 == LOW) && digitalRead(12 == HIGH)) {
digitalWrite(0, HIGH);
digitalWrite(5, HIGH);
delay (200);
digitalWrite(1, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay (200);
digitalWrite(2, HIGH);
digitalWrite(7, HIGH);
delay (200);
for (int CAR = 0; CAR < 8; CAR++); { //set all pins to LOW
digitalWrite(CAR, LOW);
delay (200);}}
// BRAKELEFT
}
{while ( digitalRead(9 == HIGH) && digitalRead(10 == HIGH) && digitalRead(11 == LOW) && digitalRead(12 == LOW)) {
digitalWrite(0, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
delay (200);
digitalWrite(1, HIGH);
digitalWrite(3, HIGH);
delay (200);
digitalWrite(2, HIGH);
delay (200);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay (200);
}
}
// BRAKERIGHT
{while (digitalRead(9 == HIGH) && digitalRead(10 == LOW) && digitalRead(11 == HIGH) && digitalRead(12 == LOW)) {
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
delay (200);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
delay (200);
digitalWrite(7, HIGH);
delay (200);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay (200);
}
}
// NOTHING
{while (digitalRead(9 == LOW) && digitalRead(10 == LOW) && digitalRead(11 == LOW) && digitalRead(12 == LOW)) {
for (int CAR = 0; CAR < 8; CAR++); { //set all pins to LOW
digitalWrite(CAR, LOW); }}
}
}
delay()
.