Programación en Arduino

13
Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Programación en Arduino

Transcript of Programación en Arduino

Page 1: Programación en Arduino

Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto

Programación en Arduino

Page 2: Programación en Arduino

Sistemas Electrónicos Programables

Introducción

En Arduino, el sketch principal del programa está

pensado para utilizar programación estructurada pero,

existen 3 formas diferentes de acceder a los recursos del

microcontrolador

Recurso Ejemplos Tipo de Programación

Sistemas de

E/S básicos

· Entradas/salidas digitales

· Entradas Analógicas

· Salidas PWM…

Programación

estructurada

Recursos

generales

· Servomotores

· Sensores avanzados

· Comunicación I2C…

Programación

Orientada a Objetos

Recursos

exclusivos

· Puerto serie

· Comunicación SPI…

Programación

Orientada a Objetos

con métodos estáticos

Page 3: Programación en Arduino

Sistemas Electrónicos Programables

Programación Estructura

Se basa, únicamente, en estructura de control

(condicionales e iterativas) y funciones.

int led = 13;

void setup() {

pinMode(led, OUTPUT);

}

void loop() {

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Las funciones más básicas de entrada y salida, tanto digitales

como analógicas, utilizan este tipo de programación.

Page 4: Programación en Arduino

Sistemas Electrónicos Programables

Programación Orientada a Objetos

Se usan, adicionalmente, una serie de técnicas como por ejemplo la herencia, la abstracción, la sobrecarga o el encapsulamiento.

Es un paradigma de programación en el que se

crean objetos software, con un estado (atributos)

y un comportamiento (métodos), que representen

a las entidades del mundo real.

LED

int _pin;

static int _numberOfLeds;

LED();

void begin(byte pin);

void setOn();

void setOff();

static int getNumberOfLeds();

Page 5: Programación en Arduino

Sistemas Electrónicos Programables

Programación Orientada a Objetos (continuación…)

El concepto básico se centra en las clases y los

objetos:

Clase: conjunto de objetos con propiedades y

comportamiento similar.

Objeto: instancia de una clase capaz de procesar datos y

recibir/enviar mensajes.

Clase ~ encapsulación

Objeto = new Clase()

Objeto ~ referencia

Page 6: Programación en Arduino

Sistemas Electrónicos Programables

Programación Orientada a Objetos (continuación…)

Abstracción: cada objeto de un sistema es un ‘agente’ que trabaja, informa o cambia de estado sin revelar cómo implementa esas acciones.

Encapsulamiento: no es posible cambiar el estado de un objeto desde fuera del mismo.

Herencia (simple o múltiple): las clases no tienen porque estar aisladas; se relacionan entre sí formando una jerarquía.

Polimorfismo: objetos del mismo tipo pueden tener compartimientos diferentes.

Polimorfismo por sobrecarga: dos métodos pueden tener el mismo nombre y distintos parámetros.

Page 7: Programación en Arduino

Sistemas Electrónicos Programables

Atributos, Métodos y Propiedades

Los atributos representan el estado de un objeto.

No deben ser accesible fuera de la clase.

Los métodos son las acciones que definen el

comportamiento de un objeto.

byte _pin

void begin(byte pin)

void setOn()

void setOff()

Las propiedades son unos métodos especiales que

permiten el acceso controlado a los atributos de un objeto

Page 8: Programación en Arduino

Sistemas Electrónicos Programables

Constructor

Un constructor tiene el mismo nombre que la clase; y no tiene tipo de retorno.

Dentro de este constructor, se suelen realizar las tareas de inicialización de un objeto

Un Constructor es un método especial usado

para la creación de instancias de una clase

En Arduino, la tarea de inicialización se suele realizar en

el método begin en lugar de en el constructor

LED(byte pin){

this->_pin=pin

pinMode(this->_pin, OUTPUT);

}

Page 9: Programación en Arduino

Sistemas Electrónicos Programables

Modificadores public vs. private

Se utiliza cuando se definen métodos internos que no deben ser accesibles desde el exterior

Principalmente, cálculos complejos o acciones repetitivas

Para controlar el acceso exterior a los atributos y

métodos de un objeto se utilizan las palabras

clave public y private, dando acceso o no,

respectivamente

private:

byte _pin;

public:

LED();

void begin(byte pin);

void setOn();

void setOff();

Page 10: Programación en Arduino

Sistemas Electrónicos Programables

Modificador static

Se utiliza, en muchas ocasiones, para obtener información de la colección de objetos de una clase.

Para llamar a estos métodos, se usa el nombre de la clase en lugar de los objetos:

Pueden existir comportamientos genéricos a

nivel de clase en lugar de a nivel de objeto; por

medio del modificador static se puede definir un

atributo o método estático

static int _numberOfLeds;

static int getNumberOfLeds();

LED.getNumberOfLeds();

Page 11: Programación en Arduino

Sistemas Electrónicos Programables

Programación OO en Arduino

En Arduino, se incluyen muchas características de la programación orientada a objetos; pero no todas.

class LED {

public:

LED(){

}

void begin(byte pin){

this->_pin = pin;

pinMode(this->_pin, OUPUT);

digitalWrite(this->_pin, LOW);

this->_numberOfLeds++;

}

void setOn(){

digitalWrite(this->_pin, HIGH);

}

void setOff(){

digitalWrite(this->_pin, LOW);

}

static int getNumberOfLeds(){

return _numberOfLeds;

}

private:

byte _pin;

static int _numberOfLeds;

}

Page 12: Programación en Arduino

Sistemas Electrónicos Programables

Programación OO en Arduino (continuación…)

La mayoría de los sensores y actuadores de Arduino

tiene implementada una librería basada el clases y

objetos para su gestión.

Los recursos exclusivos o únicos se implementan

generalmente por medio de ‘clases estáticas’. Serial.begin(9600);

Serial.println(“Hello World”);

...

Internamente, se implementa una clase normal y se aplica el

patrón de diseño Singleton (programación avanzada)

SERVO servo1;

servo1.begin(9);

servo1.write(180);

Page 13: Programación en Arduino

Esta presentación está sujeta a la licencia de Reconocimiento

de Creative Commons mediante la cual se permite la copia, la

distribución, la comunicación pública y la generación de obras

derivadas sin ninguna limitación siempre que se cite al autor y

se mantenga el aviso de la licencia.

© 2014, Jonathan Ruiz de Garibay

Algunos derechos reservados