//STAR - Ver.1.00
//2024-10-16
int pins[] = {23, 22, 32, 33, 25, 26, 27, 14, 12, 13, 15, 2, 0, 4, 16, 17, 19, 18, 5, 21};
int arrlength;
int mode = 3;
void setup() {
arrlength = sizeof(pins) / sizeof(int);
for (int i=0; i<arrlength; i++)
{
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i], LOW);
}
}
void loop() {
switch (mode)
{
case 0:
full();
break;
case 1:
circle();
break;
case 2:
halfcircle();
break;
case 3:
blinkingtips();
break;
case 4:
everysecond();
break;
case 5:
rotatingspikes();
break;
case 6:
topbottom();
break;
default:
break;
}
delay(10);
}
void ledSwitch(int led, int mode)
{
digitalWrite(pins[led], mode);
}
void full()
{
for (int i=0; i<arrlength; i++)
{
ledSwitch(i, HIGH);
}
}
void reset()
{
for (int i=0; i<arrlength; i++)
{
ledSwitch(i, LOW);
}
}
void circle()
{
int timeout = 200;
for (int i=0; i<arrlength; i++)
{
ledSwitch(i, HIGH);
delay(timeout);
ledSwitch(i, LOW);
}
}
void halfcircle()
{
int timeout = 200;
int half = arrlength / 2;
int halfindex;
for (int i=0; i<arrlength; i++)
{
ledSwitch(i, HIGH);
halfindex = i + half;
if (halfindex > arrlength)
{
halfindex -= arrlength;
}
ledSwitch(halfindex, HIGH);
delay(timeout);
ledSwitch(i, LOW);
ledSwitch(halfindex, LOW);
}
}
void blinkingtips()
{
int timeout = 400;
for (int i=0; i<arrlength; i+=4)
{
ledSwitch(i, LOW);
ledSwitch(i+1, LOW);
ledSwitch(i+2, HIGH);
}
delay(timeout);
for(int i=0; i<arrlength; i+=4)
{
ledSwitch(i, LOW);
ledSwitch(i+2, LOW);
ledSwitch(i+1, HIGH);
ledSwitch(i+3, HIGH);
}
delay(timeout);
for (int i=0; i<arrlength; i+=4)
{
ledSwitch(i, HIGH);
ledSwitch(i+1, LOW);
ledSwitch(i+3, LOW);
}
delay(timeout);
}
void everysecond()
{
int timeout = 500;
for (int i=0; i<arrlength; i+=2)
{
ledSwitch(i, HIGH);
ledSwitch(i+1, LOW);
}
delay(timeout);
for (int i=0; i<arrlength; i+=2)
{
ledSwitch(i, LOW);
ledSwitch(i+1, HIGH);
}
delay(timeout);
}
void rotatingspikes()
{
int timeout = 400;
int pin;
for (int i=0; i<arrlength; i+=4)
{
switchspike(i, HIGH);
delay(timeout);
switchspike(i, LOW);
}
}
void switchspike(int i, int onoff)
{
int pin;
for (int j=i+2; j<i+7; j++)
{
pin = j;
if (pin >= arrlength)
{
pin -= arrlength;
}
ledSwitch(pin, onoff);
}
}
void topbottom()
{
int timeout = 300;
int arr_0[] = {0, -1, -1, -1, -1, -1};
int arr_1[] = {1, 19, -1, -1, -1, -1};
int arr_2[] = {2, 3, 4, 16, 17, 18};
int arr_3[] = {5, 15, -1, -1, -1, -1};
int arr_4[] = {6, 14, -1, -1, -1, -1};
int arr_5[] = {7, 13, -1, -1, -1, -1};
int arr_6[] = {8, 12, -1, -1, -1, -1};
int arr_7[] = {9, 11, -1, -1, -1, -1};
int arr_8[] = {10, -1, -1, -1, -1, -1};
int* arr_c[] = {arr_0, arr_1, arr_2, arr_3, arr_4, arr_5, arr_6, arr_7, arr_8};
int l = sizeof(arr_c) / sizeof(arr_c[0]);
for (int i=0; i<l; i++)
{
arrSwitch(arr_c[i], HIGH);
delay(timeout);
arrSwitch(arr_c[i], LOW);
}
}
void arrSwitch(int arr[], int onoff)
{
int l = sizeof(arr) + 2;
for (int i=0; i<l; i++)
{
if (arr[i] != -1)
{
ledSwitch(arr[i], onoff);
}
}
}