#define DATA_PIN 8 // Pin connected to DS of 74HC595 and D8 of Arduino
#define LATCH_PIN 9 // Pin connected to STCP of 74HC595 and D9 of Arduino
#define CLOCK_PIN 10 // Pin connected to SHCP of 74HC595 and D10 of Arduino
// How many shift registers
#define NUM_SHIFT_REGS 8
#define true HIGH
#define false LOW
const uint8_t numOfRegisterPins = NUM_SHIFT_REGS * 8;
bool registers[numOfRegisterPins];
void SR_Init() {
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
clearRegisters();
writeRegisters();
}
bool toggle = false;
void clearRegisters() {
// Reset all register pins
for (int i = numOfRegisterPins; i >= 0; i--) {
registers[i] = LOW;
}
}
void setRegisterPin(int index, int value) {
// Set an individual pin HIGH or LOW
registers[index] = value;
}
void writeRegisters() {
// Set and display registers
digitalWrite(LATCH_PIN, LOW);
for (int i = numOfRegisterPins; i >= 0; i--) {
digitalWrite(CLOCK_PIN, LOW);
digitalWrite(DATA_PIN, registers[i]);
digitalWrite(CLOCK_PIN, HIGH);
}
digitalWrite(LATCH_PIN, HIGH);
}
void write(int pinNumber, bool mode)
{
registers[pinNumber] = mode;
writeRegisters();
}
void setup() {
SR_Init();
}
void loop() {
//intro
innerBlueRun();
innerWhiteBlink();
innerBlueAndWhiteBlink();
innerBlueAndWhiteBlink();
innerBlueAndWhiteBlink();
innerBlueAndWhiteBlink();
delay(200);
//oryana reng sulu
innerRedRun();
fourInnerRedOn2();
innerRedBlink();
innerRedBlink();
innerRedBlink();
innerGreenRun();
fourInnerGreenOn2();
innerGreenBlink();
innerGreenBlink();
innerGreenBlink();
//miyayaliwang kule
runningRedAndGreen();
redGreenLedsOff();
runningRedAndGreenBack();
delay(100);
whiteLedsOn();
delay(500);
offAllLeds();
delay(200);
//malungut,masaya,makatula//
yellowLedsOn();
blueLedsOn();
delay(1000);
redGreenLedsOn();
delay(1000);
whiteLedsOn();
delay(800);
offAllLeds();
delay(200);
blinkThreeLayersInner();
//tara na't manalbe//
yellowLedsOn();
delay(500);
yellowLedsOff();
delay(200);
runOuterBothSides();
offAllLeds();
delay(100);
runOuterBothSides();
offAllLeds();
delay(100);
//kalagu mo o parul ko
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(200);
//tune kang pakamalan
runOnOuterLeds();
runOffOuterLeds();
delay(100);
offAllLeds();
delay(100);
//ning balang pusung Fernandino
fourInnerRedOn2();
fourInnerGreenOn2();
whiteLedsOn();
delay(100);
blinkFourLayersInner();
delay(100);
runOuterBothSides();
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//pang matwa o pang anak
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//dapat kang pagmaragul
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
//second bell chimes
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(300);
//oryana reng sulu
innerRedRun();
fourInnerRedOn2();
innerRedBlink();
innerRedBlink();
innerRedBlink();
innerGreenRun();
fourInnerGreenOn2();
innerGreenBlink();
innerGreenBlink();
innerGreenBlink();
//miyayaliwang kule
runningRedAndGreen();
redGreenLedsOff();
runningRedAndGreenBack();
delay(100);
whiteLedsOn();
delay(500);
offAllLeds();
delay(200);
//malungut,masaya,makatula//
yellowLedsOn();
blueLedsOn();
delay(1000);
redGreenLedsOn();
delay(1000);
whiteLedsOn();
delay(800);
offAllLeds();
delay(200);
blinkThreeLayersInner();
//tara na't manalbe//
yellowLedsOn();
delay(500);
yellowLedsOff();
delay(200);
runOuterBothSides();
offAllLeds();
delay(100);
runOuterBothSides();
offAllLeds();
delay(100);
//kalagu mo o parul ko
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(200);
onAllLeds();
delay(200);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(200);
//tune kang pakamalan
runOnOuterLeds();
runOffOuterLeds();
delay(100);
offAllLeds();
delay(100);
//ning balang pusung Fernandino
fourInnerRedOn2();
fourInnerGreenOn2();
whiteLedsOn();
delay(100);
blinkFourLayersInner();
delay(100);
runOuterBothSides();
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//pang matwa o pang anak
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//dapat kang pagmaragul
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(500);
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//pang matwa o pang anak
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
//'yan ing parul
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
delay(100);
onAllLeds();
delay(100);
offAllLeds();
//dapat kang pagmaragul
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(200);
runOuterBothSides();
delay(200);
rippleLeds();
rippleLeds();
rippleLeds();
offAllLeds();
delay(300);
//last chimes
runLeftHalf();
runRightHalf();
//runOffOuterLeds2(); - delay
offAllLeds();
delay(200);
onAllLeds();
delay(1000);
offAllLeds();
delay(500);
onAllLeds();
delay(3000);
offAllLeds();
delay(3000);
}
void innerBlueRun(){
for(int i=39; i>=32; i--){
write(i,HIGH);
delay(500);
}
}
void innerBlueBlink(){
write(32,HIGH);
write(33,HIGH);
write(34,HIGH);
write(35,HIGH);
write(36,HIGH);
write(37,HIGH);
write(38,HIGH);
write(39,HIGH);
delay(200);
write(32,LOW);
write(33,LOW);
write(34,LOW);
write(35,LOW);
write(36,LOW);
write(37,LOW);
write(38,LOW);
write(39,LOW);
delay(200);
}
void innerWhiteBlink(){
for(int i=0; i<=3; i++){
write(56,HIGH);
write(57,HIGH);
write(58,HIGH);
delay(200);
write(56,LOW);
write(57,LOW);
write(58,LOW);
delay(200);
}
}
void innerBlueAndWhiteBlink(){
write(32,HIGH);
write(33,HIGH);
write(34,HIGH);
write(35,HIGH);
write(36,HIGH);
write(37,HIGH);
write(38,HIGH);
write(39,HIGH);
write(56,HIGH);
write(57,HIGH);
write(58,HIGH);
delay(200);
write(32,LOW);
write(33,LOW);
write(34,LOW);
write(35,LOW);
write(36,LOW);
write(37,LOW);
write(38,LOW);
write(39,LOW);
write(56,LOW);
write(57,LOW);
write(58,LOW);
delay(200);
}
void innerRedRun(){
write(55,HIGH);
delay(200);
write(55,LOW);
write(54,HIGH);
delay(200);
write(54,LOW);
write(51,HIGH);
delay(200);
write(51,LOW);
write(50,HIGH);
delay(200);
write(50,LOW);
write(47,HIGH);
delay(200);
write(47,LOW);
write(46,HIGH);
delay(200);
write(46,LOW);
write(43,HIGH);
delay(200);
write(43,LOW);
write(42,HIGH);
delay(200);
write(42,LOW);
}
void innerRedBlink(){
write(55,HIGH);
write(54,HIGH);
write(51,HIGH);
write(50,HIGH);
write(47,HIGH);
write(46,HIGH);
write(43,HIGH);
write(42,HIGH);
delay(200);
write(55,LOW);
write(54,LOW);
write(51,LOW);
write(50,LOW);
write(47,LOW);
write(46,LOW);
write(43,LOW);
write(42,LOW);
delay(200);
}
void innerGreenRun(){
write(41,HIGH);
delay(200);
write(41,LOW);
write(40,HIGH);
delay(200);
write(40,LOW);
write(53,HIGH);
delay(200);
write(53,LOW);
write(52,HIGH);
delay(200);
write(52,LOW);
write(49,HIGH);
delay(200);
write(49,LOW);
write(48,HIGH);
delay(200);
write(48,LOW);
write(45,HIGH);
delay(200);
write(45,LOW);
write(44,HIGH);
delay(200);
write(44,LOW);
}
void innerGreenBlink(){
write(41,HIGH);
write(40,HIGH);
write(53,HIGH);
write(52,HIGH);
write(49,HIGH);
write(48,HIGH);
write(45,HIGH);
write(44,HIGH);
delay(200);
write(41,LOW);
write(40,LOW);
write(53,LOW);
write(52,LOW);
write(49,LOW);
write(48,LOW);
write(45,LOW);
write(44,LOW);
delay(200);
}
void runningRedAndGreen(){
for(int i=55; i>=40; i--){
write(i,HIGH);
delay(100);
}
}
void runningRedAndGreenBack(){
for(int i=40; i<=55; i++){
write(i,HIGH);
delay(100);
}
}
void blueLedsOn(){
for(int i=32; i<=39; i++){
write(i,HIGH);
}
}
void blueLedsOff(){
for(int i=32; i<=39; i++){
write(i,LOW);
}
}
void redGreenLedsOn(){
for(int i=40; i<=55; i++){
write(i,HIGH);
}
}
void redGreenLedsOff(){
for(int i=40; i<=55; i++){
write(i,LOW);
}
}
void whiteLedsOn(){
for(int i=56; i<=59; i++){
write(i,HIGH);
}
}
void whiteLedsOff(){
for(int i=56; i<=59; i++){
write(i,LOW);
}
}
void yellowLedsOn(){
for(int i=24; i<=31; i++){
write(i,HIGH);
}
}
void yellowLedsOff(){
for(int i=24; i<=31; i++){
write(i,LOW);
}
}
void outerLedsOn(){
write(0,HIGH);
write(1,HIGH);
write(2,HIGH);
write(3,HIGH);
write(4,HIGH);
write(5,HIGH);
write(6,HIGH);
write(7,HIGH);
write(8,HIGH);
write(9,HIGH);
write(10,HIGH);
write(11,HIGH);
write(12,HIGH);
write(13,HIGH);
write(14,HIGH);
write(15,HIGH);
write(16,HIGH);
write(17,HIGH);
write(18,HIGH);
write(19,HIGH);
write(20,HIGH);
write(21,HIGH);
write(22,HIGH);
write(23,HIGH);
}
void outerLedsOff(){
write(0,LOW);
write(1,LOW);
write(2,LOW);
write(3,LOW);
write(4,LOW);
write(5,LOW);
write(6,LOW);
write(7,LOW);
write(8,LOW);
write(9,LOW);
write(10,LOW);
write(11,LOW);
write(12,LOW);
write(13,LOW);
write(14,LOW);
write(15,LOW);
write(16,LOW);
write(17,LOW);
write(18,LOW);
write(19,LOW);
write(20,LOW);
write(21,LOW);
write(22,LOW);
write(23,LOW);
}
void yellowRunLeds(){
for(int i=24; i<=31; i++){
write(i,HIGH);
delay(100);
}
for(int i=31; i<=24; i--){
write(100,LOW);
delay(50);
}
}
void blinkThreeLayersInner(){
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
delay(100);
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
delay(100);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
delay(100);
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
delay(100);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
delay(100);
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
delay(100);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
delay(100);
}
void blinkFourLayersInner(){
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
yellowLedsOn();
delay(200);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
yellowLedsOff();
delay(200);
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
yellowLedsOn();
delay(200);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
yellowLedsOff();
delay(200);
blueLedsOn();
redGreenLedsOn();
whiteLedsOn();
yellowLedsOn();
delay(200);
blueLedsOff();
redGreenLedsOff();
whiteLedsOff();
yellowLedsOff();
delay(200);
}
void runOuterBothSides(){
write(12,HIGH);
write(13,HIGH);
delay(70);
write(0,HIGH);
write(14,HIGH);
delay(70);
write(1,HIGH);
write(15,HIGH);
delay(70);
write(2,HIGH);
write(16,HIGH);
delay(70);
write(3,HIGH);
write(17,HIGH);
delay(70);
write(4,HIGH);
write(18,HIGH);
delay(70);
write(5,HIGH);
write(19,HIGH);
delay(70);
write(6,HIGH);
write(20,HIGH);
delay(70);
write(7,HIGH);
write(21,HIGH);
delay(70);
write(8,HIGH);
write(22,HIGH);
delay(70);
write(9,HIGH);
write(23,HIGH);
delay(70);
write(10,HIGH);
write(11,HIGH);
delay(70);
write(10,LOW);
write(11,LOW);
delay(70);
write(9,LOW);
write(23,LOW);
delay(70);
write(8,LOW);
write(22,LOW);
delay(70);
write(7,LOW);
write(21,LOW);
delay(70);
write(6,LOW);
write(20,LOW);
delay(70);
write(5,LOW);
write(19,LOW);
delay(70);
write(4,LOW);
write(18,LOW);
delay(70);
write(3,LOW);
write(17,LOW);
delay(70);
write(2,LOW);
write(16,LOW);
delay(70);
write(1,LOW);
write(15,LOW);
delay(70);
write(0,LOW);
write(14,LOW);
delay(70);
write(12,LOW);
write(13,LOW);
delay(70);
}
void runLeftHalf(){
write(12,HIGH);
delay(50);
for (int i=0; i<=10; i++){
write(i,HIGH);
delay(50);
}
for (int i=10; i>=0; i--){
write(i,LOW);
delay(50);
}
write(12,LOW);
delay(50);
}
void runRightHalf(){
for (int i=13; i<=23; i++){
write(i,HIGH);
delay(50);
}
write(11,HIGH);
delay(50);
write(11,LOW);
delay(50);
for (int i=23; i>=13; i--){
write(i,LOW);
delay(50);
}
}
void runOnOuterLeds(){
for (int i=0; i<=11; i++){
write(i, HIGH);
delay(100);
}
for (int i=23; i>=12; i--){
write(i, HIGH);
delay(100);
}
}
void runOffOuterLeds(){
for (int i=0; i<=11; i++){
write(i, HIGH);
delay(100);
write(i,LOW);
}
for (int i=23; i>=12; i--){
write(i, HIGH);
delay(100);
write(i,LOW);
}
}
void runOffOuterLeds2(){
for (int i=0; i<=11; i++){
write(i, HIGH);
delay(50);
write(i,LOW);
}
for (int i=23; i>=12; i--){
write(i, HIGH);
delay(50);
write(i,LOW);
}
}
void onAllLeds(){
for (int i=0; i<=59; i++){
write(i,HIGH);
}
}
void offAllLeds(){
for (int i=0; i<=59; i++){
write(i,LOW);
}
}
void fourInnerRedOn(){
write(55,HIGH);
write(54,HIGH);
delay(100);
write(51,HIGH);
write(50,HIGH);
delay(100);
write(46,HIGH);
write(47,HIGH);
delay(100);
write(42,HIGH);
write(43,HIGH);
delay(100);
}
void fourInnerRedOff(){
write(55,LOW);
write(54,LOW);
delay(100);
write(51,LOW);
write(50,LOW);
delay(100);
write(46,LOW);
write(47,LOW);
delay(100);
write(42,LOW);
write(43,LOW);
delay(100);
}
void fourInnerGreenOn(){
write(41,HIGH);
write(40,HIGH);
delay(100);
write(53,HIGH);
write(52,HIGH);
delay(100);
write(48,HIGH);
write(49,HIGH);
delay(100);
write(44,HIGH);
write(45,HIGH);
delay(100);
}
void fourInnerGreenOff(){
write(41,LOW);
write(40,LOW);
delay(100);
write(53,LOW);
write(52,LOW);
delay(100);
write(48,LOW);
write(49,LOW);
delay(100);
write(44,LOW);
write(45,LOW);
delay(100);
}
void fourInnerRedOn2(){
write(55,HIGH);
write(54,HIGH);
delay(200);
write(51,HIGH);
write(50,HIGH);
delay(200);
write(46,HIGH);
write(47,HIGH);
delay(200);
write(42,HIGH);
write(43,HIGH);
delay(200);
}
void fourInnerGreenOn2(){
write(41,HIGH);
write(40,HIGH);
delay(200);
write(53,HIGH);
write(52,HIGH);
delay(200);
write(48,HIGH);
write(49,HIGH);
delay(200);
write(44,HIGH);
write(45,HIGH);
delay(200);
}
void rippleLeds(){
whiteLedsOn();
delay(100);
whiteLedsOff();
redGreenLedsOn();
delay(100);
redGreenLedsOff();
yellowLedsOn();
delay(100);
yellowLedsOff();
outerLedsOn();
delay(100);
outerLedsOff();
}