46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
|
|
#include <Arduino.h>
|
||
|
|
#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;
|
||
|
|
}
|