#include const int numberOfShiftRegisters = 3; // number of shift registers attached in series int serialDataPin = 2; // DS int clockPin = 4; // SHCP int latchPin = 3; // STCP ShiftRegister74HC595 sr(serialDataPin, clockPin, latchPin); int dot1 = 5; int dot2 = 6; int dot3 = 7; int dot4 = 8; int wait = 150; void setup() { // Set the Dot pins as output pinMode(dot1, OUTPUT); pinMode(dot2, OUTPUT); pinMode(dot3, OUTPUT); pinMode(dot4, OUTPUT); // and turn off the Dots digitalWrite(dot1, LOW); digitalWrite(dot2, LOW); digitalWrite(dot3, LOW); digitalWrite(dot4, LOW); // Turn off all Tubes at first start sr.set(3, HIGH); sr.set(2, HIGH); sr.set(1, HIGH); sr.set(0, HIGH); sr.set(7, HIGH); sr.set(6, HIGH); sr.set(5, HIGH); sr.set(4, HIGH); sr.set(11, HIGH); sr.set(10, HIGH); sr.set(9, HIGH); sr.set(8, HIGH); sr.set(15, HIGH); sr.set(14, HIGH); sr.set(13, HIGH); sr.set(12, HIGH); sr.set(19, HIGH); sr.set(18, HIGH); sr.set(17, HIGH); sr.set(16, HIGH); sr.set(23, HIGH); sr.set(22, HIGH); sr.set(21, HIGH); sr.set(20, HIGH); } void loop() { // Turn on Dot 1 digitalWrite(dot1, HIGH); digitalWrite(dot2, LOW); digitalWrite(dot3, LOW); digitalWrite(dot4, LOW); delay(wait); // Turn on Dot 2 digitalWrite(dot1, LOW); digitalWrite(dot2, HIGH); digitalWrite(dot3, LOW); digitalWrite(dot4, LOW); delay(wait); // Turn on Dot 3 digitalWrite(dot1, LOW); digitalWrite(dot2, LOW); digitalWrite(dot3, HIGH); digitalWrite(dot4, LOW); delay(wait); // Turn on Dot 4 digitalWrite(dot1, LOW); digitalWrite(dot2, LOW); digitalWrite(dot3, LOW); digitalWrite(dot4, HIGH); delay(wait); // Turn on all Dots digitalWrite(dot1, HIGH); digitalWrite(dot2, HIGH); digitalWrite(dot3, HIGH); digitalWrite(dot4, HIGH); delay(wait*2); // Turn off all Dots digitalWrite(dot1, LOW); digitalWrite(dot2, LOW); digitalWrite(dot3, LOW); digitalWrite(dot4, LOW); delay(wait); // HOUER LEFT //case 1: sr.set(3, HIGH); sr.set(2, HIGH); sr.set(1, LOW); sr.set(0, LOW); delay(wait); //case 2: sr.set(3, LOW); sr.set(2, LOW); sr.set(1, HIGH); sr.set(0, LOW); delay(wait); //case 3: sr.set(3, LOW); sr.set(2, LOW); sr.set(1, LOW); sr.set(0, LOW); delay(wait); //case 4: sr.set(3, LOW); sr.set(2, LOW); sr.set(1, LOW); sr.set(0, HIGH); delay(wait); //case 5: sr.set(3, HIGH); sr.set(2, LOW); sr.set(1, LOW); sr.set(0, LOW); delay(wait); //case 6: sr.set(3, HIGH); sr.set(2, LOW); sr.set(1, LOW); sr.set(0, HIGH); delay(wait); //case 7: sr.set(3, LOW); sr.set(2, LOW); sr.set(1, HIGH); sr.set(0, HIGH); delay(wait); //case 8: sr.set(3, HIGH); sr.set(2, LOW); sr.set(1, HIGH); sr.set(0, HIGH); delay(wait); //case 9: sr.set(3, HIGH); sr.set(2, LOW); sr.set(1, HIGH); sr.set(0, LOW); delay(wait); //case 0: sr.set(3, LOW); sr.set(2, HIGH); sr.set(1, LOW); sr.set(0, LOW); delay(wait); //case OFF: sr.set(3, HIGH); sr.set(2, HIGH); sr.set(1, HIGH); sr.set(0, HIGH); delay(wait); // HOUER RIGHT //case 1: sr.set(7, HIGH); sr.set(6, HIGH); sr.set(5, LOW); sr.set(4, LOW); delay(wait); //case 2: sr.set(7, LOW); sr.set(6, LOW); sr.set(5, HIGH); sr.set(4, LOW); delay(wait); //case 3: sr.set(7, LOW); sr.set(6, LOW); sr.set(5, LOW); sr.set(4, LOW); delay(wait); //case 4: sr.set(7, LOW); sr.set(6, LOW); sr.set(5, LOW); sr.set(4, HIGH); delay(wait); //case 5: sr.set(7, HIGH); sr.set(6, LOW); sr.set(5, LOW); sr.set(4, LOW); delay(wait); //case 6: sr.set(7, HIGH); sr.set(6, LOW); sr.set(5, LOW); sr.set(4, HIGH); delay(wait); //case 7: sr.set(7, LOW); sr.set(6, LOW); sr.set(5, HIGH); sr.set(4, HIGH); delay(wait); //case 8: sr.set(7, HIGH); sr.set(6, LOW); sr.set(5, HIGH); sr.set(4, HIGH); delay(wait); //case 9: sr.set(7, HIGH); sr.set(6, LOW); sr.set(5, HIGH); sr.set(4, LOW); delay(wait); //case 0: sr.set(7, LOW); sr.set(6, HIGH); sr.set(5, LOW); sr.set(4, LOW); delay(wait); //case OFF: sr.set(7, HIGH); sr.set(6, HIGH); sr.set(5, HIGH); sr.set(4, HIGH); delay(wait); // MINUTE LEFT //case 1: sr.set(11, HIGH); sr.set(10, HIGH); sr.set(9, LOW); sr.set(8, LOW); delay(wait); //case 2: sr.set(11, LOW); sr.set(10, LOW); sr.set(9, HIGH); sr.set(8, LOW); delay(wait); //case 3: sr.set(11, LOW); sr.set(10, LOW); sr.set(9, LOW); sr.set(8, LOW); delay(wait); //case 4: sr.set(11, LOW); sr.set(10, LOW); sr.set(9, LOW); sr.set(8, HIGH); delay(wait); //case 5: sr.set(11, HIGH); sr.set(10, LOW); sr.set(9, LOW); sr.set(8, LOW); delay(wait); //case 6: sr.set(11, HIGH); sr.set(10, LOW); sr.set(9, LOW); sr.set(8, HIGH); delay(wait); //case 7: sr.set(11, LOW); sr.set(10, LOW); sr.set(9, HIGH); sr.set(8, HIGH); delay(wait); //case 8: sr.set(11, HIGH); sr.set(10, LOW); sr.set(9, HIGH); sr.set(8, HIGH); delay(wait); //case 9: sr.set(11, HIGH); sr.set(10, LOW); sr.set(9, HIGH); sr.set(8, LOW); delay(wait); //case 0: sr.set(11, LOW); sr.set(10, HIGH); sr.set(9, LOW); sr.set(8, LOW); delay(wait); //case OFF: sr.set(11, HIGH); sr.set(10, HIGH); sr.set(9, HIGH); sr.set(8, HIGH); delay(wait); // MINUTE RIGHT //case 1: sr.set(15, HIGH); sr.set(14, HIGH); sr.set(13, LOW); sr.set(12, LOW); delay(wait); //case 2: sr.set(15, LOW); sr.set(14, LOW); sr.set(13, HIGH); sr.set(12, LOW); delay(wait); //case 3: sr.set(15, LOW); sr.set(14, LOW); sr.set(13, LOW); sr.set(12, LOW); delay(wait); //case 4: sr.set(15, LOW); sr.set(14, LOW); sr.set(13, LOW); sr.set(12, HIGH); delay(wait); //case 5: sr.set(15, HIGH); sr.set(14, LOW); sr.set(13, LOW); sr.set(12, LOW); delay(wait); //case 6: sr.set(15, HIGH); sr.set(14, LOW); sr.set(13, LOW); sr.set(12, HIGH); delay(wait); //case 7: sr.set(15, LOW); sr.set(14, LOW); sr.set(13, HIGH); sr.set(12, HIGH); delay(wait); //case 8: sr.set(15, HIGH); sr.set(14, LOW); sr.set(13, HIGH); sr.set(12, HIGH); delay(wait); //case 9: sr.set(15, HIGH); sr.set(14, LOW); sr.set(13, HIGH); sr.set(12, LOW); delay(wait); //case 0: sr.set(15, LOW); sr.set(14, HIGH); sr.set(13, LOW); sr.set(12, LOW); delay(wait); //case OFF: sr.set(15, HIGH); sr.set(14, HIGH); sr.set(13, HIGH); sr.set(12, HIGH); delay(wait); // SECOND LEFT //case 1: sr.set(19, HIGH); sr.set(18, HIGH); sr.set(17, LOW); sr.set(16, LOW); delay(wait); //case 2: sr.set(19, LOW); sr.set(18, LOW); sr.set(17, HIGH); sr.set(16, LOW); delay(wait); //case 3: sr.set(19, LOW); sr.set(18, LOW); sr.set(17, LOW); sr.set(16, LOW); delay(wait); //case 4: sr.set(19, LOW); sr.set(18, LOW); sr.set(17, LOW); sr.set(16, HIGH); delay(wait); //case 5: sr.set(19, HIGH); sr.set(18, LOW); sr.set(17, LOW); sr.set(16, LOW); delay(wait); //case 6: sr.set(19, HIGH); sr.set(18, LOW); sr.set(17, LOW); sr.set(16, HIGH); delay(wait); //case 7: sr.set(19, LOW); sr.set(18, LOW); sr.set(17, HIGH); sr.set(16, HIGH); delay(wait); //case 8: sr.set(19, HIGH); sr.set(18, LOW); sr.set(17, HIGH); sr.set(16, HIGH); delay(wait); //case 9: sr.set(19, HIGH); sr.set(18, LOW); sr.set(17, HIGH); sr.set(16, LOW); delay(wait); //case 0: sr.set(19, LOW); sr.set(18, HIGH); sr.set(17, LOW); sr.set(16, LOW); delay(wait); //case OFF: sr.set(19, HIGH); sr.set(18, HIGH); sr.set(17, HIGH); sr.set(16, HIGH); delay(wait); // SECOND RIGHT //case 1: sr.set(23, HIGH); sr.set(22, HIGH); sr.set(21, LOW); sr.set(20, LOW); delay(wait); //case 2: sr.set(23, LOW); sr.set(22, LOW); sr.set(21, HIGH); sr.set(20, LOW); delay(wait); //case 3: sr.set(23, LOW); sr.set(22, LOW); sr.set(21, LOW); sr.set(20, LOW); delay(wait); //case 4: sr.set(23, LOW); sr.set(22, LOW); sr.set(21, LOW); sr.set(20, HIGH); delay(wait); //case 5: sr.set(23, HIGH); sr.set(22, LOW); sr.set(21, LOW); sr.set(20, LOW); delay(wait); //case 6: sr.set(23, HIGH); sr.set(22, LOW); sr.set(21, LOW); sr.set(20, HIGH); delay(wait); //case 7: sr.set(23, LOW); sr.set(22, LOW); sr.set(21, HIGH); sr.set(20, HIGH); delay(wait); //case 8: sr.set(23, HIGH); sr.set(22, LOW); sr.set(21, HIGH); sr.set(20, HIGH); delay(wait); //case 9: sr.set(23, HIGH); sr.set(22, LOW); sr.set(21, HIGH); sr.set(20, LOW); delay(wait); //case 0: sr.set(23, LOW); sr.set(22, HIGH); sr.set(21, LOW); sr.set(20, LOW); delay(wait); //case OFF: sr.set(23, HIGH); sr.set(22, HIGH); sr.set(21, HIGH); sr.set(20, HIGH); delay(wait); }