//2024.11.28 - СветоЭффекты на Arduino Nano //=================== //Переменные для реализации случайного алгоритма зажигания светодиодов long Led_N_min = 1; //Начальный номер комбинации светодиодов long Led_N_max = 36; //Конечный номер комбинации светодиодов int DT_RND_min = 1; //Номер 1-го светодиода int DT_RND_max = 5; //Номер 5-го светодиода //------------------------------- long Led_rnd = 1; //Случайный номер комбинации светодиодов int DT_rnd = 1; //Случайное время свечения комбинации светодиодов //=================== //=================== //Подключение светодиодов int Rpin = 12; //Красный int Gpin = 11; //Зеленый int Bpin = 10; //Синий int Ypin = 9; //Желтый int Wpin = 8; //Белый //=================== void setup() { //------------------------------- pinMode(13, OUTPUT); //встроенный светодиод pinMode(Rpin, OUTPUT); pinMode(Gpin, OUTPUT); pinMode(Bpin, OUTPUT); pinMode(Ypin, OUTPUT); pinMode(Wpin, OUTPUT); //------------------------------- //------------------------------- //Тест на проверку работоспособности при включении питания digitalWrite(13, LOW); digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); delay(500); digitalWrite(13, HIGH); digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); delay(500); //------------------------------- } void loop() { //-------------------------- //Погасить все светодиоды digitalWrite(13, LOW); digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); //-------------------------- //-------------------------- //Получить случайный номер комбинации светодиодов Led_rnd = random(Led_N_min, Led_N_max+1); if (Led_rnd < Led_N_min) {Led_rnd < Led_N_min; } if (Led_rnd > Led_N_max) {Led_rnd < Led_N_max; } //-------------------------- //-------------------------- //Получить случайную величину времени свечения комбинации светодиодов DT_rnd = random(DT_RND_min, DT_RND_max+1); if (DT_rnd < 1) { DT_rnd = 1; } //-------------------------- //*********************************************************** //Реализация алгоритма (свечение соответствующей комбинации светодиодов) if (Led_rnd <= 1) { digitalWrite(Rpin, HIGH); } if (Led_rnd == 2) { digitalWrite(Gpin, HIGH); } if (Led_rnd == 3) { digitalWrite(Bpin, HIGH); } if (Led_rnd == 4) { digitalWrite(Ypin, HIGH); } if (Led_rnd == 5) { digitalWrite(Wpin, HIGH); } if (Led_rnd == 6) { //+R +G +B +Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 7) { //+R +G +B +Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 8) { //+R +G +B -Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 9) { //+R +G +B -Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 10) { //+R +G -B +Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 11) { //+R +G -B +Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 12) { //+R +G -B -Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 13) { //+R +G -B -Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 14) { //+R -G +B +Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 15) { //+R -G +B +Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 16) { //+R -G +B -Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 17) { //+R -G +B -Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 18) { //+R -G -B +Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 19) { //+R -G -B +Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 20) { //+R -G -B -Y +W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 21) { //+R -G -B -Y -W digitalWrite(Rpin, HIGH); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 22) { //-R +G +B +Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 23) { //-R +G +B +Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 24) { //-R +G +B -Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 25) { //-R +G +B -Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 26) { //-R +G -B +Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 27) { //-R +G -B +Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 28) { //-R +G -B -Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 29) { //-R +G -B -Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, HIGH); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 30) { //-R -G +B +Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 31) { //-R -G +B +Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 32) { //-R -G +B -Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 33) { //-R -G +B -Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, HIGH); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } if (Led_rnd == 34) { //-R -G -B +Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, HIGH); } if (Led_rnd == 35) { //-R -G -B +Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, HIGH); digitalWrite(Wpin, LOW); } if (Led_rnd == 36) { //-R -G -B -Y +W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, HIGH); } if (Led_rnd == 37) { //-R -G -B -Y -W digitalWrite(Rpin, LOW); digitalWrite(Gpin, LOW); digitalWrite(Bpin, LOW); digitalWrite(Ypin, LOW); digitalWrite(Wpin, LOW); } delay(DT_rnd*1000); // Время свечения //*********************************************************** }