diff --git a/arduino/ws2812_controller/ws2812_controller.ino b/arduino/ws2812_controller/ws2812_controller.ino index 615dd33..e5054e3 100644 --- a/arduino/ws2812_controller/ws2812_controller.ino +++ b/arduino/ws2812_controller/ws2812_controller.ino @@ -5,11 +5,11 @@ #include #include "ws2812_i2s.h" -// Set this to the number of LEDs in your LED strip - +// Set to the number of LEDs in your LED strip #define NUM_LEDS 60 // Maximum number of packets to hold in the buffer. Don't change this. #define BUFFER_LEN 1024 +// Toggles FPS output (1 = print FPS over serial, 0 = disable output) #define PRINT_FPS 1 // Wifi and socket settings @@ -50,9 +50,9 @@ void setup() { } uint8_t N = 0; -#ifdef PRINT_FPS - int fpsCounter = 0; - int secondTimer = 0; +#if PRINT_FPS + uint16_t fpsCounter = 0; + uint32_t secondTimer = 0; #endif void loop() { @@ -60,29 +60,24 @@ void loop() { int packetSize = port.parsePacket(); // If packets have been received, interpret the command if (packetSize) { - int len = port.read(packetBuffer, BUFFER_LEN); - for(int i = 0; i < len; i+=4){ + int len = port.read(packetBuffer, BUFFER_LEN); + for(int i = 0; i < len; i+=4) { packetBuffer[len] = 0; N = packetBuffer[i]; pixels[N].R = (uint8_t)packetBuffer[i+1]; pixels[N].G = (uint8_t)packetBuffer[i+2]; pixels[N].B = (uint8_t)packetBuffer[i+3]; } - ledstrip.show(pixels); - - if(PRINT_FPS == 1) - { - Serial.print("*"); - fpsCounter++; - } - } - if(PRINT_FPS == 1){ - if(millis() - secondTimer >= 1000) - { - secondTimer = millis(); - - Serial.printf("FPS: %d\n", fpsCounter); - fpsCounter = 0; - } - } + ledstrip.show(pixels); + #if PRINT_FPS + fpsCounter++; + #endif + } + #if PRINT_FPS + if (millis() - secondTimer >= 1000U) { + secondTimer = millis(); + Serial.printf("FPS: %d\n", fpsCounter); + fpsCounter = 0; + } + #endif }