#include #include #define PIN_RX 10 #define PIN_TX 11 #define PIXELS 24 // Prepare two independent strips for rx data and tx data Adafruit_NeoPixel strip_rx = Adafruit_NeoPixel(PIXELS, PIN_RX, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel strip_tx = Adafruit_NeoPixel(PIXELS, PIN_TX, NEO_GRB + NEO_KHZ800); void setup() { // Initialize both strips to off strip_rx.begin(); strip_rx.show(); strip_tx.begin(); strip_tx.show(); // Initialize serial port to 115200 baud Serial.begin(115200); } void loop() { if (Serial.available() >= 3) { byte b = Serial.read(); if (b == 0xFF) { // Read next two bytes as rx and tx rate byte rxrate = Serial.read(); byte txrate = Serial.read(); if (rxrate <= 100 && txrate <= 100) { showPercentage_rx(strip_rx.Color(0, 0, 255), rxrate); showPercentage_tx(strip_tx.Color(255, 0, 0), txrate); } } } delay(10); } void showPercentage_tx(uint32_t c, uint8_t perc) { char lastPixel = (PIXELS * perc) / 100; char i = 0; while(i < lastPixel) { strip_tx.setPixelColor(i, c); ++i; } while (i < PIXELS) { strip_tx.setPixelColor(i, 0); ++i; } strip_tx.show(); } void showPercentage_rx(uint32_t c, uint8_t perc) { char lastPixel = (PIXELS * perc) / 100; char i = 0; while(i < lastPixel) { strip_rx.setPixelColor(i, c); ++i; } while (i < PIXELS) { strip_rx.setPixelColor(i, 0); ++i; } strip_rx.show(); }