diff --git a/src/main.cpp b/src/main.cpp index 465590f..069d0e4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,10 +8,11 @@ #include #include #include +#include // const char* ssid = "VSMI-Guest"; // const char* password = "h3ll0vsmi"; -WebSocketsServer webSocket = WebSocketsServer(81); // Sử dụng cổng 81 -std::vector frame_data; // Dùng để lưu trữ dữ liệu nhận được +WebSocketsServer webSocket = WebSocketsServer(81); // Sử dụng cổng 81 +std::vector frame_data; // Dùng để lưu trữ dữ liệu nhận được const char *ssid = "VIETTEL_txXZQ27z"; const char *password = "CCF5A3K9"; @@ -129,24 +130,27 @@ void receivePixels(const std::vector &data) } } -void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) { - switch(type) { +void webSocketEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t length) +{ + switch (type) + { case WStype_BIN: - // Nhận dữ liệu và thêm vào frame_data - frame_data.insert(frame_data.end(), payload, payload + length); - // Kiểm tra nếu dữ liệu đã đầy đủ - if (frame_data.size() == 16384*2) { // 16,384 bytes - // Xử lý dữ liệu frame_data - receivePixels(frame_data); - //Serial.println(frame_data.size()); - // Ví dụ: chuyển đổi và hiển thị lên ma trận LED - frame_data.clear(); // Xóa dữ liệu sau khi xử lý - } - break; + // Nhận dữ liệu và thêm vào frame_data + frame_data.insert(frame_data.end(), payload, payload + length); + // Kiểm tra nếu dữ liệu đã đầy đủ + if (frame_data.size() == 16384 * 2) + { // 16,384 bytes + // Xử lý dữ liệu frame_data + receivePixels(frame_data); + // Serial.println(frame_data.size()); + // Ví dụ: chuyển đổi và hiển thị lên ma trận LED + frame_data.clear(); // Xóa dữ liệu sau khi xử lý + } + break; default: frame_data.clear(); - break; - } + break; + } } void receivePixels(char *packet, int length) @@ -299,6 +303,39 @@ void plasma_palette() fps = 0; } } + +void draw_spacecraft(int x, int y) +{ + for (int i = 0; i < 20; i++) + { + for (int j = 0; j < 20; j++) + { + uint16_t color = aircraft[j * 20 + i]; + int _x = x + i; + int _y = y + i; + if (_x <= 128) + { + if (_y <= 64) + { + dma_display->drawPixel(_x, _y, color); + } + else + { + _y = _y - 64; + _x = _x + 128; + + dma_display->drawPixel(_x, _y, color); + } + } + else + { + } + + dma_display->drawPixel(_X, _y, color); + } + } +} + void setup() { // put your setup code here, to run once: @@ -327,38 +364,10 @@ void setup() dma_display->begin(); // setup the LED matrix dma_display->setBrightness8(50); // 0-255 dma_display->clearScreen(); - //dma_display->fillScreenRGB888(0, 255, 0); + // dma_display->fillScreenRGB888(0, 255, 0); currentPalette = RainbowColors_p; } void loop() { webSocket.loop(); - //int packetSize = udp.parsePacket(); - // if (packetSize) - // { - // int len = udp.read(incomingPacket, MAX_UDP_SIZE); - // if (len > 0) - // { - // // Serial.println(len); - // if (len < 1000) - // ; - // { - // recieve_done = true; - // } - // receivePixels(incomingPacket, len); - // } - - // // //Use PSRAM - // // int len = udp.read(incomingPacket_psram, MAX_UDP_SIZE); - // // if (len > 0) { - // // //receivePixels(incomingPacket_psram, len); - // // Serial.println(len); - // // } - // } - // else - // { - // // plasma_palette(); - // // Serial.println("No packet received"); - // } - // plasma_palette(); } diff --git a/src/spacecraft.h b/src/spacecraft.h new file mode 100644 index 0000000..ccf875c --- /dev/null +++ b/src/spacecraft.h @@ -0,0 +1,87 @@ +#include + +const uint16_t aircraft[24 * 24] = { +0xBF7F, 0xBF7F, 0xC75F, 0xC75F, 0xCF5F, 0xC75F, 0xBF7F, 0xBF7F, +0xBF5F, 0xCF9F, 0xD75D, 0x8470, 0x7C4F, 0xDF9C, 0xC79F, 0xBF7F, +0xC75F, 0xC75F, 0xC75F, 0xC77F, 0xC77F, 0xBF7F, 0xBF7F, 0xBF7F, +0xBF7F, 0xC77F, 0xC75F, 0xC75F, 0xC75F, 0xC75F, 0xBF7F, 0xBF7F, +0xC75F, 0xCF3E, 0x9514, 0x5AEA, 0x5B4B, 0x8CF2, 0xCF7E, 0xBF5F, +0xC77F, 0xC75F, 0xC75F, 0xC77F, 0xC77F, 0xBF7F, 0xBF7F, 0xBF7F, +0xC77F, 0xC75F, 0xC75F, 0xC75F, 0xC77F, 0xC77F, 0xBF7F, 0xC75F, +0xDFBF, 0xA5B8, 0x2125, 0x73AE, 0x73AE, 0x2144, 0xA5D7, 0xD7BF, +0xC75F, 0xC75F, 0xC75F, 0xC77F, 0xC77F, 0xC77F, 0xC77F, 0xC77F, +0xC77F, 0xC77F, 0xC75F, 0xC77F, 0xBF7F, 0xBF7F, 0xBF7F, 0xC77F, +0xC71D, 0x63B0, 0x7C52, 0x5B2D, 0x530C, 0x8492, 0x63AF, 0xC71D, +0xC75E, 0xC77F, 0xC75F, 0xC77F, 0xC77F, 0xC77F, 0xC75F, 0xC75F, +0xBF7F, 0xBF5F, 0xC77F, 0xC77F, 0xBF7F, 0xBF7F, 0xBF7F, 0xC77F, +0xBEDC, 0x326B, 0x7472, 0x3AAB, 0x3AEC, 0x6C31, 0x3A8B, 0xBEDC, +0xC77F, 0xC77F, 0xC75F, 0xC77F, 0xC77F, 0xC77F, 0xC75F, 0xC75F, +0xC77F, 0xC75F, 0xC75F, 0xC77F, 0xC75F, 0xC75F, 0xC77F, 0xCF7F, +0xBEDC, 0x430D, 0x32CC, 0x6452, 0x6472, 0x32AC, 0x4B0D, 0xBEBC, +0xCF7F, 0xC77F, 0xC75F, 0xC77F, 0xC77F, 0xC77F, 0xC75F, 0xC75F, +0xCF5F, 0xC73F, 0xCF5F, 0xCF5F, 0xC75F, 0xC73F, 0xCF5F, 0xD77F, +0xC6FD, 0x3AAB, 0x5BF0, 0x32CC, 0x2A8B, 0x6411, 0x3A6B, 0xCEFD, +0xCF7F, 0xC77F, 0xBF5F, 0xC77F, 0xC77F, 0xC75F, 0xC75F, 0xC77F, +0xCF5F, 0xCF3F, 0xCF5F, 0xC75F, 0xC75F, 0xC73F, 0xCF5F, 0xD75E, +0x9D97, 0x3A8A, 0x7C72, 0x638E, 0x63AF, 0x7C52, 0x428B, 0x9D78, +0xCF7F, 0xC77F, 0xC75F, 0xC77F, 0xC77F, 0xC75F, 0xC75F, 0xC77F, +0xCF7F, 0xC75F, 0xBF5F, 0xC79F, 0xBF5E, 0xC77E, 0xC75D, 0xDFBF, +0x426A, 0xADB6, 0x5AA9, 0x946F, 0x946F, 0x5AA9, 0xB596, 0x426B, +0xD7BF, 0xC75E, 0xC77F, 0xC75F, 0xC77F, 0xBF5F, 0xC75F, 0xBF5F, +0xC75E, 0xC77F, 0xC79F, 0xBF5F, 0xC79F, 0xC77E, 0xDFBF, 0x63AE, +0x9D34, 0x9490, 0x72E8, 0x6224, 0x6224, 0x72E8, 0x9C71, 0xA515, +0x63D0, 0xD7BF, 0xC73E, 0xC77F, 0xBF3F, 0xC75F, 0xC75F, 0xC77F, +0xC73F, 0xC77F, 0xBF7F, 0xBF3F, 0xC75F, 0xCF7E, 0x63D0, 0x9D35, +0x83EF, 0x4184, 0x7285, 0xAC0A, 0xAC09, 0x7A85, 0x4964, 0x83CF, +0x9535, 0x63D0, 0xCF5E, 0xCF7F, 0xC73F, 0xC73F, 0xC77F, 0xBF3F, +0xC75F, 0xC77F, 0xBF3F, 0xCF9F, 0xD79F, 0x63F1, 0x8CD4, 0x8431, +0x734C, 0x5A46, 0x7264, 0x8283, 0x8282, 0x7243, 0x6226, 0x732C, +0x8431, 0x8CF4, 0x6BF0, 0xD77F, 0xCF7F, 0xC73E, 0xCF7F, 0xC77F, +0xBF7F, 0xBF3F, 0xC75F, 0xD79F, 0x5B90, 0x94F4, 0x8C93, 0x7BF0, +0xCE37, 0x5226, 0x6A63, 0x59C0, 0x59C0, 0x6A63, 0x5A25, 0xD617, +0x7BEF, 0x8CB2, 0x9514, 0x638F, 0xD77F, 0xCF5F, 0xC75F, 0xC75F, +0xBF7F, 0xC77F, 0xCF7F, 0x63B0, 0x8CD4, 0x7C31, 0x10A3, 0xDEDB, +0xCDF6, 0x5A25, 0x6263, 0xB4AA, 0xB4AA, 0x6243, 0x5A25, 0xCDD6, +0xDEB9, 0x10A2, 0x8430, 0x94F4, 0x63D0, 0xCF5E, 0xC75E, 0xC75E, +0xCF7F, 0xCF7E, 0x6BCF, 0xA595, 0x8C91, 0x8450, 0x41E7, 0x62AA, +0x72C9, 0x59C3, 0x7263, 0xAC09, 0xA429, 0x6A64, 0x51C4, 0x72C9, +0x6ACA, 0x41E6, 0x8430, 0x8C71, 0x9D76, 0x63D0, 0xCF7E, 0xCF9F, +0xCF3E, 0x6C10, 0x634B, 0x5AE9, 0x2962, 0x632A, 0x18A2, 0x62AA, +0x6248, 0x4963, 0x7244, 0x5140, 0x4940, 0x6A64, 0x4183, 0x5A48, +0x62A9, 0x18A1, 0x6B2B, 0x2143, 0x52C9, 0x5B4C, 0x6C10, 0xC73D, +0xD6FD, 0x1924, 0x7BCB, 0x3160, 0x62E6, 0x6349, 0x31A6, 0x4A8B, +0x528A, 0x20A1, 0x2020, 0x82C7, 0x7AE7, 0x1820, 0x20A1, 0x5289, +0x52AA, 0x31A5, 0x6B29, 0x62C6, 0x3160, 0x7BEC, 0x1943, 0xCF1C, +0xC69C, 0x3208, 0xCE35, 0x4A03, 0x5285, 0x638A, 0xBE99, 0xCF1D, +0xC67A, 0x39C7, 0x4164, 0x6A46, 0x6246, 0x3984, 0x39C6, 0xC67A, +0xCF1C, 0xC699, 0x634A, 0x5285, 0x4A23, 0xC634, 0x3A27, 0xBEBA, +0xD77F, 0x84F4, 0x29C6, 0x8470, 0xDFBC, 0xDFFE, 0xC75D, 0xCF5E, +0xCEFD, 0x10E4, 0x3965, 0x1881, 0x1881, 0x31A5, 0x1104, 0xCEFC, +0xCF5F, 0xCF5E, 0xE7BE, 0xEFBD, 0x8490, 0x29C5, 0x8D14, 0xCF7E, +0xCF7F, 0xCF5E, 0xB67B, 0xCF3D, 0xC77D, 0xBF5D, 0xBF3D, 0xCF9F, +0xCF5E, 0x424A, 0x1861, 0x51C5, 0x49E4, 0x1880, 0x4249, 0xCF5E, +0xCF9F, 0xBF5F, 0xC73D, 0xCF5E, 0xCF3D, 0xAE59, 0xCF7F, 0xC77F, +0xCF5E, 0xC75F, 0xC79F, 0xBF9F, 0xBF7E, 0xC77F, 0xC77F, 0xBF1E, +0xDFBF, 0xA555, 0x6204, 0xF5D1, 0xF5F0, 0x6203, 0xA555, 0xD7BF, +0xB73E, 0xBF7F, 0xC77F, 0xBF5F, 0xC77F, 0xCF7F, 0xC75F, 0xBF5F, +0xC73E, 0xCF9F, 0xBF7F, 0xB75F, 0xC79F, 0xC77F, 0xC73F, 0xCF5F, +0xCF9F, 0xB5F8, 0x51A3, 0xCCCC, 0xCCCB, 0x59A2, 0xB5F8, 0xCF9F, +0xC79F, 0xBF5F, 0xC77F, 0xC77F, 0xBF5F, 0xBF7F, 0xC79F, 0xBF5F, +0xC75F, 0xC77F, 0xBF5F, 0xBF5F, 0xC77F, 0xC75E, 0xCF5F, 0xC73F, +0xC75F, 0xCF7F, 0xA554, 0x4A46, 0x4A46, 0xA553, 0xD77F, 0xC73F, +0xC75E, 0xC79F, 0xBF5F, 0xC79F, 0xBF7F, 0xBF5F, 0xC77F, 0xC75F, +0xC77F, 0xBF5F, 0xC79F, 0xC77F, 0xC75E, 0xC77E, 0xCF5F, 0xCF5F, +0xC75F, 0xC75F, 0xDFDF, 0x9575, 0x9D74, 0xE7BE, 0xCF3E, 0xCF3F, +0xC75E, 0xCF9F, 0xC77F, 0xBF7F, 0xC79F, 0xBF5F, 0xC75F, 0xC77F, +}; + +const uint16_t enemy[8 * 8] = { +0x6B0B, 0x4A07, 0x320A, 0x62E9, 0x5267, 0x2187, 0x41E6, 0x62EA, +0x39A6, 0x5A07, 0x3985, 0x83CC, 0x6B2A, 0x3985, 0x5227, 0x3185, +0x1987, 0x49A4, 0x6A44, 0xAC29, 0x8B67, 0x51A3, 0x3964, 0x21A7, +0x4964, 0x7AC8, 0x7329, 0xBC05, 0x9B43, 0x5246, 0x6A67, 0x5184, +0x4164, 0x732A, 0x6B2A, 0xAB64, 0x8B03, 0x4A47, 0x6288, 0x4964, +0x5ACA, 0x4A06, 0x2923, 0x6A43, 0x6243, 0x2944, 0x3984, 0x41E6, +0xB554, 0x7269, 0x3104, 0x28E2, 0x2902, 0x39A5, 0x5123, 0x5164, +0x83AE, 0x49C6, 0x15FD, 0x6984, 0x6964, 0xF800, 0x41A5, 0x5A27, +};