#pragma once class Pin { public: Pin(int pinNumber, bool isOutput = true, bool isLed = false, uint32_t ledFrequency = 5000, uint8_t ledChannel = 0); void setHigh(); void setLow(); void setLedLevel(uint32_t level); uint32_t getLedLevel() const; const uint8_t getLedResolutionBits() const; bool read(); int getPinNumber() const; bool isOutput() const; private: uint8_t ledChannel = 0; // LED channel for PWM uint8_t pinNumber; uint32_t ledLevel = 0; const uint8_t ledResolutionBits = 12; bool output; bool isLed = false; // Flag to indicate if this pin is used for LED control };