//board STM32F103C8T6 (64Kb 72Mhz) || display: ILI9340C (240x320pixel 2,2" COLOR LCD SPI) || nyancat color testprogramm uses Adafruit library have fun =^.^= marderchen //pins connected ::VCC on 3.3V ::LED on 5V (with 94 Ohm resistor) ::GND on GND :: CS on A0 :: Reset on A1 :: DC/RS on A2 :: SCK on A5 :: MISO on A6 :: MOSI on A7 #include "SPI.h" #include "Adafruit_GFX_AS.h" #include "Adafruit_ILI9341_STM.h" #define TFT_CS PA0 #define TFT_DC PA2 #define TFT_RST PA1 Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_RST); // Use hardware SPI const unsigned char PROGMEM nyan1 [] = { 0x07, 0xE0, 0x00, 0x79, 0xFF, 0xFF, 0xE0, 0x00, // ###### #### #################### 0x1C, 0x38, 0x03, 0xCE, 0x00, 0x00, 0x10, 0x00, // ### ### #### ### # 0xF0, 0x0F, 0x1E, 0x04, 0x00, 0x00, 0x08, 0x00, // #### #### #### # # 0x00, 0x01, 0xF0, 0x04, 0x03, 0x00, 0x08, 0x00, // ##### # ## # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x8B, 0x00, // # # ## # ## 0x0F, 0xF8, 0x07, 0xF4, 0x00, 0x39, 0x8B, 0x80, // ######### ####### # ### ## # ### 0x38, 0x0C, 0x0C, 0x1C, 0x00, 0x6C, 0x0C, 0xC0, // ### ## ## ### ## ## ## ## 0xE0, 0x07, 0x1B, 0xC4, 0x02, 0x62, 0x08, 0xC0, // ### ### ## #### # # ## # # ## 0x00, 0x01, 0xE2, 0x64, 0xC0, 0x61, 0xF0, 0xC0, // #### # ## # ## ## ##### ## 0x00, 0x00, 0x03, 0x3C, 0xC0, 0x60, 0x00, 0xC0, // ## #### ## ## ## 0x00, 0x00, 0x01, 0x0C, 0x00, 0x80, 0x00, 0x20, // # ## # # 0x00, 0x00, 0x01, 0x8C, 0x00, 0x87, 0x07, 0x20, // ## ## # ### ### # 0x00, 0x00, 0x00, 0xC5, 0xC0, 0x85, 0x05, 0x20, // ## # ### # # # # # # 0x0F, 0xF0, 0x00, 0x7C, 0x00, 0x84, 0x74, 0x20, // ######## ##### # # ### # # 0x18, 0x38, 0x03, 0xFC, 0x04, 0xB0, 0x21, 0xA0, // ## ### ######## # # ## # ## # 0xF0, 0x0E, 0x0E, 0x04, 0x20, 0xB1, 0x25, 0xA0, // #### ### ### # # # ## # # # ## # 0x00, 0x03, 0xF8, 0x04, 0x00, 0x61, 0xFC, 0xC0, // ####### # ## ####### ## 0x00, 0x00, 0x00, 0x0E, 0x00, 0x10, 0x01, 0x00, // ### # # 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFE, 0x00, // # ######################## 0x0F, 0xE0, 0x00, 0x33, 0x24, 0x11, 0xA4, 0x00, // ####### ## ## # # # ## # # 0x38, 0x3C, 0x07, 0xF3, 0x24, 0x19, 0xA4, 0x00, // ### #### ####### ## # # ## ## # # 0xE0, 0x07, 0x0C, 0x3E, 0x38, 0x0F, 0x98, 0x00, // ### ### ## ##### ### ##### ## 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, // ###### }; const unsigned char PROGMEM nyan2 [] = { 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xE0, 0x00, // #################### 0x1F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x10, 0x00, // ########## ######### # 0xF0, 0x0F, 0xFE, 0x04, 0x00, 0x00, 0x08, 0x00, // #### ########### # # 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x00, 0x3D, 0x89, 0xC0, // # #### ## # ### 0x00, 0x00, 0x00, 0x04, 0x00, 0x3D, 0x89, 0xC0, // # #### ## # ### 0x00, 0x00, 0x00, 0x04, 0x00, 0x22, 0x0A, 0x20, // # # # # # # 0x1F, 0xF8, 0x07, 0xFC, 0x02, 0x21, 0x8C, 0x20, // ########## ######### # # ## ## # 0xF0, 0x0F, 0xFD, 0x84, 0x40, 0x20, 0x78, 0x20, // #### ########## ## # # # #### # 0x00, 0x00, 0x02, 0x44, 0x00, 0x20, 0x00, 0x20, // # # # # # 0x00, 0x00, 0x02, 0x64, 0x01, 0x60, 0x00, 0x10, // # ## # # ## # 0x00, 0x00, 0x02, 0x7C, 0x01, 0x40, 0x00, 0x10, // # ##### # # # 0x00, 0x00, 0x01, 0x04, 0xC0, 0x40, 0x81, 0x10, // # # ## # # # # 0x00, 0x00, 0x00, 0xC4, 0x00, 0x41, 0x8B, 0x10, // ## # # ## # ## # 0x1F, 0xF8, 0x01, 0xFC, 0x04, 0x4C, 0x00, 0x70, // ########## ####### # # ## ### 0xF8, 0x0F, 0xFF, 0x04, 0x20, 0x6C, 0x92, 0x70, // ##### ############ # # ## ## # # # ### 0x00, 0x00, 0x00, 0x04, 0x00, 0x30, 0xFE, 0x20, // # ## ####### # 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0xC0, // ## # ## 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0x00, // # ######################### 0x00, 0x00, 0x00, 0x09, 0x44, 0x08, 0x62, 0x00, // # # # # # ## # 0x3F, 0xFC, 0x07, 0xF9, 0x64, 0x0C, 0x72, 0x00, // ############ ######## # ## # ## ### # 0xE0, 0x07, 0xFC, 0x0E, 0x3C, 0x03, 0xCE, 0x00, // ### ######### ### #### #### ### }; const unsigned char PROGMEM nyan3 [] = { 0xC0, 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x00, // ## ######### #################### 0x7F, 0xF0, 0x1F, 0xFE, 0x00, 0x00, 0x10, 0x00, // ########### ############ # 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, // # # 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0xE0, 0x1F, 0xF0, 0x04, 0x00, 0x1D, 0x89, 0xC0, // ### ######### # ### ## # ### 0x3F, 0xF0, 0x1F, 0xFC, 0x00, 0x22, 0x0A, 0x20, // ########## ########### # # # # # 0x00, 0x00, 0x00, 0x04, 0x02, 0x21, 0x8C, 0x20, // # # # ## ## # 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x78, 0x20, // # # #### # 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x20, // # # # 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x20, // # # # 0x00, 0x00, 0x00, 0x0C, 0x01, 0x21, 0x83, 0x10, // ## # # ## ## # 0x00, 0x00, 0x00, 0xFC, 0xE0, 0x22, 0x85, 0x10, // ###### ### # # # # # # 0x00, 0x1F, 0xF3, 0x04, 0x00, 0x22, 0x95, 0x10, // ######### ## # # # # # # # # 0x00, 0x30, 0x1A, 0x3C, 0x04, 0x3C, 0x00, 0x70, // ## ## # #### # #### ### 0x7F, 0xF0, 0x0F, 0xFC, 0x20, 0x3C, 0x92, 0x70, // ########### ########## # #### # # # ### 0xC0, 0x00, 0x03, 0xF4, 0x20, 0x70, 0xFE, 0x20, // ## ###### # # ### ####### # 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0xC0, // ## # ## 0x00, 0x00, 0x00, 0x05, 0xFF, 0xFF, 0xFF, 0x00, // # ######################### 0xF0, 0x3F, 0xF8, 0x05, 0xFF, 0xFF, 0xFF, 0x00, // #### ########### # ######################### 0x1F, 0xE0, 0x0F, 0xFC, 0xC2, 0x02, 0x29, 0x00, // ######## ########## ## # # # # # 0x00, 0x00, 0x00, 0x07, 0x1E, 0x01, 0xE7, 0x00, // ### #### #### ### }; const unsigned char PROGMEM nyan4 [] = { 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // ####### 0xC0, 0x18, 0x30, 0x01, 0xFF, 0xFF, 0xE0, 0x00, // ## ## ## #################### 0x70, 0x70, 0x1C, 0x1E, 0x00, 0x00, 0x10, 0x00, // ### ### ### #### # 0x1F, 0xC0, 0x07, 0x74, 0x00, 0x05, 0x08, 0x00, // ####### ### ### # # # # 0x00, 0x00, 0x01, 0xC4, 0x01, 0x07, 0x08, 0x00, // ### # # ### # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0x00, 0x0F, 0xE0, 0x04, 0x20, 0x00, 0x08, 0x00, // ####### # # # 0xC0, 0x18, 0x30, 0x04, 0x00, 0x3C, 0x09, 0xC0, // ## ## ## # #### # ### 0x70, 0x70, 0x1C, 0x1C, 0x00, 0x22, 0x0A, 0x20, // ### ### ### ### # # # # # 0x1F, 0xC0, 0x07, 0xF4, 0x3A, 0x21, 0x8C, 0x20, // ####### ####### # ### # # ## ## # 0x00, 0x00, 0x00, 0x04, 0x30, 0x20, 0x78, 0x20, // # ## # #### # 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x20, // # # # 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x20, // # # # 0x00, 0x00, 0x00, 0x7C, 0x01, 0x63, 0x81, 0x10, // ##### # ## ### # # 0x00, 0x07, 0xC0, 0xC4, 0xC0, 0x63, 0x93, 0x90, // ##### ## # ## ## ### # ### # 0xC0, 0x1C, 0x71, 0x84, 0x00, 0x62, 0x9A, 0x90, // ## ### ### ## # ## # # ## # # # 0x70, 0x70, 0x1F, 0x7C, 0x04, 0x7A, 0x00, 0x70, // ### ### ##### ##### # #### # ### 0x1F, 0xC0, 0x02, 0x44, 0x20, 0x7C, 0x92, 0xF0, // ####### # # # # ##### # # # #### 0x00, 0x00, 0x03, 0xC4, 0x20, 0x60, 0xFE, 0x20, // #### # # ## ####### # 0x00, 0x00, 0x01, 0x86, 0x00, 0x10, 0x00, 0xC0, // ## ## # ## 0x00, 0x0F, 0xE0, 0x09, 0xFF, 0xFF, 0xFF, 0x00, // ####### # ######################### 0xE0, 0x38, 0x78, 0x09, 0xFF, 0xFF, 0xFF, 0x00, // ### ### #### # ######################### 0x38, 0xE0, 0x0E, 0x19, 0x24, 0x0C, 0x52, 0x00, // ### ### ### ## # # # ## # # # 0x0F, 0x80, 0x03, 0xEE, 0x1C, 0x03, 0xCE, 0x00, // ##### ##### ### ### #### ### }; const unsigned char PROGMEM nyan5 [] = { 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xE0, 0x00, // #################### 0xF0, 0x0F, 0xFE, 0x02, 0x00, 0x00, 0x10, 0x00, // #### ########### # # 0x1F, 0xFC, 0x03, 0xFC, 0x00, 0x00, 0x08, 0x00, // ########### ######## # 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x08, 0x00, // # ## # 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x20, 0x03, 0x88, 0x00, // # # ### # 0x00, 0x00, 0x07, 0xFC, 0x00, 0x31, 0x8B, 0x00, // ######### ## ## # ## 0xF0, 0x07, 0xFC, 0x04, 0x00, 0x4C, 0x0C, 0xC0, // #### ######### # # ## ## ## 0x1F, 0xFC, 0x07, 0xFC, 0x62, 0x42, 0x08, 0xC0, // ########### ######### ## # # # # ## 0x00, 0x00, 0x07, 0xC4, 0x60, 0x41, 0xF0, 0xC0, // ##### # ## # ##### ## 0x00, 0x00, 0x0C, 0x7C, 0x00, 0x40, 0x00, 0xC0, // ## ##### # ## 0x00, 0x00, 0x0C, 0x7C, 0x00, 0x40, 0x00, 0xC0, // ## ##### # ## 0x00, 0x00, 0x0F, 0x0C, 0x01, 0x80, 0x00, 0x20, // #### ## ## # 0x00, 0x00, 0x01, 0xF4, 0xC0, 0x8E, 0x27, 0x20, // ##### # ## # ### # ### # 0x00, 0x00, 0x00, 0x3C, 0x00, 0x8A, 0x35, 0x20, // #### # # # ## # # # 0x00, 0x00, 0x00, 0x04, 0x04, 0xB0, 0x00, 0xE0, // # # # ## ### 0x00, 0x00, 0x03, 0xFC, 0x20, 0xB2, 0x45, 0xE0, // ######## # # ## # # # #### 0xF8, 0x0F, 0xFE, 0x0C, 0x20, 0x43, 0xFC, 0xC0, // ##### ########### ## # # ######## ## 0x0F, 0xF8, 0x00, 0x3E, 0x00, 0x20, 0x01, 0x00, // ######### ##### # # 0x00, 0x00, 0x00, 0x43, 0xFF, 0xFF, 0xFE, 0x00, // # ######################### 0x00, 0x00, 0x07, 0xC3, 0xFF, 0xFF, 0xFE, 0x00, // ##### ######################### 0xE0, 0x07, 0xFC, 0x45, 0x10, 0x12, 0x48, 0x00, // ### ######### # # # # # # # # 0x3F, 0xFC, 0x07, 0xF8, 0xE0, 0x1E, 0x38, 0x00, // ############ ######## ### #### ### }; const unsigned char PROGMEM nyan6 [] = { 0x3F, 0xF8, 0x03, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, // ########### ############################# 0xF0, 0x0F, 0xFE, 0x02, 0x00, 0x00, 0x10, 0x00, // #### ########### # # 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, // # # 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x08, 0x00, // # # # 0x00, 0x00, 0x00, 0x04, 0x60, 0x30, 0x0B, 0x00, // # ## ## # ## 0x00, 0x00, 0x00, 0x04, 0x60, 0x31, 0x8B, 0x00, // # ## ## ## # ## 0x3F, 0xFC, 0x03, 0xFC, 0x00, 0x4D, 0x8C, 0xC0, // ############ ######## # ## ## ## ## 0xF0, 0x07, 0xFE, 0x04, 0x00, 0x42, 0x08, 0xC0, // #### ########## # # # # ## 0x00, 0x00, 0x01, 0xC4, 0x06, 0x41, 0xF0, 0xC0, // ### # ## # ##### ## 0x00, 0x00, 0x02, 0x44, 0x00, 0x40, 0x00, 0xC0, // # # # # ## 0x00, 0x00, 0x02, 0x7C, 0x00, 0x80, 0x00, 0x20, // # ##### # # 0x00, 0x00, 0x02, 0x7C, 0x00, 0x87, 0x07, 0x20, // # ##### # ### ### # 0x00, 0x00, 0x03, 0x04, 0x01, 0x8D, 0x05, 0x20, // ## # ## ## # # # # 0x00, 0x00, 0x01, 0xC4, 0xC0, 0x89, 0x35, 0x20, // ### # ## # # # ## # # # 0x1F, 0xF8, 0x03, 0xFC, 0x44, 0xB0, 0x00, 0xE0, // ########## ######## # # # ## ### 0xF0, 0x0F, 0xFE, 0xC4, 0x04, 0xB2, 0x25, 0xE0, // #### ########### ## # # # ## # # # #### 0x00, 0x00, 0x00, 0x04, 0x20, 0x43, 0xFC, 0xC0, // # # # ######## ## 0x00, 0x00, 0x00, 0x0C, 0x20, 0x60, 0x01, 0x00, // ## # ## # 0x00, 0x00, 0x00, 0x36, 0x00, 0x1F, 0xFE, 0x00, // ## ## ############ 0x00, 0x00, 0x00, 0x43, 0xFF, 0xFF, 0xE8, 0x00, // # ##################### # 0x1F, 0xFC, 0x07, 0xC3, 0xFF, 0xFF, 0xE8, 0x00, // ########### ##### ##################### # 0xF0, 0x07, 0xFC, 0x45, 0x10, 0x12, 0x48, 0x00, // #### ######### # # # # # # # # 0x00, 0x00, 0x00, 0x79, 0xE0, 0x1C, 0x38, 0x00, // #### #### ### ### }; const unsigned char PROGMEM star1 [] = { 0x80, // # }; const unsigned char PROGMEM star2 [] = { 0x40, // # 0xA0, // # # 0x40, // # }; const unsigned char PROGMEM star3 [] = { 0x40, // # 0xA0, // # # 0x40, // # }; const unsigned char PROGMEM star4 [] = { 0x10, // # 0x10, // # 0x00, // 0xD6, // ## # ## 0x00, // 0x10, // # 0x10, // # }; const unsigned char PROGMEM star5 [] = { 0x10, // # 0x44, // # # 0x00, // 0x82, // # # 0x00, // 0x44, // # # 0x10, // # }; const unsigned char PROGMEM star6 [] = { 0x20, // # 0x00, // 0x88, // # # 0x00, // 0x20, // # }; #define NUMFLAKES3 140 #define NUMFLAKES4 140 #define NUMFLAKES5 120 int count7 =0; int count8 =0; int standy =0; int nyancounter =0; void setup() { tft.begin(); tft.fillScreen(ILI9341_BLACK); tft.setRotation(3); } void loop(void) { count7 = 0; count8 =2; standy =1; nyan(nyan1, 64, 128); } int nyans1 =7; int cats33 =5; int nyansc1 =0; int nyanc1 =0; int nyanc2 =0; int nyanc3 =0; int nyand1 =0; int nyand2 =0; int cats2 =60; int stary1 = 7; int stary2 = 0; int starc1 = 0; int stars1 = 25; int starposy =0; int starposx =135; long color =0; long colorc =0; int nyanposy =0; int nyanposx =0; int g = 0; int f1 = 0; void nyan(const uint8_t *bitmap, uint8_t w, uint8_t h) { uint8_t nyanis[NUMFLAKES3][30]; uint8_t nyanis2[NUMFLAKES4][30]; uint8_t starys[NUMFLAKES5][50]; // initialize for (uint8_t f1=0; f1< nyans1; f1++) { nyanis2[f1][nyanposx] =0;// random(0,168); nyanis[f1][nyanposy] = random(0,214); } for (uint8_t g=0; g< stars1; g++) { starys[g][starposy] = random (0,247); starys[g][starposx] = random (160,250); } while (count8 ==2) { if (nyancounter <700) { //dauernyans for (uint8_t g=0; g< stars1; g++) { starc1++; starys[g][starposx] *= 0.97; starys[g][starposx] -= random(2,7); if (starys[g][starposx] < 7) { starys[g][starposx] = random(160,220) ; starys[g][starposy] = random(0,233); } if (starc1 == 1) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) +3, (starys[g][starposy]) + 3, star1,1, 1, (long) random(65535)); } if (starc1 == 2) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) +2, (starys[g][starposy]) + 2, star2,3, 3, (long) random(65535)); } if (starc1 == 3) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) +2, (starys[g][starposy])+ 2, star3,3, 3, (long) random(65535)); } if (starc1 == 4) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) , (starys[g][starposy]) , star4,7, 7, (long) random(65535)); } if (starc1 == 5) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) , (starys[g][starposy]), star5,7, 7, (long) random(65535)); } if (starc1 == 6) { tft.drawBitmap(((starys[g][starposx]*2) -stary1) +2, (starys[g][starposy]) +2, star6,5, 5, (long) random(65535)); } if (starc1 == 7) { starc1 = 1; } } for (uint8_t f1=0; f1< nyans1; f1++) { if (nyanis2[f1][nyanposx] < 100) {nyanis2[f1][nyanposx] /= 1.125; nyanis2[f1][nyanposx] += random(5,15);} if (nyanis2[f1][nyanposx] > 95) {nyanis2[f1][nyanposx] *= 1.03; nyanis2[f1][nyanposx] += random(1,3);} if (nyanis2[f1][nyanposx] > 209) {nyanis[f1][nyanposy] = random(0,214);} nyanc2++; colorc +=random(0,300); color =(f1*random(5,20)) +colorc; if (color >=65535) {colorc=0;} if (nyanc2 == 1) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan1,60, 23, color); } if (nyanc2 == 2) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan2,60, 23, (color +random(50,100))); } if (nyanc2 == 3) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan3,60, 23, (color +random(100,150))); } if (nyanc2 == 4) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan4,60, 23, (color +random(150,200))); } if (nyanc2 == 5) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan5,60, 23, (color +random(200,250))); } if (nyanc2 == 6) { tft.drawBitmap(((nyanis2[f1][nyanposx]*2) -cats2), nyanis[f1][nyanposy] -cats33, nyan6,60, 23, (color +random(250,300))); } if (nyanc2 >= 7) {nyanc2 = 1;} } } // delay(2); tft.fillScreen(ILI9341_BLACK); } }