├── .github └── workflows │ └── build.yml ├── Code ├── FastLED_Test │ └── FastLED_Test.ino ├── LED_Wall_Reciever │ └── LED_Wall_Reciever.ino ├── LED_Wall_Source │ ├── LED_Wall_Source.ino │ └── html.h ├── LMCSHD_Test │ └── LMCSHD_Test.ino ├── MAX_CURRENT_TEST │ └── MAX_CURRENT_TEST.ino ├── Single_LED_Wall_Reciever │ └── Single_LED_Wall_Reciever.ino └── Single_LED_Wall_Source │ ├── Single_LED_Wall_Source.ino │ └── html.h ├── LED Wall STLs ├── END Wall Grid 4x6 (Screwtype).stl ├── END Wall Grid 4x6.stl ├── END Wall Grid 6x6 (Screwtype).stl ├── END Wall Grid 6x6.stl ├── Wall Grid 4x6 (Screwtype).stl ├── Wall Grid 4x6.stl ├── Wall Grid 6x6 (Screwtype).stl └── Wall Grid 6x6.stl ├── LMCSHD_TechRandom_Release ├── LMCSHD.exe ├── LMCSHD.exe.config ├── LMCSHD.pdb ├── NAudio.dll ├── NAudio.xml ├── Xceed.Wpf.AvalonDock.Themes.Aero.dll ├── Xceed.Wpf.AvalonDock.Themes.Metro.dll ├── Xceed.Wpf.AvalonDock.Themes.VS2010.dll ├── Xceed.Wpf.AvalonDock.dll └── Xceed.Wpf.Toolkit.dll ├── README.md └── link.txt /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: PlatformIO CI 2 | on: [push, pull_request] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | strategy: 7 | matrix: 8 | example: 9 | - Code/FastLED_Test 10 | - Code/LED_Wall_Reciever 11 | - Code/LED_Wall_Source 12 | - Code/LMCSHD_Test 13 | - Code/MAX_CURRENT_TEST 14 | - Code/Single_LED_Wall_Reciever 15 | - Code/Single_LED_Wall_Source 16 | steps: 17 | - uses: actions/checkout@v3 18 | - uses: actions/cache@v3 19 | with: 20 | path: | 21 | ~/.cache/pip 22 | ~/.platformio/.cache 23 | key: ${{ runner.os }}-pio 24 | - uses: actions/setup-python@v4 25 | with: 26 | python-version: '3.9' 27 | - name: Install PlatformIO Core 28 | run: pip install --upgrade platformio 29 | - name: Install Libraries 30 | run: | 31 | pio pkg install -g -l "https://github.com/FastLED/FastLED/archive/refs/heads/master.zip" 32 | pio pkg install -g -l "links2004/WebSockets@^2.3.7" 33 | - name: Build Sketch 34 | run: pio ci --board=d1_mini 35 | env: 36 | PLATFORMIO_CI_SRC: ${{ matrix.example }} -------------------------------------------------------------------------------- /Code/FastLED_Test/FastLED_Test.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #define WIDTH 36 3 | #define HEIGHT 16 4 | #define LED_PIN 2 5 | 6 | const int NUM_LEDS = WIDTH * HEIGHT; 7 | CRGB leds[NUM_LEDS]; 8 | 9 | void setup() { 10 | FastLED.addLeds(leds, NUM_LEDS); 11 | } 12 | 13 | void loop() { 14 | for (int i = 0; i < NUM_LEDS; i++){ 15 | leds[i].r = 100; 16 | FastLED.show(); 17 | leds[i].r = 0; 18 | delay(10); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/LED_Wall_Reciever/LED_Wall_Reciever.ino: -------------------------------------------------------------------------------- 1 | //----------------------------------------------- 2 | // Tech Random DIY 3 | // LED_WALL_Receiver 4 | // Chris Parker 5 | //----------------------------------------------- 6 | // WebSocket Globals 7 | #include 8 | #include 9 | #include 10 | 11 | WebSocketsClient webSocket; 12 | #define PAYLOAD_MAX 0x1F 13 | #define PAYLOAD_MAX_G 0x3F 14 | //----------------------------------------------- 15 | // FastLED Gloabals 16 | #include 17 | #define WIDTH 16 18 | #define HEIGHT 36 19 | #define LED_PIN 2 20 | #define MAX_BRIGHTNESS 200 21 | 22 | const int NUM_LEDS = WIDTH * HEIGHT; 23 | CRGB leds[NUM_LEDS]; 24 | //----------------------------------------------- 25 | const char* ssid = "YOUR_SSID"; 26 | const char* password = "YOUR_PASS"; 27 | //----------------------------------------------- 28 | 29 | /***************************************************************** 30 | * webSocketEvent() 31 | * Parameters: WStype_t type, uint8_t * payload, size_t length 32 | * Returns: void 33 | * 34 | * On connection the server will ask "Who?" and expect a 35 | * response with the device number. 36 | * Receives data from the server as a payload, 37 | * then store that data into the LED array buffer before 38 | * pushing the pixel data to the display. 39 | *****************************************************************/ 40 | void webSocketEvent(WStype_t type, uint8_t * payload, size_t welength) { 41 | // Check for data 42 | if (type == WStype_TEXT){ 43 | if (strcmp((char *)payload, "Who?") == 0){ 44 | webSocket.sendTXT("Device 4"); 45 | return; 46 | } 47 | // Loop through LED array 48 | for (int i = 0; i < NUM_LEDS; i++){ 49 | // Seperate payload data into individual colors 50 | // Get the first 5 bits of byte 1 51 | int red = *(payload + (2*i)) >> 3; 52 | // Get the last 3 bits of byte 1 and the first 3 bits of byte 2 53 | int green = ((*(payload + (2*i)) & 0x07) << 3) | (*(payload + (2*i) + 1) >> 5); 54 | // Get the last 5 bits of byte 55 | int blue = *(payload + (2*i) + 1) & 0x1F; 56 | leds[i].r = map(red, 0, PAYLOAD_MAX, 0, MAX_BRIGHTNESS); 57 | leds[i].g = map(green, 0, PAYLOAD_MAX_G, 0, MAX_BRIGHTNESS); 58 | leds[i].b = map(blue, 0, PAYLOAD_MAX, 0, MAX_BRIGHTNESS); 59 | } 60 | // Refresh Display 61 | FastLED.show(); 62 | } 63 | } 64 | /***************************************************************** 65 | * setup() 66 | * 67 | * Start serial, connect to WiFi, then start the websocket. 68 | *****************************************************************/ 69 | void setup() { 70 | Serial.begin(115200); 71 | // Initialize LED Array 72 | FastLED.addLeds(leds, NUM_LEDS); 73 | //----------------------------------------------- 74 | // Connect to WiFi 75 | Serial.print("Connecting to "); 76 | Serial.println(ssid); 77 | WiFi.begin(ssid, password); 78 | 79 | while(WiFi.status() != WL_CONNECTED) { 80 | Serial.print("."); 81 | delay(500); 82 | } 83 | Serial.println(""); 84 | Serial.println("WiFi connected."); 85 | Serial.println("IP address: "); 86 | Serial.println(WiFi.localIP()); 87 | //----------------------------------------------- 88 | // server address, port and URL 89 | webSocket.begin("192.168.1.121", 81, "/"); 90 | // event handler 91 | webSocket.onEvent(webSocketEvent); 92 | // try again if connection has failed 93 | webSocket.setReconnectInterval(5000); 94 | //----------------------------------------------- 95 | leds[0].r = 100; 96 | FastLED.show(); 97 | } 98 | /***************************************************************** 99 | * loop() 100 | * 101 | * Handles web socket. 102 | *****************************************************************/ 103 | void loop() { 104 | webSocket.loop(); 105 | } 106 | -------------------------------------------------------------------------------- /Code/LED_Wall_Source/LED_Wall_Source.ino: -------------------------------------------------------------------------------- 1 | //----------------------------------------------- 2 | // Tech Random DIY 3 | // LED_WALL_Source 4 | // Chris Parker 5 | //----------------------------------------------- 6 | // WebSocket Globals 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "html.h" //Seperate file with webpage 13 | ESP8266WebServer server(80); 14 | WebSocketsServer webSocket = WebSocketsServer(81); 15 | //----------------------------------------------- 16 | // LED Gloabals 17 | #define WIDTH 64 18 | #define HEIGHT 36 19 | const int NUM_LEDS = WIDTH * HEIGHT; 20 | char panel1[NUM_LEDS * 2]; 21 | char panel2[NUM_LEDS * 2]; 22 | char panel3[NUM_LEDS * 2]; 23 | char panel4[NUM_LEDS * 2]; 24 | //----------------------------------------------- 25 | // Client Globals (One for each screen) 26 | uint8_t screen1 = 99; 27 | uint8_t screen2 = 99; 28 | uint8_t screen3 = 99; 29 | uint8_t screen4 = 99; 30 | //----------------------------------------------- 31 | const char* ssid = "YOUR_SSID"; 32 | const char* password = "YOUR_PASS"; 33 | //----------------------------------------------- 34 | // Set a Static IP address 35 | IPAddress local_IP(192, 168, 1, 121); 36 | // Set a Gateway IP address 37 | IPAddress gateway(192, 168, 1, 1); 38 | IPAddress subnet(255, 255, 0, 0); 39 | //----------------------------------------------- 40 | /***************************************************************** 41 | * webSocketEvent() 42 | * 43 | * For now the server only sends data so this is empty. 44 | *****************************************************************/ 45 | void webSocketEvent(uint8_t clientNum, WStype_t type, uint8_t *payload, size_t welength) { 46 | switch(type) { 47 | case WStype_DISCONNECTED: 48 | disconnectClient(clientNum); 49 | break; 50 | case WStype_CONNECTED: 51 | webSocket.sendTXT(clientNum, "Who?"); 52 | break; 53 | case WStype_TEXT: 54 | // the payload is a string containing the message from the client 55 | String message = String((char*)payload); 56 | // check if the message starts with "Device " 57 | if (message.startsWith("Device ")) { 58 | // extract the device number from the message 59 | saveClientNum(clientNum, message.substring(7).toInt()); 60 | } 61 | break; 62 | } 63 | } 64 | /***************************************************************** 65 | * webpage() 66 | * 67 | * This function sends the webpage to clients 68 | *****************************************************************/ 69 | void webpage() 70 | { 71 | server.send(200,"text/html", htmlCode); 72 | } 73 | /***************************************************************** 74 | * setDeviceNum() 75 | * 76 | * This function saves each screens clients number 77 | *****************************************************************/ 78 | void saveClientNum(int clientNum, int screenNum){ 79 | switch (screenNum){ 80 | case 1: 81 | screen1 = clientNum; 82 | webSocket.broadcastTXT("C1"); 83 | break; 84 | case 2: 85 | screen2 = clientNum; 86 | webSocket.broadcastTXT("C2"); 87 | break; 88 | case 3: 89 | screen3 = clientNum; 90 | webSocket.broadcastTXT("C3"); 91 | break; 92 | case 4: 93 | screen4 = clientNum; 94 | webSocket.broadcastTXT("C4"); 95 | break; 96 | } 97 | return; 98 | } 99 | /***************************************************************** 100 | * disconnectClient() 101 | * 102 | * Broadcast the client disconnect message 103 | *****************************************************************/ 104 | void disconnectClient(int clientNum){ 105 | webSocket.broadcastTXT("Disconnected"); 106 | if (clientNum == screen1) 107 | webSocket.broadcastTXT("D1"); 108 | if (clientNum == screen2) 109 | webSocket.broadcastTXT("D2"); 110 | if (clientNum == screen3) 111 | webSocket.broadcastTXT("D3"); 112 | if (clientNum == screen4) 113 | webSocket.broadcastTXT("D4"); 114 | } 115 | /***************************************************************** 116 | * setup() 117 | * 118 | * Connect to WiFi, start the server, start the websocket 119 | * connection, then start serial. Serial connection must be as 120 | * fast as possible for the best frame rate. 121 | *****************************************************************/ 122 | void setup() { 123 | //Configure static IP address 124 | WiFi.config(local_IP, gateway, subnet); 125 | 126 | // Connect to Wi-Fi network 127 | WiFi.begin(ssid, password); 128 | while (WiFi.status() != WL_CONNECTED) { 129 | delay(500); 130 | } 131 | 132 | server.on("/", webpage); 133 | server.begin(); 134 | webSocket.begin(); 135 | webSocket.onEvent(webSocketEvent); 136 | 137 | Serial.begin(921600); 138 | } 139 | /***************************************************************** 140 | * loop() 141 | * 142 | * Handles server and web socket. Reads data over serial then 143 | * broadcasts it to all clients. 144 | *****************************************************************/ 145 | void loop() { 146 | server.handleClient(); 147 | webSocket.loop(); 148 | // Read header from LMCSDH 149 | switch(Serial.read()){ 150 | case 0x05: // Request for matrix definition 151 | Serial.println(WIDTH); 152 | Serial.println(HEIGHT); 153 | break; 154 | case 0x42: // Read frame data 155 | // NUM_LEDS * (2 BYTES PER PIXEL) 156 | Serial.readBytes(panel1, NUM_LEDS / 4 * 2); 157 | Serial.readBytes(panel2, NUM_LEDS / 4 * 2); 158 | Serial.readBytes(panel3, NUM_LEDS / 4 * 2); 159 | Serial.readBytes(panel4, NUM_LEDS / 4 * 2); 160 | 161 | //Send Screen Data to the correct client 162 | // NUM_LEDS * (2 BYTES PER PIXEL) 163 | webSocket.sendTXT(screen1, (char *)panel1, NUM_LEDS / 4 * 2); 164 | webSocket.sendTXT(screen2, (char *)panel2, NUM_LEDS / 4 * 2); 165 | webSocket.sendTXT(screen3, (char *)panel3, NUM_LEDS / 4 * 2); 166 | webSocket.sendTXT(screen4, (char *)panel4, NUM_LEDS / 4 * 2); 167 | 168 | Serial.write(0x06); //acknowledge 169 | break; 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /Code/LED_Wall_Source/html.h: -------------------------------------------------------------------------------- 1 | /***************************************************************** 2 | * htmlCode[] 3 | * 4 | * Store the webpage in Program Memory during upload 5 | *****************************************************************/ 6 | const char htmlCode[] PROGMEM = 7 | R"=====( 8 | 9 | 10 | 11 | 12 | 13 | 75 | ESP Web Server 76 | 77 | 78 | 79 | 80 | 81 |
82 |

