#include #include "pin.h" Pin::Pin(int pinNumber, bool isOutput, bool isLed, uint32_t ledFrequency, uint8_t ledChannel) : pinNumber(pinNumber), output(isOutput), isLed(isLed), ledChannel(ledChannel) { pinMode(pinNumber, isOutput ? OUTPUT : INPUT); if (isLed) { ledcSetup(ledChannel, ledFrequency, 8); // Setup LEDC for PWM with 8-bit resolution ledcAttachPin(pinNumber, ledChannel); // Attach the pin to the LEDC channel } } void Pin::setHigh() { if (output) { digitalWrite(pinNumber, HIGH); } } void Pin::setLow() { if (output) { digitalWrite(pinNumber, LOW); } } void Pin::setLedLevel(uint32_t level) { if (output && isLed) { ledcWrite(ledChannel, level); } // analogWrite(pinNumber, level); // Use analogWrite for PWM control } bool Pin::read() { if (!output) { return digitalRead(pinNumber); } return false; } int Pin::getPinNumber() const { return pinNumber; } bool Pin::isOutput() const { return output; }