128x128
CalisJI 2024-08-20 09:24:12 +07:00
parent e1aa05cd75
commit 9c2106d5f0
2 changed files with 142 additions and 46 deletions

View File

@ -8,6 +8,7 @@
#include <esp_wifi.h>
#include <ArduinoJson.h>
#include <WebSocketsServer.h>
#include <spacecraft.h>
// const char* ssid = "VSMI-Guest";
// const char* password = "h3ll0vsmi";
WebSocketsServer webSocket = WebSocketsServer(81); // Sử dụng cổng 81
@ -129,13 +130,16 @@ void receivePixels(const std::vector<uint8_t> &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
if (frame_data.size() == 16384 * 2)
{ // 16,384 bytes
// Xử lý dữ liệu frame_data
receivePixels(frame_data);
// Serial.println(frame_data.size());
@ -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:
@ -333,32 +370,4 @@ void setup()
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();
}

87
src/spacecraft.h Normal file
View File

@ -0,0 +1,87 @@
#include <stdint.h>
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,
};