====Hra Snake pomocí gyroskopu a grafického displeje na kitu STM32F4==== Původním záměrem bylo vytvořit hru Snake za pomoci LED matice, externího gyroskopu a kitu STM32F0. Kvůli nefunkčnímu hardwaru však bylo zadání změněno na vývojový kit STM32F4, který má integrovaný jak displej, tak gyroskop, změna směru hada tedy odpovídá změně směru nahnutí desky. V první části kódu bylo nutné zainkludovat základní knihovny a knihovny pro práci s gyroskopem a displejem, zdrojem byly stranky http://stm32f4-discovery.com/. **Program**: #include "tm_stm32f4_ili9341_ltdc.h" #include "tm_stm32f4_l3gd20.h" #include "tm_stm32f4_delay.h" #include "stm32f4xx.h" #include "defines.h" #include #include #include int main(void) { uint16_t i,j; int x_pos[5] = {125, 145, 165, 185, 205}; int x_pos_old; int y_pos[5] = {160, 160, 160, 160, 160}; int y_pos_old; int status; //udava smer TM_L3GD20_t L3GD20_Data; SystemInit(); TM_DELAY_Init(); TM_ILI9341_Init(); delay_init(); ili9341_init(); TM_ILI9341_Rotate(TM_ILI9341_Orientation_Portrait_2); TM_ILI9341_Fill(ILI9341_COLOR_RED); /* Init L3GD20 sensor */ if (TM_L3GD20_Init(TM_L3GD20_Scale_2000) != TM_L3GD20_Result_Ok) { /* Sensor error */ TM_ILI9341_Puts(10, 100, "Sensor ERROR!", &TM_Font_11x18, 0x0000, ILI9341_COLOR_RED); while (1); } while(1){ //prekresleni hada x_pos_old = x_pos[4]; y_pos_old = y_pos[4]; x_pos[4] = x_pos[3]; y_pos[4] = y_pos[3]; x_pos[3] = x_pos[2]; y_pos[3] = y_pos[2]; x_pos[2] = x_pos[1]; y_pos[2] = y_pos[1]; x_pos[1] = x_pos[0]; y_pos[1] = y_pos[0]; //nacteni dat z gyroskopu TM_L3GD20_Read(&L3GD20_Data); //absolutni zmena if ((L3GD20_Data.Y * L3GD20_Data.Y) > (L3GD20_Data.X * L3GD20_Data.X)){ if (L3GD20_Data.Y>25) status = 1; if (L3GD20_Data.Y<(-25)) status = -1; } else { if (L3GD20_Data.X>25) status = 2; if (L3GD20_Data.X<(-25)) status = -2; } //posun v danych smerech if (status == 1) x_pos[0] += 20; if (status == -1) x_pos[0] -= 20; if (status == 2) y_pos[0] += 20; if (status == -2) y_pos[0] -= 20; //podtekani a pretekani if(x_pos[0] > 239) x_pos[0] -= 240; if(y_pos[0] > 319) y_pos[0] -= 320; if(x_pos[0] < 1) x_pos[0] += 240; if(y_pos[0] < 1) y_pos[0] += 320; TM_ILI9341_DrawFilledCircle(x_pos_old, y_pos_old, 10, ILI9341_COLOR_RED);//smaze TM_ILI9341_DrawFilledCircle(x_pos[0], y_pos[0], 10, ILI9341_COLOR_BLACK);//dokresli delay_ms(400); } } **Závěr:**: Byla naprogramována jednoduchá hra Snake, která je řízena dle příslušných hodnot v osách X a Y obdržených z vestavěného gyroskopu. Demonstrační video lze shlednout na: https://www.youtube.com/watch?v=flEpEQqiEGE&feature=youtu.be