#include "main.h"
void LED(uint8_t a, uint8_t b)
{
switch(a) {
case 0:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET);
break;
case 1:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
break;
case 2:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
break;
case 3:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
break;
case 4:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET);
break;
case 5:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
break;
case 6:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
break;
case 7:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);
break;
case 8:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET);
break;
case 9:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);
break;
case 10:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
break;
case 11:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);
break;
case 12:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
break;
case 13:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);
break;
case 14:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
break;
case 15:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);
break;
case 16:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
break;
case 17:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
break;
case 18:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
break;
case 19:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_RESET);
break;
case 20:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_RESET);
break;
case 21:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
break;
case 22:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
break;
case 23:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
break;
case 24:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
break;
case 25:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
break;
case 26:
if (b) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
break;
case 27:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET);
break;
case 28:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);
break;
case 29:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);
break;
case 30:
if (b) HAL_GPIO_WritePin(GPIOH, GPIO_PIN_1, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOH, GPIO_PIN_1, GPIO_PIN_RESET);
break;
case 31:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);
break;
case 32:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
break;
case 33:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET);
break;
case 34:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
break;
case 35:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
break;
case 36:
if (b) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
break;
case 37:
if (b) HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
break;
case 38:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET);
break;
case 39:
if (b) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_SET);
else HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_RESET);
break;
case 40:
break;
}
}
void LED_INV(uint8_t a)
{
switch(a) {
case 0:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_10);
break;
case 1:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_15);
break;
case 2:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_12);
break;
case 3:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_11);
break;
case 4:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_10);
break;
case 5:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_9);
break;
case 6:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8);
break;
case 7:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
break;
case 8:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);
break;
case 9:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_7);
break;
case 10:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
break;
case 11:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_15);
break;
case 12:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
break;
case 13:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13);
break;
case 14:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12);
break;
case 15:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_11);
break;
case 16:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_10);
break;
case 17:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
break;
case 18:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
break;
case 19:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);
break;
case 20:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_4);
break;
case 21:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_7);
break;
case 22:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_6);
break;
case 23:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
break;
case 24:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);
break;
case 25:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1);
break;
case 26:
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
break;
case 27:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_3);
break;
case 28:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);
break;
case 29:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);
break;
case 30:
HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_1);
break;
case 31:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
break;
case 32:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
break;
case 33:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
break;
case 34:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_6);
break;
case 35:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
break;
case 36:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
break;
case 37:
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_2);
break;
case 38:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_12);
break;
case 39:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_11);
break;
case 40:
break;
}
}
void LED_ON()
{
for(int i=0; i<40; i++)
{
LED(i,1);
}
}
void LED_OFF()
{
for(int i=0; i<40; i++)
{
LED(i,0);
}
}
void FADE_IN()
{
LED_OFF();
for(int i=0; i<100; i++)
{
for (int ii=0; ii<100; ii++)
{
if(ii<=i) LED_ON();
else LED_OFF();
}
}
}
void FADE_OUT()
{
LED_OFF();
for(int i=0; i<100; i++)
{
for (int ii=0; ii<100; ii++)
{
if(ii>i) LED_ON();
else LED_OFF();
}
}
HAL_Delay(200);
}
void KRUG(int a)
{
for(int c=0; c<a; c++)
{
for(int i=0; i<40; i++)
{
LED(i,1);
HAL_Delay(20);
}
for(int i=1; i<40; i++)
{
LED(i,0);
HAL_Delay(20);
}
}
}
void polovina_po_chas()
{
LED(0,1);
for(int i=1; i<=20; i++)
{
LED(i,1);
LED(19+i,1);
HAL_Delay(20);
}
LED(20,1);
}
void polov_po_chas_inv()
{
for(int i=0; i<=19; i++)
{
LED_INV(i);
LED_INV(20+i);
HAL_Delay(20);
}
}
void polov_pr_chas_inv()
{
for(int i=19; i>=0; i--)
{
LED_INV(i);
LED_INV(20+i);
HAL_Delay(20);
}
}
void polov_S0()
{
LED_INV(0);
for(int i=1; i<=19; i++)
{
LED_INV(i);
LED_INV(40-i);
HAL_Delay(20);
}
LED_INV(20);
}
void nasip_posl()
{
uint32_t delay=15;
LED_OFF();
for(int i=20; i>=0; i--)
{
for(int ii=0; ii<=i; ii++)
{
LED_INV(ii);
HAL_Delay(delay);
if (ii==i) break;
LED_INV(ii);
}
LED_INV(0);
HAL_Delay(delay);
LED_INV(0);
for(int iii=39; iii>=39-i+2; iii--)
{
LED_INV(iii);
HAL_Delay(delay);
if (iii==39-i+2) break;
LED_INV(iii);
}
}
}
void nasip_parr()
{
uint32_t delay=20;
LED_OFF();
for(int i=20; i>=0; i--)
{
LED_INV(0);
HAL_Delay(delay);
LED_INV(0);
for(int ii=1; ii<=i; ii++)
{
LED_INV(ii);
if (ii!=20) LED_INV(40-ii);
HAL_Delay(delay);
if (ii==i) break;
LED_INV(ii);
LED_INV(40-ii);
}
}
}
void tochka_kolco()
{
uint32_t delay=11;
LED_OFF();
for(int ii=0; ii<40; ii++)
{
LED_INV(ii);
HAL_Delay(delay);
LED_INV(ii);
}
LED_INV(0);
HAL_Delay(delay);
LED_INV(0);
for(int iii=39; iii>=0; iii--)
{
LED_INV(iii);
HAL_Delay(delay);
LED_INV(iii);
}
}
void polovinki(int a)
{
LED_OFF();
uint32_t delay=700;
for(int ii=1; ii<=a; ii++)
{
for(int i=0; i<=20; i++)
{
LED(i,1);
}
HAL_Delay(delay);
LED_OFF();
for(int i=20; i<=39; i++)
{
LED(i,1);
}
LED(0,1);
HAL_Delay(delay);
LED_OFF();
}
}
int main(void)
{
while (1)
{
FADE_IN();
FADE_OUT();
polov_pr_chas_inv();
polov_po_chas_inv();
polov_po_chas_inv();
FADE_OUT();
FADE_IN();
polovinki(2);
FADE_OUT();
KRUG(1);
polovina_po_chas();
polov_S0();
polov_S0();
polov_S0();
nasip_posl();
FADE_OUT();
polov_po_chas_inv();
polov_po_chas_inv();
polov_pr_chas_inv();
polov_pr_chas_inv();
polov_pr_chas_inv();
FADE_OUT();
nasip_parr();
FADE_OUT();
polov_pr_chas_inv();
FADE_OUT();
tochka_kolco();
}
}