Components and supplies
Male/Female Jumper Wires
Arduino UNO
Circle Electronic Knight Rider
Apps and platforms
Arduino IDE
Project description
Code
74hc595 Shift Register Configuration
arduino
1#define LATCH 9 2#define CLOCK 10 3#define DATA 8 4static int led = 0; 5byte number[23] = {0b00000000, 60b00000001, 70b00000011, 80b00000111, 90b00001110, 100b00011100, 110b00111000, 120b01110000, 130b11100000, 140b11000000, 150b10000000, 160b00000000, 170b10000000, 180b11000000, 190b11100000, 200b01110000, 210b00111000, 220b00011100, 230b00001110, 240b00000111, 250b00000011, 260b00000001, 270b00000000 28}; 29void setup() { 30pinMode(CLOCK, OUTPUT); 31pinMode(DATA, OUTPUT); 32pinMode(LATCH, OUTPUT); 33} 34void loop() { 35static unsigned long time = millis(); 36if (millis() - time >= 80 && led <= 22) { 37time = millis(); 38led++; 39digitalWrite(LATCH, LOW); 40shiftOut(DATA, CLOCK, MSBFIRST, number[led]); 41digitalWrite(LATCH, HIGH); 42} 43if (led == 22) { 44led = 0; 45} 46}
Theme Music
arduino
1#define NOTE_B0 31 2#define NOTE_C1 33 3#define NOTE_CS1 35 4#define NOTE_D1 37 5#define NOTE_DS1 39 6#define NOTE_E1 41 7#define NOTE_F1 44 8#define NOTE_FS1 46 9#define NOTE_G1 49 10#define NOTE_GS1 52 11#define NOTE_A1 55 12#define NOTE_AS1 58 13#define NOTE_B1 62 14#define NOTE_C2 65 15#define NOTE_CS2 69 16#define NOTE_D2 73 17#define NOTE_DS2 78 18#define NOTE_E2 82 19#define NOTE_F2 87 20#define NOTE_FS2 93 21#define NOTE_G2 98 22#define NOTE_GS2 104 23#define NOTE_A2 110 24#define NOTE_AS2 117 25#define NOTE_B2 123 26#define NOTE_C3 131 27#define NOTE_CS3 139 28#define NOTE_D3 147 29#define NOTE_DS3 156 30#define NOTE_E3 165 31#define NOTE_F3 175 32#define NOTE_FS3 185 33#define NOTE_G3 196 34#define NOTE_GS3 208 35#define NOTE_A3 220 36#define NOTE_AS3 233 37#define NOTE_B3 247 38#define NOTE_C4 262 39#define NOTE_CS4 277 40#define NOTE_D4 294 41#define NOTE_DS4 311 42#define NOTE_E4 330 43#define NOTE_F4 349 44#define NOTE_FS4 370 45#define NOTE_G4 392 46#define NOTE_GS4 415 47#define NOTE_A4 440 48#define NOTE_AS4 466 49#define NOTE_B4 494 50#define NOTE_C5 523 51#define NOTE_CS5 554 52#define NOTE_D5 587 53#define NOTE_DS5 622 54#define NOTE_E5 659 55#define NOTE_F5 698 56#define NOTE_FS5 740 57#define NOTE_G5 784 58#define NOTE_GS5 831 59#define NOTE_A5 880 60#define NOTE_AS5 932 61#define NOTE_B5 988 62#define NOTE_C6 1047 63#define NOTE_CS6 1109 64#define NOTE_D6 1175 65#define NOTE_DS6 1245 66#define NOTE_E6 1319 67#define NOTE_F6 1397 68#define NOTE_FS6 1480 69#define NOTE_G6 1568 70#define NOTE_GS6 1661 71#define NOTE_A6 1760 72#define NOTE_AS6 1865 73#define NOTE_B6 1976 74#define NOTE_C7 2093 75#define NOTE_CS7 2217 76#define NOTE_D7 2349 77#define NOTE_DS7 2489 78#define NOTE_E7 2637 79#define NOTE_F7 2794 80#define NOTE_FS7 2960 81#define NOTE_G7 3136 82#define NOTE_GS7 3322 83#define NOTE_A7 3520 84#define NOTE_AS7 3729 85#define NOTE_B7 3951 86#define NOTE_C8 4186 87#define NOTE_CS8 4435 88#define NOTE_D8 4699 89#define NOTE_DS8 4978 90const int pinTone = 11; //buzzerpin 91typedef struct { 92 int note; 93 int tempo; 94} notesType; 95const notesType aNotes[] = { 96 // 1 97 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 98 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 99 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 100 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 101 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 102 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 103 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 104 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 105 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 106 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 107 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 108 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 109 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 110 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 111 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 112 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 113 // 2 114 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 115 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 116 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 117 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 118 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 119 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 120 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 121 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 122 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 123 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 124 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 125 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 126 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 127 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 128 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 129 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 130 // 3 131 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 132 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 133 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 134 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 135 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, 136 {NOTE_A4, 125}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 137 {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 138 {NOTE_GS4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, {NOTE_A4, 125}, 139 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 140 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 141 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 142 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 143 {NOTE_G4, 250}, {NOTE_GS4, 125}, {NOTE_G4, 125}, 144 {NOTE_G4, 125}, {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 145 {NOTE_GS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 146 {NOTE_FS4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, {NOTE_G4, 125}, 147 // solo 148 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_E5, 1500}, 149 {NOTE_A5, 250}, {NOTE_AS5, 125}, {NOTE_A5, 125}, {NOTE_E5, 1500}, 150 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_E5, 250}, {NOTE_A5, 250}, {NOTE_G5, 2000}, 151 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_E5, 1500}, 152 {NOTE_A5, 250}, {NOTE_AS5, 125}, {NOTE_A5, 125}, {NOTE_E5, 1500}, 153 {NOTE_A4, 250}, {NOTE_AS4, 125}, {NOTE_A4, 125}, {NOTE_E5, 250}, {NOTE_A5, 250}, {NOTE_AS5, 2500}, {NOTE_G5, 250}, {NOTE_A5, 500} 154}; 155int noteIndex = -1; 156int totalNotes; 157unsigned long tonePrevTime = 0; 158int noteDelay = aNotes[(noteIndex + 1)].tempo; 159unsigned long curTime = 0; 160int pinControlOut = 13; 161int pinControlIn = 12; 162int controlDelay = 1000; 163unsigned long controlPrevTime = 0; 164int _playNote = 0; 165#define LATCH 9 166#define CLOCK 10 167#define DATA 8 168static int led = 0; 169byte number[23] = {0b00000000, 170 0b00000001, 171 0b00000011, 172 0b00000111, 173 0b00001110, 174 0b00011100, 175 0b00111000, 176 0b01110000, 177 0b11100000, 178 0b11000000, 179 0b10000000, 180 0b00000000, 181 0b10000000, 182 0b11000000, 183 0b11100000, 184 0b01110000, 185 0b00111000, 186 0b00011100, 187 0b00001110, 188 0b00000111, 189 0b00000011, 190 0b00000001, 191 0b00000000 192 }; 193void setup() 194{ 195 pinMode(pinTone, OUTPUT); 196 totalNotes = sizeof(aNotes) / sizeof(notesType); pinMode(LATCH, OUTPUT); 197 pinMode(CLOCK, OUTPUT); 198 pinMode(DATA, OUTPUT); 199 pinMode(LATCH, OUTPUT); 200} 201void loop() 202{ 203 mission1(); 204 mission2(); 205} 206void mission1() { 207 static unsigned long time = millis(); 208 if (millis() - time >= 80 && led <= 22) { 209 time = millis(); 210 led++; 211 digitalWrite(LATCH, LOW); 212 shiftOut(DATA, CLOCK, MSBFIRST, number[led]); 213 digitalWrite(LATCH, HIGH); 214 } 215 if (led == 22) { 216 led = 0; 217 } 218} 219void mission2() { 220 curTime = millis(); 221 if (curTime - controlPrevTime > controlDelay) { 222 controlPrevTime = curTime; 223 digitalWrite(pinControlOut, LOW); 224 _playNote = 1; 225 } 226 if (curTime - tonePrevTime >= noteDelay && _playNote == 1) { 227 noteIndex++; 228 tonePrevTime = curTime; 229 noTone(pinTone); 230 tone(pinTone, aNotes[noteIndex].note, aNotes[noteIndex].tempo); 231 noteDelay = aNotes[noteIndex].tempo; 232 if (noteIndex >= totalNotes) { 233 noteIndex = -1; 234 noteDelay = 10; 235 } 236 } 237} 238void resetTones() { 239 _playNote = 0; 240 noteIndex = -1; 241 noteDelay = aNotes[(noteIndex + 1)].tempo; 242}
8 Pin Configuration
arduino
1int leds[] = {2,3,4,5,6,7,8,9}; 2void setup() 3{ 4for(int i=0; i<8; i++) { 5pinMode(leds[i], OUTPUT); 6} 7} 8void loop() 9{ 10for(int i=0; i<7; i++) { 11digitalWrite(leds[i], HIGH); 12delay(100); 13digitalWrite(leds[i], LOW); 14} 15for(int j=7; j>0; j--) { 16digitalWrite(leds[j], HIGH); 17delay(100); 18digitalWrite(leds[j], LOW); 19} 20}
74hc595 Shift Register Configuration
arduino
1#define LATCH 9 2#define CLOCK 10 3#define DATA 8 4static int led = 0; 5byte number[23] = {0b00000000, 60b00000001, 70b00000011, 80b00000111, 90b00001110, 100b00011100, 110b00111000, 120b01110000, 130b11100000, 140b11000000, 150b10000000, 160b00000000, 170b10000000, 180b11000000, 190b11100000, 200b01110000, 210b00111000, 220b00011100, 230b00001110, 240b00000111, 250b00000011, 260b00000001, 270b00000000 28}; 29void setup() { 30pinMode(CLOCK, OUTPUT); 31pinMode(DATA, OUTPUT); 32pinMode(LATCH, OUTPUT); 33} 34void loop() { 35static unsigned long time = millis(); 36if (millis() - time >= 80 && led <= 22) { 37time = millis(); 38led++; 39digitalWrite(LATCH, LOW); 40shiftOut(DATA, CLOCK, MSBFIRST, number[led]); 41digitalWrite(LATCH, HIGH); 42} 43if (led == 22) { 44led = 0; 45} 46}
8 Pin Configuration
arduino
1int leds[] = {2,3,4,5,6,7,8,9}; 2void setup() 3{ 4for(int i=0; i<8; 5 i++) { 6pinMode(leds[i], OUTPUT); 7} 8} 9void loop() 10{ 11for(int i=0; 12 i<7; i++) { 13digitalWrite(leds[i], HIGH); 14delay(100); 15digitalWrite(leds[i], 16 LOW); 17} 18for(int j=7; j>0; j--) { 19digitalWrite(leds[j], HIGH); 20delay(100); 21digitalWrite(leds[j], 22 LOW); 23} 24}
Downloadable files
Schematic
Schematic
Datasheet
Datasheet
Datasheet
Datasheet
Schematic
Schematic
Comments
Only logged in users can leave comments