Skip to content

Commit

Permalink
You can use not only 11 LED in the star
Browse files Browse the repository at this point in the history
  • Loading branch information
Очкасов Сергей Владимирович committed Jan 20, 2021
1 parent ca704c5 commit 88fdadc
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 50 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

## Порядок размещения светодиодов

Для получения ожидаемых результатов, важно правильно разместить светодиоды на елке. Для этого, разместите самый последние светодиоды на самом верху елки в звезде (покупалась недорого в Fixprice). У меня последний в цепочке светодиод находится в центре звезды. Последовательность соединения показана на фотографии.
Для получения ожидаемых результатов, важно правильно разместить светодиоды на елке. Для этого, разместите самый последние светодиоды на самом верху елки в звезде (покупалась недорого в Fixprice). У меня последний в цепочке светодиод находится в центре звезды. В проекте было использовано 11 светодиодов в звезде. Последовательность соединения показана на фотографии. Другие варианты размещения светодиодов и последовательность их соединения потребуют изменений в коде (функции star1()-star2() ). Для большей совместимости добавлен функционал, который позволяет, при использовании количества светодиодов, отличного от 11, все-же выделить звезду как отдельный объект и воспроизводить у нем анимации.

![Последовательность подключения светодиодов внутри звезды](img/star.jpg)

Expand Down
109 changes: 60 additions & 49 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,37 +70,50 @@ void addGlitterForStar( fract8 chanceOfGlitter) {
}
}//end star0

// Только под 11 светодиодов в звезде
void star1()
{
leds[ NUM_LEDS_LINE ] = star_ext;
leds[ NUM_LEDS_LINE+1 ] = star_mid;
leds[ NUM_LEDS_LINE+2 ] = star_ext;
leds[ NUM_LEDS_LINE+3 ] = star_mid;
leds[ NUM_LEDS_LINE+4 ] = star_ext;
leds[ NUM_LEDS_LINE+5 ] = star_mid;
leds[ NUM_LEDS_LINE+6 ] = star_ext;
leds[ NUM_LEDS_LINE+7 ] = star_mid;
leds[ NUM_LEDS_LINE+8 ] = star_ext;
leds[ NUM_LEDS_LINE+9 ] = star_mid;
leds[ NUM_LEDS_LINE+10 ] = star_center;
if (NUM_LEDS_STAR != 11) {
star0(); // only 11 leds use in the star
} else {
leds[ NUM_LEDS_LINE ] = star_ext;
leds[ NUM_LEDS_LINE+1 ] = star_mid;
leds[ NUM_LEDS_LINE+2 ] = star_ext;
leds[ NUM_LEDS_LINE+3 ] = star_mid;
leds[ NUM_LEDS_LINE+4 ] = star_ext;
leds[ NUM_LEDS_LINE+5 ] = star_mid;
leds[ NUM_LEDS_LINE+6 ] = star_ext;
leds[ NUM_LEDS_LINE+7 ] = star_mid;
leds[ NUM_LEDS_LINE+8 ] = star_ext;
leds[ NUM_LEDS_LINE+9 ] = star_mid;
leds[ NUM_LEDS_LINE+10 ] = star_center;
}

}//end star1

// Только под 11 светодиодов в звезде
void star1g()
{
leds[ NUM_LEDS_LINE ] = star_ext;
leds[ NUM_LEDS_LINE+1 ] = star_mid;
leds[ NUM_LEDS_LINE+2 ] = star_ext;
leds[ NUM_LEDS_LINE+3 ] = star_mid;
leds[ NUM_LEDS_LINE+4 ] = star_ext;
leds[ NUM_LEDS_LINE+5 ] = star_mid;
leds[ NUM_LEDS_LINE+6 ] = star_ext;
leds[ NUM_LEDS_LINE+7 ] = star_mid;
leds[ NUM_LEDS_LINE+8 ] = star_ext;
leds[ NUM_LEDS_LINE+9 ] = star_mid;
leds[ NUM_LEDS_LINE+10 ] = star_center;
addGlitterForStar(80);
if (NUM_LEDS_STAR != 11) {
star0(); // only 11 leds use in the star
} else {
leds[ NUM_LEDS_LINE ] = star_ext;
leds[ NUM_LEDS_LINE+1 ] = star_mid;
leds[ NUM_LEDS_LINE+2 ] = star_ext;
leds[ NUM_LEDS_LINE+3 ] = star_mid;
leds[ NUM_LEDS_LINE+4 ] = star_ext;
leds[ NUM_LEDS_LINE+5 ] = star_mid;
leds[ NUM_LEDS_LINE+6 ] = star_ext;
leds[ NUM_LEDS_LINE+7 ] = star_mid;
leds[ NUM_LEDS_LINE+8 ] = star_ext;
leds[ NUM_LEDS_LINE+9 ] = star_mid;
leds[ NUM_LEDS_LINE+10 ] = star_center;
addGlitterForStar(80);
}

}//end star1g

// Только под 11 светодиодов в звезде
void star2()
{
if (star_ext_direction){ star_ext_Hue--; } else { star_ext_Hue++; }
Expand All @@ -111,36 +124,34 @@ void star2()
if (star_mid_Hue>24) { star_mid_direction=true; } else if (star_mid_Hue==0) { star_mid_direction=false; }
if (star_center_Hue>7) { star_center_direction=true; } else if (star_center_Hue==0) { star_center_direction=false; }

if (NUM_LEDS_STAR != 11) {
star0(); // only 11 leds use in the star
} else {
leds[ NUM_LEDS_LINE ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+1 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+2 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+3 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+4 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+5 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+6 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+7 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+8 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+9 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+10 ].setHue(star_center_Hue);
}

leds[ NUM_LEDS_LINE ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+1 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+2 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+3 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+4 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+5 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+6 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+7 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+8 ].setHue(star_ext_Hue);
leds[ NUM_LEDS_LINE+9 ].setHue(star_mid_Hue);
leds[ NUM_LEDS_LINE+10 ].setHue(star_center_Hue);
}//end star2

// Доработано до любого кол-ва светодиодов в звезде
void star3()
{
if (star_ext_direction){ star_ext_Hue--; } else { star_ext_Hue++; }
if (star_ext_Hue>254) { star_ext_direction=true; } else if (star_ext_Hue<40) { star_ext_direction=false; }

leds[ NUM_LEDS_LINE ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+1 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+2 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+3 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+4 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+5 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+6 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+7 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+8 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+9 ].setHSV(0,255,star_ext_Hue);
leds[ NUM_LEDS_LINE+10 ].setHSV(0,255,star_ext_Hue);
for (uint8_t star_led; star_led < NUM_LEDS_STAR; star_led++) {
leds[ NUM_LEDS_LINE + star_led].setHSV(0,255,star_ext_Hue);
}

}//end star3

void rainbow() {
Expand Down Expand Up @@ -526,19 +537,19 @@ void loop() {
star0();
break;
case 1:
star1();
star1(); // only 11 leds use in the star
break;
case 2:
star2();
star2(); // only 11 leds use in the star
break;
case 3:
star3();
break;
case 4:
star1g();
star1g(); // only 11 leds use in the star
break;
default:
star1();
star1(); // only 11 leds use in the star
break;
}

Expand Down

0 comments on commit 88fdadc

Please sign in to comment.