LED Wall Server

83 |
84 |
85 |
86 |

Connected Clients:

87 |

Screen 1: DISCONNECTED

88 |

Screen 2: DISCONNECTED

89 |

Screen 3: DISCONNECTED

90 |

Screen 4: DISCONNECTED

91 |
92 |
93 | 126 | 127 | 128 | 129 | )====="; 130 | -------------------------------------------------------------------------------- /Code/LMCSHD_Test/LMCSHD_Test.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #define WIDTH 36 3 | #define HEIGHT 16 4 | #define LED_PIN 2 5 | 6 | const int NUM_LEDS = WIDTH * HEIGHT; 7 | 8 | CRGB leds[NUM_LEDS]; 9 | 10 | void setup() 11 | { 12 | FastLED.addLeds(leds, NUM_LEDS); 13 | Serial.begin(115200); 14 | leds[0].r = 100; 15 | FastLED.show(); 16 | } 17 | 18 | void loop() 19 | { 20 | switch(Serial.read()) //read header from LMCSDH 21 | { 22 | case 0x05: //request for matrix definition 23 | Serial.println(WIDTH); 24 | Serial.println(HEIGHT); 25 | break; 26 | 27 | case 0x41: //frame data 28 | //Serial.readBytes((char*)leds, NUM_LEDS * 3); 29 | for (int i = 0; i < NUM_LEDS; i++){ 30 | leds[i].r = Serial.read(); 31 | leds[i].g = Serial.read(); 32 | leds[i].b = Serial.read(); 33 | } 34 | FastLED.show(); 35 | Serial.write(0x06); //acknowledge 36 | break; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Code/MAX_CURRENT_TEST/MAX_CURRENT_TEST.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #define WIDTH 36 3 | #define HEIGHT 16 4 | #define LED_PIN 2 5 | 6 | const int NUM_LEDS = WIDTH * HEIGHT; 7 | CRGB leds[NUM_LEDS]; 8 | 9 | void setup() { 10 | delay(3000); // Powerup delay 11 | FastLED.addLeds(leds, NUM_LEDS); 12 | } 13 | 14 | void loop() { 15 | for (int i = 0; i < NUM_LEDS; i++){ 16 | leds[i] = CRGB::White; 17 | FastLED.show(); 18 | delay(15); 19 | } 20 | for (int i = 0; i < NUM_LEDS; i++){ 21 | leds[i] = CRGB::Black; 22 | } 23 | FastLED.show(); 24 | } 25 | -------------------------------------------------------------------------------- /Code/Single_LED_Wall_Reciever/Single_LED_Wall_Reciever.ino: -------------------------------------------------------------------------------- 1 | //----------------------------------------------- 2 | // Tech Random DIY 3 | // LED_WALL_Receiver 4 | // Chris Parker 5 | //----------------------------------------------- 6 | // WebSocket Globals 7 | #include 8 | #include 9 | #include 10 | 11 | WebSocketsClient webSocket; 12 | //----------------------------------------------- 13 | // FastLED Gloabals 14 | #include 15 | #define WIDTH 16 16 | #define HEIGHT 36 17 | #define LED_PIN 2 18 | 19 | const int NUM_LEDS = WIDTH * HEIGHT; 20 | CRGB leds[NUM_LEDS]; 21 | //----------------------------------------------- 22 | const char* ssid = "YOUR_SSID"; 23 | const char* password = "YOUR_PASS"; 24 | //----------------------------------------------- 25 | 26 | /***************************************************************** 27 | * webSocketEvent() 28 | * Parameters: WStype_t type, uint8_t * payload, size_t length 29 | * Returns: void 30 | * 31 | * Receive data from the server as a payload, 32 | * then store that data into the LED array buffer before 33 | * pushing the pixel data to the display. 34 | *****************************************************************/ 35 | void webSocketEvent(WStype_t type, uint8_t * payload, size_t welength) { 36 | // Check for data 37 | if (type == WStype_TEXT){ 38 | // Loop through LED array 39 | for (int i = 0; i < NUM_LEDS; i++){ 40 | // Copy payload data to led array 41 | leds[i].r = *(payload + (3*i)); 42 | leds[i].g = *(payload + (3*i) + 1); 43 | leds[i].b = *(payload + (3*i) + 2); 44 | } 45 | // Refresh Display 46 | FastLED.show(); 47 | } 48 | } 49 | /***************************************************************** 50 | * setup() 51 | * 52 | * Start serial, connect to WiFi, then start the websocket. 53 | *****************************************************************/ 54 | void setup() { 55 | Serial.begin(115200); 56 | // Initialize LED Array 57 | FastLED.addLeds(leds, NUM_LEDS); 58 | //----------------------------------------------- 59 | // Connect to WiFi 60 | Serial.print("Connecting to "); 61 | Serial.println(ssid); 62 | WiFi.begin(ssid, password); 63 | 64 | while(WiFi.status() != WL_CONNECTED) { 65 | Serial.print("."); 66 | delay(500); 67 | } 68 | Serial.println(""); 69 | Serial.println("WiFi connected."); 70 | Serial.println("IP address: "); 71 | Serial.println(WiFi.localIP()); 72 | //----------------------------------------------- 73 | // server address, port and URL 74 | webSocket.begin("192.168.1.121", 81, "/"); 75 | // event handler 76 | webSocket.onEvent(webSocketEvent); 77 | // try again if connection has failed 78 | webSocket.setReconnectInterval(5000); 79 | //----------------------------------------------- 80 | leds[0].r = 100; 81 | FastLED.show(); 82 | } 83 | /***************************************************************** 84 | * loop() 85 | * 86 | * Handles web socket. 87 | *****************************************************************/ 88 | void loop() { 89 | webSocket.loop(); 90 | } 91 | -------------------------------------------------------------------------------- /Code/Single_LED_Wall_Source/Single_LED_Wall_Source.ino: -------------------------------------------------------------------------------- 1 | //----------------------------------------------- 2 | // Tech Random DIY 3 | // LED_WALL_Source 4 | // Chris Parker 5 | //----------------------------------------------- 6 | // WebSocket Globals 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "html.h" //Seperate file with webpage 13 | ESP8266WebServer server(80); 14 | WebSocketsServer webSocket = WebSocketsServer(81); 15 | //----------------------------------------------- 16 | // LED Gloabals 17 | #define WIDTH 16 18 | #define HEIGHT 36 19 | const int NUM_LEDS = WIDTH * HEIGHT; 20 | char leds[NUM_LEDS * 3]; 21 | //----------------------------------------------- 22 | const char* ssid = "YOUR_SSID"; 23 | const char* password = "YOUR_PASS"; 24 | //----------------------------------------------- 25 | // Set a Static IP address 26 | IPAddress local_IP(192, 168, 1, 121); 27 | // Set a Gateway IP address 28 | IPAddress gateway(192, 168, 1, 1); 29 | IPAddress subnet(255, 255, 0, 0); 30 | //----------------------------------------------- 31 | /***************************************************************** 32 | * webSocketEvent() 33 | * 34 | * For now the server only sends data so this is empty. 35 | *****************************************************************/ 36 | void webSocketEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t welength) { 37 | return; 38 | } 39 | /***************************************************************** 40 | * webpage() 41 | * 42 | * This function sends the webpage to clients 43 | *****************************************************************/ 44 | void webpage() 45 | { 46 | server.send(200,"text/html", htmlCode); 47 | } 48 | /***************************************************************** 49 | * setup() 50 | * 51 | * Connect to WiFi, start the server, start the websocket 52 | * connection, then start serial. Serial connection must be as 53 | * fast as possible for the best frame rate. 54 | *****************************************************************/ 55 | void setup() { 56 | //Configure static IP address 57 | WiFi.config(local_IP, gateway, subnet); 58 | 59 | // Connect to Wi-Fi network 60 | WiFi.begin(ssid, password); 61 | while (WiFi.status() != WL_CONNECTED) { 62 | delay(500); 63 | } 64 | 65 | server.on("/", webpage); 66 | server.begin(); 67 | webSocket.begin(); 68 | webSocket.onEvent(webSocketEvent); 69 | 70 | Serial.begin(921600); 71 | } 72 | /***************************************************************** 73 | * loop() 74 | * 75 | * Handles server and web socket. Reads data over serial then 76 | * broadcasts it to all clients. 77 | *****************************************************************/ 78 | void loop() { 79 | server.handleClient(); 80 | webSocket.loop(); 81 | // Read header from LMCSDH 82 | switch(Serial.read()){ 83 | case 0x05: // Request for matrix definition 84 | Serial.println(WIDTH); 85 | Serial.println(HEIGHT); 86 | break; 87 | case 0x41: // Read frame data 88 | Serial.readBytes(leds, NUM_LEDS * 3); 89 | //broadcast 90 | webSocket.broadcastTXT((char *)leds, NUM_LEDS * 3); 91 | Serial.write(0x06); //acknowledge 92 | break; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Code/Single_LED_Wall_Source/html.h: -------------------------------------------------------------------------------- 1 | /***************************************************************** 2 | * htmlCode[] 3 | * 4 | * Store the webpage in Program Memory during upload 5 | *****************************************************************/ 6 | const char htmlCode[] PROGMEM = 7 | R"=====( 8 | 9 | 10 | 11 | ESP Web Server 12 | 13 | 14 | 15 |

The ESP8266 is ready...

16 | 19 | 20 | 21 | 22 | )====="; 23 | -------------------------------------------------------------------------------- /LED Wall STLs/END Wall Grid 4x6 (Screwtype).stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/END Wall Grid 4x6 (Screwtype).stl -------------------------------------------------------------------------------- /LED Wall STLs/END Wall Grid 4x6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/END Wall Grid 4x6.stl -------------------------------------------------------------------------------- /LED Wall STLs/END Wall Grid 6x6 (Screwtype).stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/END Wall Grid 6x6 (Screwtype).stl -------------------------------------------------------------------------------- /LED Wall STLs/END Wall Grid 6x6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/END Wall Grid 6x6.stl -------------------------------------------------------------------------------- /LED Wall STLs/Wall Grid 4x6 (Screwtype).stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/Wall Grid 4x6 (Screwtype).stl -------------------------------------------------------------------------------- /LED Wall STLs/Wall Grid 4x6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/Wall Grid 4x6.stl -------------------------------------------------------------------------------- /LED Wall STLs/Wall Grid 6x6 (Screwtype).stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/Wall Grid 6x6 (Screwtype).stl -------------------------------------------------------------------------------- /LED Wall STLs/Wall Grid 6x6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LED Wall STLs/Wall Grid 6x6.stl -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/LMCSHD.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/LMCSHD.exe -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/LMCSHD.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/LMCSHD.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/LMCSHD.pdb -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/NAudio.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/NAudio.dll -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.Aero.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.Aero.dll -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.Metro.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.Metro.dll -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.VS2010.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.Themes.VS2010.dll -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/Xceed.Wpf.AvalonDock.dll -------------------------------------------------------------------------------- /LMCSHD_TechRandom_Release/Xceed.Wpf.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechRandom/Massive-LED-Wall/0f61412e267884bedfc45cbfcebfb34b15231d20/LMCSHD_TechRandom_Release/Xceed.Wpf.Toolkit.dll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Massive LED Wall 2 | Everything you need to build a 7 foot wide LED wall that connects to your PC over Wi-Fi 3 | 4 | YouTube Tutorial: 5 | 6 | Written Instructions: 7 | 8 | Click the green "Code" button, then "Download Zip". Extract the ZIP file somewhere easy to find. 9 | 10 | To use LMCSHD, open the LMCSHD_TechRandom_Release folder and run "LMCSHD.exe". You can right 11 | click the executable and create a shortcut for easy access, just don't remove the .exe file 12 | from the folder it's in. 13 | -------------------------------------------------------------------------------- /link.txt: -------------------------------------------------------------------------------- 1 | https://arduino.esp8266.com/stable/package_esp8266com_index.json --------------------------------------------------------------------------------