Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto
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
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.
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();
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
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.
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
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);
}
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();
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();
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;
}
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);
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
Top Related