Skip to content

Instantly share code, notes, and snippets.

@VincentK16
Created April 24, 2013 07:13
Show Gist options
  • Save VincentK16/5450215 to your computer and use it in GitHub Desktop.
Save VincentK16/5450215 to your computer and use it in GitHub Desktop.
My First Stackable Circuit
int led1 = 5;
int led2 = 6;
int led3 = 7;
int led4 = 8;
int led5= 9;
int led6= 10;
int led7 = 11;
int BUTTON = 12;
void setup() {
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode (led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7,OUTPUT);
pinMode (BUTTON, INPUT);
digitalWrite(BUTTON, HIGH);
}
//
// Delay for a specified amount of time. Test the button and return to caller with the value 1
// if the button is pressed.
//
int MyDelay(int cnt) {
int i;
for (i=0; i<cnt; i++) {
delay(1);
if (digitalRead(BUTTON)==LOW) return 1;
}
return 0;
}
//
// Show the first pattern on the leds. Return to main loop to go to the next pattern if the
// button is pressed.
//
void Pattern1() {
while (true) {
digitalWrite(led1, 100);
digitalWrite(led2,100);
if (MyDelay(500)==1)return;
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
if (MyDelay(5)==1) return;
digitalWrite(led3,HIGH);
digitalWrite(led4, HIGH);
if (MyDelay(500)==1) return;
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
if (MyDelay(5)==1) return;
digitalWrite(led5,HIGH);
if (MyDelay(500)==1) return;
analogWrite(led5,LOW);
if (MyDelay(5)==1) return;
digitalWrite(led6,HIGH);
if (MyDelay(500)==1) return;
digitalWrite(led6,LOW);
if (MyDelay(5)==1) return;
digitalWrite(led7,HIGH);
if (MyDelay(500)==1) return;
digitalWrite(led7,LOW);
if (MyDelay(5)==1) return;
}
}
//
// Show the second pattern on the leds. Return to main loop to go to the next pattern if the
// button is pressed.
//
void Pattern2() {
while (true) {
digitalWrite(led1,100 );
digitalWrite(led2, 100);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
if (MyDelay(100)==1)return;
}
}
void Pattern3()
{
while(true){
analogWrite(led1,130 );
analogWrite(led2, 130);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
if (MyDelay(500)==1)return;
analogWrite(led1,0 );
analogWrite(led2, 0);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
if (MyDelay(500)==1)return;
}
}
void Pattern4()
{
while(true)
{
analogWrite(led1,0 );
analogWrite(led2, 0);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
if (MyDelay(100)==1)return;
}
}
void Pattern5()
{
while(true){
analogWrite(led1,130);
analogWrite(led2,130);
if (MyDelay(500)==1)return;
analogWrite(led1,0);
analogWrite(led2,0);
if (MyDelay(20)==1)return;
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
if (MyDelay(500)==1)return;
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
if (MyDelay(20)==1)return;
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(led5, fadeValue);
analogWrite(led6, fadeValue);
analogWrite(led7, fadeValue);
// wait for 30 milliseconds to see the dimming effect
if (MyDelay(30)==1)return;
}
// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
// sets the value (range from 0 to 255):
analogWrite(led5, fadeValue);
analogWrite(led6, fadeValue);
analogWrite(led7, fadeValue);
// wait for 30 milliseconds to see the dimming effect
if (MyDelay(30)==1)return;
}
if (MyDelay(200)==1)return;
}
}
void OffAndWait() {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
delay(100); // Wait for button to stop bouncing
while (digitalRead(BUTTON)==LOW) {
// Wait for button release
}
delay(1); // Wait for button to stop bouncing on release
}
void loop() {
while (true) {
Pattern2();
OffAndWait();
Pattern3();
OffAndWait();
Pattern1();
OffAndWait();
Pattern5();
OffAndWait();
Pattern4();
OffAndWait();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment