kopia lustrzana https://github.com/Aircoookie/WLED
				
				
				
			
		
			
				
	
	
		
			93 wiersze
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			93 wiersze
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
| /*
 | |
|  *          RGB.NET (artemis) receiver
 | |
|  *          
 | |
|  * This works via the UDP, http is not supported apart from reporting LED count
 | |
|  * 
 | |
|  * 
 | |
|  */
 | |
| #include "wled.h"
 | |
| #include <WiFiUdp.h>
 | |
| 
 | |
| WiFiUDP UDP;
 | |
| const unsigned int RGBNET_localUdpPort = 1872; // local port to listen on
 | |
| unsigned char RGBNET_packet[770];
 | |
| long lastTime = 0;
 | |
| int delayMs = 10;
 | |
| bool isRGBNETUDPEnabled;
 | |
| 
 | |
| void RGBNET_readValues() {
 | |
|   
 | |
|   int RGBNET_packetSize = UDP.parsePacket();
 | |
|   if (RGBNET_packetSize) {
 | |
|     // receive incoming UDP packets
 | |
|     int sequenceNumber = UDP.read();
 | |
|     int channel = UDP.read();
 | |
| 
 | |
|     //channel data is not used we only supports one channel
 | |
|     int len = UDP.read(RGBNET_packet, strip.getLengthTotal()*3);
 | |
|     if(len==0){
 | |
|       return;
 | |
|     }
 | |
|     
 | |
|     for (int i = 0; i < len; i=i+3) {
 | |
|       strip.setPixelColor(i/3, RGBNET_packet[i], RGBNET_packet[i+1], RGBNET_packet[i+2], 0);
 | |
|     } 
 | |
|     //strip.show();  
 | |
|   }
 | |
| }
 | |
| 
 | |
| //update LED strip
 | |
| void RGBNET_show() {
 | |
|   strip.show();
 | |
|   lastTime = millis();
 | |
| }
 | |
| 
 | |
| //This function provides a json with info on the number of LEDs connected
 | |
| // it is needed by artemis to know how many LEDs to display on the surface
 | |
| void handleConfig(AsyncWebServerRequest *request)
 | |
| {
 | |
|   String config = (String)"{\
 | |
|   \"channels\": [\
 | |
|     {\
 | |
|       \"channel\": 1,\
 | |
|       \"leds\": " + strip.getLengthTotal() + "\
 | |
|     },\
 | |
|     {\
 | |
|       \"channel\": 2,\
 | |
|       \"leds\": " + "0" + "\
 | |
|     },\
 | |
|     {\
 | |
|       \"channel\": 3,\
 | |
|       \"leds\": " + "0" + "\
 | |
|     },\
 | |
|     {\
 | |
|       \"channel\": 4,\
 | |
|       \"leds\": " + "0" + "\
 | |
|     }\
 | |
|   ]\
 | |
| }";
 | |
|   request->send(200, "application/json", config);
 | |
| }
 | |
| 
 | |
| 
 | |
| void userSetup()
 | |
| {
 | |
|   server.on("/config", HTTP_GET, [](AsyncWebServerRequest *request){ 
 | |
|     handleConfig(request);
 | |
|   });
 | |
| }
 | |
| 
 | |
| void userConnected()
 | |
| {
 | |
|   // new wifi, who dis?
 | |
|   UDP.begin(RGBNET_localUdpPort);
 | |
|   isRGBNETUDPEnabled = true;
 | |
| }
 | |
| 
 | |
| void userLoop()
 | |
| {
 | |
|   RGBNET_readValues();
 | |
|     if (millis()-lastTime > delayMs) {
 | |
|       RGBNET_show();
 | |
|     }
 | |
| } |