domingo, 25 de julio de 2010

Clases con Arduino

Conocemos la potencia de la POO en la programación genérica. Por lo cual, es fácil comprender la potencia de la programación orientada a objetos, cuando trabajas con Objetos de verdad.

Y eso vamos a hacer, declarar métodos para trabajar con un pequeño Led.

No me voy a meter mucho a explicar como hacerlo, pues esta entrada está pensada para gente con conocimientos mas bien no básicos.

A continuación, un pequeño código de ejemplo:

int ledPin;
class Led
{
public:
Led(void)
{
ledPin =13;
}
void enciendeLed (void);
void apagaLed (void);
int compruebaLed (void);
} Uno;
void Led::enciendeLed (void)
{
digitalWrite (ledPin, HIGH);
}

void Led::apagaLed (void)
{
digitalWrite (ledPin, LOW);
}

int Led::compruebaLed (void)
{
if (ledPin ==HIGH) return 1;
else return 0;
}

void setup()
{
pinMode (ledPin, 13);
}

void loop()
{
Uno.enciendeLed();
delay(250);
Uno.apagaLed();
delay(250);
}
En primer lugar declaramos la salida para el led (ledPin) la cual
será inicializada en el constructor. Seguidamente declaramos
los métodos, los cuales vamos a usar para controlar el led en
nuestro Arduino.

Como vemos tenemos 3 posibilidades; Encender, Apagar y Comprobar
Estado del Led.

En este caso trabajamos con el objeto "Uno". Pero en caso de incluir
mas leds, podemos crear mas objetos, ahorrando así un par de líneas
y mejorando nuestro código.

Pd. En este ejemplo no uso el método compruebaLed, pero como se ve,
comprueba el estado del Led con un condicional y retorna 1 en caso
de HIGH y 0 en caso de LOW.


2 comentarios:

  1. Nunca se instancio Uno. disculpa mi ignorancia esta bien este codigo lo estoy leyendo y esa parte no me queda claro.. por favor si tenes mas ejemplo de POO para arduino te agradeceria mucho ..

    ResponderEliminar
  2. Entiendo que al igual que en c++ se puede hacer una parte privada de la clase, si eso es asi nunca se programaria una variable global led en poo. Se crearia un atributo privado led de la clase y se crearian los metodos publicos set y get, ya que con esa variable global y ese constructor estamos estropeando la alta cohesion y el bajo acoplamiento que se busca en POO. Veo interesante el ejemplo aunque creo que se deberia explicar que es cada parte en poo y que todo eso no iria en un miamo archivo sino las cabeceras por su lado el cuerpo por el otro...pero por el resto gran ejemplo xa gente q esta aprendiendo!

    ResponderEliminar