martes, 3 de agosto de 2010

Clases en Arduino (Solucionado)

Antes no podía usar bien las clases en Arduino, pues tenía un pequeño problema con los constructores (Básicamente, no los sabía usar bien, ya que cambia la forma de uso en C++ y en Arduino)

Tras indagar un poco, ya he descubierto la forma de usarlos.

El problema principal, es que en C++ los constructores se invocan automáticamente, en Arduino no, por lo que hay que llamarlos. Como os imagináis, es conveniente llamarlos en setup(), pues en loop() se estaría construyendo constantemente.
Veamos un código de ejemplo:


class easyLed
{private:
int lpin;

public:
void Pin(int pin)
{
lpin =pin;
pinMode (lpin, OUTPUT);
}

void on(int dt)
{
digitalWrite(lpin, HIGH);
delay(dt);
}

void on()
{
digitalWrite(lpin, HIGH);
}

void off(int dt)
{
digitalWrite(lpin, LOW);
delay(dt);
}

void off()
{
digitalWrite(lpin, LOW);
}
} Pled;

void setup()
{
Pled.Pin(13);
}

void loop()
{
Pled.on(300);
Pled.off(100);
}



Como vemos, tenemos la clase easyLed, en la cual tenemos 4 métodos (2 para encender, 2 para apagar (Sobrecarga)) y el constructor, en el cual asignamos el número de pin (Mediante parámetro) y el modo de salida (pinMode OUTP UT).

En nuestro caso, creamos un objeto llamado Pled, pero, sería mas eficiente, en caso de tener mas leds (U otros objetos) crear un arreglo de objetos, para tratarlos de forma mas cómoda. Por ejemplo, pin[3] declararía 3 objetos easyLed.

En setup(); llamamos al constructor, para poder usar bien todos los objetos, y ya en loop(), la parte principal de nuestro programa, podemos usar a nuestro antojo todos los métodos que tenemos definidos en la clase. En el ejemplo, llamamos a on y off con parámetro, indicando el delay que deseamos que tengan los métodos.

No hay comentarios:

Publicar un comentario