#include <Arduino.h>
class GPIO
{
public:
int pin;
GPIO(int pin) : pin(pin) {}
virtual void configure() = 0;
virtual void digitalWrite(int value) = 0;
virtual int readData() = 0;
};
class AnalogSensor : public GPIO
{
public:
AnalogSensor(int sensorPin) : GPIO(sensorPin) {}
void configure() override
{
}
int readData() override
{
return analogRead(pin);
}
void digitalWrite(int value) override
{
analogWrite(pin, value);
}
};
// Class for UART
class UART
{
private:
int baudRate;
int txPin;
int rxPin;
public:
UART(int tx, int rx, int baud) : baudRate(baud), txPin(tx), rxPin(rx) {}
void configure()
{
Serial.begin(baudRate);
Serial.println("UART configured");
}
void digitalWrite(int value)
{
// Serial.write(value);
}
int readData()
{
return Serial.read();
}
};
AnalogSensor pot(A0);
UART uartInstance(2, 3, 9600);
void setup()
{
pot.configure();
uartInstance.configure();
}
void loop()
{
int potValue = pot.readData();
Serial.println("Potentiometer Value: " + String(potValue));
// For UART
int uartValue = uartInstance.readData();
Serial.println("UART Value: " + String(uartValue));
// Send potValue over UART
uartInstance.digitalWrite(potValue);
delay(1000);
}