Code: Select all
/* ----------------------------------------------------------------------------------------------------------------------------------------------- */
/*
How many LEDs are in the circuit.
*/
const int PIN_COUNT = 8;
/*
Holds the digital pin numbers that the LEDs are hooked to. If you add more LEDs to your
circuit, make sure you add the correct pin numbers to the array.
*/
const int ledPins[] = {2,3,4,5,6,7,8,9};
/*
Initialize the pins on the Arduino used for this circuit.
*/
void setup()
{
for (int i = 0; i < PIN_COUNT; i++)
{
pinMode(ledPins[i], OUTPUT);
}
}
/*
Method called by Arduino to do its work.
*/
void loop()
{
ascend();
descend();
allOnOff();
progression1();
allOnOff();
progression2();
allOnOff();
progression3();
allOnOff();
progression4();
allOnOff();
progression5();
allOnOff();
progression6();
allOnOff();
}
/*
Flash each LED in ascending order.
*/
void ascend()
{
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
}
/*
Flash each LED in descending order.
*/
void descend()
{
int descending[] = {9,8,7,6,5,4,3,2};
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(descending[i], HIGH);
delay(100);
digitalWrite(descending[i], LOW);
}
}
/*
Progression 1: In ascending order, turn on an LED and
then turn on/off for all LEDs following it. Finally,
turn off the initial LED and move to the next one
until all are exhausted.
0,1,2,3,4,5,6,7
1,2,3,4,5,6,7
2,3,4,5,6,7
etc
*/
void progression1()
{
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], HIGH);
for (int j = i + 1; j < PIN_COUNT; j++)
{
digitalWrite(ledPins[j], HIGH);
delay(100);
digitalWrite(ledPins[j], LOW);
}
digitalWrite(ledPins[i], LOW);
}
}
/*
Progression 2: In ascending order, turn on an LED and
then swing up and back through the remaining lEDs, turning
each on/off in order. Finally, turn off the initial LED
and move on to the next one until all are exhausted:
0,1,2,3,4,5,6,7,6,5,4,3,2,1,0
1,2,3,4,5,6,7,6,5,4,3,2,1
2,3,4,5,6,7,6,5,4,3,2
etc.
*/
void progression2()
{
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], HIGH);
for (int j = i + 1; j < PIN_COUNT; j++)
{
digitalWrite(ledPins[j], HIGH);
delay(100);
digitalWrite(ledPins[j], LOW);
}
for (int j = PIN_COUNT - 1; j > i; j--)
{
digitalWrite(ledPins[j], HIGH);
delay(100);
digitalWrite(ledPins[j], LOW);
}
digitalWrite(ledPins[i], LOW);
}
}
/*
Progression 3: In ascending order, turn on an LED and
then turn on/off all remaining LEDs in order including
the ones that proceed it:
0,1,2,3,4,5,6,7
1,2,3,4,5,6,7,0
2,3,4,5,6,7,0,1
etc.
*/
void progression3()
{
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], HIGH);
for (int j = i + 1; j < i + PIN_COUNT; j++)
{
digitalWrite(ledPins[j% PIN_COUNT], HIGH);
delay(100);
digitalWrite(ledPins[j%PIN_COUNT], LOW);
}
digitalWrite(ledPins[i], LOW);
}
}
/*
Progression 4: In ascending order, turn on an LED
and then swing through all the remaining LEDs
including the ones that precede the starting point:
0,1,2,3,4,5,6,7,6,5,4,3,2,1,0
1,2,3,4,5,6,7,0,7,6,5,4,3,2,1
2,3,4,5,6,7,0,1,0,7,6,5,4,3,2
etc.
*/
void progression4() {
for (int i = 0; i < PIN_COUNT; i++) {
digitalWrite(ledPins[i], HIGH);
for (int j = i + 1; j < i + PIN_COUNT; j++)
{
digitalWrite(ledPins[j % PIN_COUNT], HIGH);
delay(100);
digitalWrite(ledPins[j % PIN_COUNT], LOW);
}
for (int j = i + PIN_COUNT - 2; j > i; j--)
{
digitalWrite(ledPins[j % PIN_COUNT], HIGH);
delay(100);
digitalWrite(ledPins[j % PIN_COUNT], LOW);
}
digitalWrite(ledPins[i], LOW);
}
}
/*
Progression 5: In ascending order, turn on an LED and then each
following it without turning every one. Once the loop is complete
turn all LEDs off and move to the next LED in order and repeat
0,1,2,3,4,5,6,7, all off
1,2,3,4,5,6,7, all off
2,3,4,5,6,7, all off
etc.
*/
void progression5() {
for (int i = 0; i < PIN_COUNT; i++)
{
for (int j = i; j < PIN_COUNT; j++)
{
digitalWrite(ledPins[j], HIGH);
delay(100);
}
delay(100);
allOff();
}
}
/*
Progression 6: Swing back and forth through the LEDs
moving inwards with each iteration, sort of like a
swing losing its momentum
0,1,2,3,4,5,6,7,6,5,4,3,2,1,0
1,2,3,4,5,6,5,4,3,2,1
2,3,4,5,4,3,2
3,4,3
*/
void progression6() {
for (int i = 0; i < PIN_COUNT/2; i++) {
for (int j = i; j < PIN_COUNT-i; j++){
digitalWrite(ledPins[j], HIGH);
delay(100 * (i + 1));
}
for (int j = PIN_COUNT - 1 - i; j > i; j--) {
digitalWrite(ledPins[j], LOW);
delay(100 * (i + 1));
}
allOff();
}
}
/*
Flash all the LEDs on/off once.
*/
void allOnOff() {
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], HIGH);
}
delay(200);
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], LOW);
}
}
/*
Turn all the LEDs off.
*/
void allOff() {
for (int i = 0; i < PIN_COUNT; i++)
{
digitalWrite(ledPins[i], LOW);
}
}