// Definición de la clase SensorPIR
class SensorPIR
{
private:
int pin;
public:
SensorPIR(int pin)
{
this->pin = pin;
pinMode(pin, INPUT);
}
// solo un metodo
bool detectarMovimiento()
{
return digitalRead(pin) == HIGH;
}
};
// Definición de la clase ActuadorLED
class ActuadorLED
{
private:
int pin;
public:
ActuadorLED(int pin)
{
this->pin = pin;
pinMode(pin, OUTPUT);
}
// 2 metodos
void encender()
{
digitalWrite(pin, HIGH);
}
void apagar()
{
digitalWrite(pin, LOW);
}
};
// Uso de las clases en el código principal
SensorPIR miSensor1(2); // Crear una instancia de la clase SensorPIR
ActuadorLED miActuador1(13); // Crear una instancia de la clase ActuadorLED
SensorPIR miSensor2(3);
ActuadorLED miActuador2(12);
SensorPIR miSensor3(4);
ActuadorLED miActuador3(11);
SensorPIR miSensor4(5);
ActuadorLED miActuador4(10);
void setup()
{
// Configuraciones iniciales, si las necesitas
}
void loop()
{
// Usar las instancias de las clases
// Detecta con la función de movimiento del sensor PIR
if (miSensor1.detectarMovimiento())
{
miActuador1.encender();
}
else if (miSensor2.detectarMovimiento())
{
miActuador2.encender();
// Es decir, se pueden crear diferentes instancias para métodos
// o funciones de una clase en particular. A eso se le
// denomina crear un nuevo objeto. En este caso:
// obj1 LED rojo, obj2 LED azul, obj3 LED verde, obj4 LED amarillo
}
else if (miSensor3.detectarMovimiento())
{
miActuador3.encender();
}
else if (miSensor4.detectarMovimiento())
{
miActuador4.encender();
}
else
{
miActuador1.apagar();
miActuador2.apagar();
miActuador3.apagar();
miActuador4.apagar();
}
// Resto del código en el bucle principal
// ...
}