Новогодние огоньки
- Войдите на сайт для отправки комментариев
Сб, 10/12/2016 - 14:29
Привет, друзья! Представляю вашему вниманию проект новогодних гирлянд. Проект очень простой. Одна ножка мк зажигает одну группу светодиодов и делает это с помощью ULN2003. И того три линии по 7 групп в каждой. Включив фантазию, можно как угодно, в любой последовательности их зажигать, и, тем самым, создавать новогоднее нестроение себе и другим! Удачи в Новом году!)
byte l[] = {15, 16, 17, 18, 19, 20, 21}; //левый byte r[] = {30, 29, 28, 27, 26, 25, 24}; //правый byte c[] = {14, 13, 12, 11, 10, 9, 8}; byte i = 0; byte j = 0; byte s = 0; byte w = 7; unsigned int z; void setup() { for (byte i = 0; i < 7; i++) {pinMode(l[i], OUTPUT); pinMode(r[i], OUTPUT); pinMode(c[i], OUTPUT);} pinMode(0, INPUT); digitalWrite(0, HIGH); } void loop() { if (digitalRead(0) == 0) {delay(200); i++; if (i > 9) i = 0; } switch(i){ case 0: for (byte a = 0; a < 7; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); digitalWrite(c[a], HIGH);} j = j - 5; z = j*5; if (j <= 50) {j = 0; s++;} if (s > 2) {s = 0; z = 0; i = 1;} delay(z); for (byte a = 0; a < 7; a++) {digitalWrite(l[a], LOW); digitalWrite(r[a], LOW); digitalWrite(c[a], LOW);} delay(z); break; case 1: for (byte a = 0; a < 7; a++) { digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(160); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} for (byte a = 4; a < 7; a++) {digitalWrite(c[a], HIGH); delay(160); digitalWrite(c[a], LOW);} for (byte a = 0; a < 4; a++) {digitalWrite(c[a], HIGH);} delay(1000); for (byte a = 0; a < 7; a++) {digitalWrite(c[a], LOW);} j++; if (j > 60) {s++; j = 0;} if (s > 2) {s = 0; j = 0; i = 2;} break; case 2: for (byte a = 0; a < 4; a++) {digitalWrite(c[a], HIGH);} for (byte a = 0; a < 7; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(80); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} for (byte a = 0; a < 7; a++) {digitalWrite(l[6-a], HIGH); digitalWrite(r[6-a], HIGH); delay(80); digitalWrite(l[6-a], LOW); digitalWrite(r[6-a], LOW);} j++; if (j > 80) {s++; j = 0;} if (s == 3) {s = 0; j = 0; i = 3;} break; case 3: for (byte a = 0; a < 7; a++) {digitalWrite(c[a], HIGH);} for (byte a = 0; a < w; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(100); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} w--; digitalWrite(l[w], HIGH); digitalWrite(r[w], HIGH); if (w == 0) {delay(1000); for (byte a = 0; a < 7; a++) {digitalWrite(c[a], LOW); digitalWrite(r[a], LOW); digitalWrite(l[a], LOW);} delay(1500); s++; if (s > 80) {s = 0; j = 0; i = 4;} w = 7;} break; case 4: for (byte a = 0; a < 7; a++) {digitalWrite(r[a], HIGH); digitalWrite(l[a], HIGH); delay(150);} delay(1000); for (byte a = 0; a < 7; a++) {digitalWrite(c[a], HIGH); delay(150);} delay(1000); for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], LOW); digitalWrite(l[6-a], LOW); delay(150);} delay(1000); for (byte a = 0; a < 7; a++) {digitalWrite(c[6-a], LOW); delay(150);} delay(1000); j++; if (j > 12) {s++; j = 0;} if (s > 1) {s = 0; j = 0; i = 5;} break; case 5: for (byte a = 0; a < 7; a++) {digitalWrite(c[a], HIGH); delay(140); digitalWrite(c[a], LOW);} for (byte a = 0; a < 7; a++) {digitalWrite(c[6-a], HIGH); delay(140); digitalWrite(c[6-a], LOW);} w--; digitalWrite(l[w], HIGH); digitalWrite(r[w], HIGH); delay(700); if (w == 0) {for (byte a = 0; a < 7; a++) {digitalWrite(r[a], LOW); digitalWrite(l[a], LOW);} delay(600); s++; if (s > 30) {s = 0; j = 0; i = 6;} w = 7;} break; case 6: for (byte a = 0; a < 4; a++) {digitalWrite(c[a], HIGH);} for (byte a = 4; a < 7; a++) {digitalWrite(c[a], HIGH); delay(200); digitalWrite(c[a], LOW);} for (byte a = 0; a < w; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(120); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} w--; digitalWrite(l[w], HIGH); digitalWrite(r[w], HIGH); delay(400); if (w == 0) {delay(800); for (byte a = 0; a < 7; a++) {digitalWrite(c[a], LOW); digitalWrite(r[a], LOW); digitalWrite(l[a], LOW);} delay(1000); s++; if (s > 30) {s = 0; j = 0; i = 7;} w = 7;} break; case 7: for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], HIGH); delay(150);} for (byte a = 0; a < 7; a++) {digitalWrite(l[a], HIGH); delay(150);} for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], LOW); delay(150);} for (byte a = 0; a < 7; a++) {digitalWrite(l[a], LOW); delay(150);} j++; if (j > 20) {s++; j = 0;} if (s == 2) {s = 0; j = 0; i = 8;} break; case 8: for (byte a = 0; a < 7; a++) {digitalWrite(r[a], HIGH); digitalWrite(l[a], HIGH); delay(120); digitalWrite(r[a], LOW); digitalWrite(l[a], LOW);} j++; if (j > 150) {s++; j = 0;} if (s > 3) {s = 0; j = 0; i = 9;} break; case 9: for (byte a = 0; a < w; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(120); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} w--; digitalWrite(l[w], HIGH); digitalWrite(r[w], HIGH); delay(400); if (w == 0) {for (byte a = 0; a < 7; a++) {digitalWrite(c[a], HIGH); s++; i = 10;}} break; case 10: for (byte a = 0; a < w; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); delay(150); digitalWrite(l[a], LOW); digitalWrite(r[a], LOW);} digitalWrite(l[w], LOW); digitalWrite(r[w], LOW); w++; delay(400); if (w == 7) {for (byte a = 0; a < 7; a++) {digitalWrite(c[a], LOW);}} if (s > 8) {i = 11; s = 0; w = 7;} else i = 9; break; case 11: for (byte a = 0; a < 7; a++) {digitalWrite(l[a], HIGH); digitalWrite(r[a], HIGH); digitalWrite(c[a], HIGH); delay(200);} for (byte a = 0; a < 7; a++) {digitalWrite(l[a], LOW); digitalWrite(r[a], LOW); digitalWrite(c[a], LOW); delay(100);} delay(400); j++; if (j > 15) {s++; j = 0;} if (s > 1) {s = 0; j = 0; i = 12;} break; case 12: w--; digitalWrite(l[w], HIGH); delay(200); digitalWrite(r[w], HIGH); delay(200); if (w == 0) {for (byte a = 0; a < 7; a++) {digitalWrite(l[a], LOW); digitalWrite(r[a], LOW); delay(200); s++; w = 7;}} if (s > 20) {i = 13; s = 0; w = 7;} break; case 13: for (byte a = 0; a < 7; a++) {digitalWrite(l[a], HIGH); delay(80); digitalWrite(l[a], LOW);} for (byte a = 0; a < 7; a++) {digitalWrite(r[a], HIGH); delay(80); digitalWrite(r[a], LOW);} for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], HIGH); delay(80); digitalWrite(r[6-a], LOW);} for (byte a = 0; a < 7; a++) {digitalWrite(l[6-a], HIGH); delay(80); digitalWrite(l[6-a], LOW);} j++; if (j > 10) {s++; j = 0;} if (s > 2) {s = 0; j = 0; i = 14;} break; case 14: for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], HIGH); digitalWrite(l[a], HIGH); delay(100);} delay(200); for (byte a = 0; a < 7; a++) {digitalWrite(r[6-a], LOW); digitalWrite(l[a], LOW); delay(100);} delay(200); j++; if (j > 15) {s++; j = 0;} if (s > 2) {s = 0; j = 0; i = 15;} break; case 15: for (byte a = 0; a < 9; a++) {digitalWrite(r[a], HIGH); digitalWrite(l[a], HIGH); digitalWrite(r[a - 3], HIGH); digitalWrite(l[a - 3], HIGH); delay(120); digitalWrite(r[a], LOW); digitalWrite(l[a], LOW); digitalWrite(r[a - 3], LOW); digitalWrite(l[a - 3], LOW); } j++; if (j > 150) {s++; j = 0;} if (s > 2) {s = 0; j = 0; i = 16;} break; case 16: for (byte a = 0; a < 7; a++) {digitalWrite(r[a], HIGH); digitalWrite(l[a], HIGH); digitalWrite(r[6-a], HIGH); digitalWrite(l[6-a], HIGH); delay(200); } for (byte a = 0; a < 7; a++) {digitalWrite(r[a], LOW); digitalWrite(l[a], LOW); digitalWrite(r[6-a], LOW); digitalWrite(l[6-a], LOW); delay(100); } j++; if (j > 150) {s++; j = 0;} if (s > 2) {s = 0; j = 0; i = 17;} break; case 17: i = 0; break; } }
а где ардуино(?