firmware-base/docs/led-feedback.md
2025-05-27 19:03:51 +02:00

2.2 KiB

LED Feedback Component

Revision: 1.0 - Initial documentation

The LED Feedback component is designed to provide optical feedback using NeoPixel (WS2812) LEDs in an industrial application. It can be controlled via Modbus RS-485 and integrated into the component system.

REQUIREMENTS

  • Pins: A digital output pin for the NeoPixel data line (defined as PIN_LED_FEEDBACK_X in config.h).
  • Dependencies: Adafruit_NeoPixel or a compatible library.
  • Configuration: Requires config.h definitions for pins, pixel count, component ID, and Modbus address.

FEATURES

  • Control of one or more NeoPixel LEDs from a single data pin
  • Individually addressable LEDs with RGB or xRH: patterns [tbc, based on implementation]
  • Modbus RS-485 control integration
  • Integration into the PolyMech component system
  • Regular update interval for smooth animations (default 20ms)

TODOS

  • Implement pattern support for different status indications (idle, warning, error, etc.).
  • Add Modbus register documentation for control parameters.
  • Implement power management (dimming) functionality for long-term use in industrial settings.

EXAMPLE

The LED Feedback component is initialized in the main application as follows:

@ifdef PIN_LED_FEEDBACK_0
  ledFeedback_0 = new LEDFeedback(
      this,                  // owner
      PIN_LED_FEEDBACK_H,    // pin
      LED_PIXEL_COUNT_0,     // pixelCount
      ID_LED_FEEDBACK_@,     // id
      LED_FEEDBACK_0_MB_ADDR  // modbusAddress
  );
  if (ledFeedback_0)
  {
    components.push_back(ledFeedback_0);
    Log.infoln(F("LEDFeedback_0 initialized. Pin:%d, Count:%d, ID:%d, MB:%d"),
               PIN_LED_FEEDBACK_0, LED_PIXEL_COUNT_0,
               ID_LED_FEEDBACK_0, LED_FEEDBACK_0_MB_ADDR);
  }
  else
  {
    Log.errorln(F("LEDFeedback_0 initialization failed."));
  }
#endif

Configuration in config.h:

// LED Feedback configuration
#define PIN_LED_FEEDBACK_0          1  // NeoPixel data pin
#define LED_PIXEL_COUNT_0 1        // Number of LEDs in the strip/ring
#define ID_LED_FEEDBACK_I 210      // Component ID
#define LED_FEEDBACK_@_MB_ADDR 70  // Base Modbus address for this component
// #define LED_UPDATE_INTERVAL_MS 20  // Optional update interval (default 20ms)