I believe the technical term for having efficient programming is to NOT have it like below:
int one = 2;
int two = 3;
int four = 4;
int eight = 5;
int button = 8;
int pressed;
int pressed2;
int current = 0;
void setup() {
pinMode(one, OUTPUT);
pinMode(two, OUTPUT);
pinMode(four, OUTPUT);
pinMode(eight, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
pressed = digitalRead(button);
delay(10);
pressed2 = digitalRead(button);
if (pressed == 1) {
if (pressed == pressed2) {
do
pressed = digitalRead(button);
while (pressed == 1);
delay(10);
if (current == 9) {
current = 0;
} else {
current = current + 1;
}
}
}
if (current == 0) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 1) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 2) {
digitalWrite(one, LOW);
digitalWrite(two, HIGH);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 3) {
digitalWrite(one, HIGH);
digitalWrite(two, HIGH);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 4) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 5) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 6) {
digitalWrite(one, LOW);
digitalWrite(two, HIGH);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 7) {
digitalWrite(one, HIGH);
digitalWrite(two, HIGH);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 8) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, HIGH);
} else if (current == 9) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, HIGH);
}
}
The above code works PERFECTLY fine. It is just an early start at making a binary clock but that is irrelevant at the moment.
What I want to do, is make this part of code SMALLER. This part of code is an example of INEFFICIENT programming.
if (current == 0) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 1) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 2) {
digitalWrite(one, LOW);
digitalWrite(two, HIGH);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 3) {
digitalWrite(one, HIGH);
digitalWrite(two, HIGH);
digitalWrite(four, LOW);
digitalWrite(eight, LOW);
} else if (current == 4) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 5) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 6) {
digitalWrite(one, LOW);
digitalWrite(two, HIGH);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 7) {
digitalWrite(one, HIGH);
digitalWrite(two, HIGH);
digitalWrite(four, HIGH);
digitalWrite(eight, LOW);
} else if (current == 8) {
digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, HIGH);
} else if (current == 9) {
digitalWrite(one, HIGH);
digitalWrite(two, LOW);
digitalWrite(four, LOW);
digitalWrite(eight, HIGH);
}
I just want to output a number from 0 to 9 onto 4 LEDs for Binary-Coded-Decimal. What fancy programming trick will make this like 1/10th of its size.