SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

Introducción a la planificación de proyectos
Introducción a la planificación de proyectosIntroducción a la planificación de proyectos
Introducción a la planificación de proyectos
Jonathan Ruiz de Garibay
 
Android + Bluetooth + Arduino
Android + Bluetooth + ArduinoAndroid + Bluetooth + Arduino
Android + Bluetooth + Arduino
Jonathan Alvarado
 

Destacado (20)

Arduino
ArduinoArduino
Arduino
 
Programación arduino
Programación arduinoProgramación arduino
Programación arduino
 
Arduino - Slideshare
Arduino - SlideshareArduino - Slideshare
Arduino - Slideshare
 
Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
Arduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothArduino sin cables: usando Bluetooth
Arduino sin cables: usando Bluetooth
 
Práctica09.Librerías
Práctica09.LibreríasPráctica09.Librerías
Práctica09.Librerías
 
01.Puntos Clave de una Presentación Oral
01.Puntos Clave de una Presentación Oral01.Puntos Clave de una Presentación Oral
01.Puntos Clave de una Presentación Oral
 
Codesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype DevelopmentCodesign-Oriented Platform for Agile Internet of Things Prototype Development
Codesign-Oriented Platform for Agile Internet of Things Prototype Development
 
02.El Soporte Visual
02.El Soporte Visual02.El Soporte Visual
02.El Soporte Visual
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
02d.Circuito oscilador
02d.Circuito oscilador02d.Circuito oscilador
02d.Circuito oscilador
 
Práctica05.Interrupciones en Arduino
Práctica05.Interrupciones en ArduinoPráctica05.Interrupciones en Arduino
Práctica05.Interrupciones en Arduino
 
Práctica04.Programando Arduino
Práctica04.Programando ArduinoPráctica04.Programando Arduino
Práctica04.Programando Arduino
 
Introducción a la planificación de proyectos
Introducción a la planificación de proyectosIntroducción a la planificación de proyectos
Introducción a la planificación de proyectos
 
Práctica01.Sistemas de Entrada Salida
Práctica01.Sistemas de Entrada SalidaPráctica01.Sistemas de Entrada Salida
Práctica01.Sistemas de Entrada Salida
 
Práctica08.Comunicaciones
Práctica08.ComunicacionesPráctica08.Comunicaciones
Práctica08.Comunicaciones
 
Android + Bluetooth + Arduino
Android + Bluetooth + ArduinoAndroid + Bluetooth + Arduino
Android + Bluetooth + Arduino
 
Dispositivos y técnicas
Dispositivos y técnicasDispositivos y técnicas
Dispositivos y técnicas
 
Amplificación de señal con BJT
Amplificación de señal con BJTAmplificación de señal con BJT
Amplificación de señal con BJT
 
Trabajo en equipo
Trabajo en equipoTrabajo en equipo
Trabajo en equipo
 

Similar a Programación en Arduino

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
jent46
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
FamiliaAyluardo
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
Karime Hernández
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
ecodereck
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
jtk1
 

Similar a Programación en Arduino (20)

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
Poo 1
Poo 1Poo 1
Poo 1
 
Semana 2 Clases y Objetos en Java
Semana 2   Clases y Objetos en JavaSemana 2   Clases y Objetos en Java
Semana 2 Clases y Objetos en Java
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Java2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a ObjetosJava2-Clases.ppt Programación Orientada a Objetos
Java2-Clases.ppt Programación Orientada a Objetos
 
Propiedades De La Poo
Propiedades De La PooPropiedades De La Poo
Propiedades De La Poo
 
03 Oop
03   Oop03   Oop
03 Oop
 
P4 Programacion orientada a objetos con Java.pptx
P4 Programacion orientada a objetos con Java.pptxP4 Programacion orientada a objetos con Java.pptx
P4 Programacion orientada a objetos con Java.pptx
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poo
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 

Más de Jonathan Ruiz de Garibay

Introducción a la Tecnología Electrónica
Introducción a la Tecnología ElectrónicaIntroducción a la Tecnología Electrónica
Introducción a la Tecnología Electrónica
Jonathan Ruiz de Garibay
 
Time Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID TechnologyTime Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID Technology
Jonathan Ruiz de Garibay
 
WebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web ServerWebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web Server
Jonathan Ruiz de Garibay
 

Más de Jonathan Ruiz de Garibay (16)

Vocaciones STEM
Vocaciones STEMVocaciones STEM
Vocaciones STEM
 
Configuraciones con transistores BJT
Configuraciones con transistores BJTConfiguraciones con transistores BJT
Configuraciones con transistores BJT
 
Amplificadores Multietapa
Amplificadores MultietapaAmplificadores Multietapa
Amplificadores Multietapa
 
Recta de carga para señal
Recta de carga para señalRecta de carga para señal
Recta de carga para señal
 
Práctica06.Controlando Motores
Práctica06.Controlando MotoresPráctica06.Controlando Motores
Práctica06.Controlando Motores
 
Fundamentos de los Microcontroladores
Fundamentos de los MicrocontroladoresFundamentos de los Microcontroladores
Fundamentos de los Microcontroladores
 
Polarización de los Transistores
Polarización de los TransistoresPolarización de los Transistores
Polarización de los Transistores
 
Fundamentos de los Transistores
Fundamentos de los TransistoresFundamentos de los Transistores
Fundamentos de los Transistores
 
Transistor Bipolar
Transistor BipolarTransistor Bipolar
Transistor Bipolar
 
Introducción a la Tecnología Electrónica
Introducción a la Tecnología ElectrónicaIntroducción a la Tecnología Electrónica
Introducción a la Tecnología Electrónica
 
Semiconductores
SemiconductoresSemiconductores
Semiconductores
 
Teoría de Diodos
Teoría de DiodosTeoría de Diodos
Teoría de Diodos
 
Fuentes de Alimentación
Fuentes de AlimentaciónFuentes de Alimentación
Fuentes de Alimentación
 
IoT: Objetos conectados a internet
IoT: Objetos conectados a internetIoT: Objetos conectados a internet
IoT: Objetos conectados a internet
 
Time Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID TechnologyTime Management Tool Based on New Interaction Paradigms with RFID Technology
Time Management Tool Based on New Interaction Paradigms with RFID Technology
 
WebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web ServerWebTag: Smart Tag with Embedded Web Server
WebTag: Smart Tag with Embedded Web Server
 

Último

UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
refrielectriccarlyz
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gst
DavidRojas870673
 
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
samuelsan933
 
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbbTema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
antoniolfdez2006
 

Último (20)

27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potable
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfNTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
 
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdfUC Fundamentos de tuberías en equipos de refrigeración m.pdf
UC Fundamentos de tuberías en equipos de refrigeración m.pdf
 
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdfTRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
TRABAJO N°2 GERENCIA DE PROYECTOS (4).pdf
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cereales
 
portafolio final manco 2 1816827 portafolio de evidencias
portafolio final manco 2 1816827 portafolio de evidenciasportafolio final manco 2 1816827 portafolio de evidencias
portafolio final manco 2 1816827 portafolio de evidencias
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gst
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
 
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
S3-OXIDOS-HIDROXIDOS-CARBONATOS (mineralogia)
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Aportes a la Arquitectura de Le Corbusier y Mies Van Der Rohe.pdf
Aportes a la Arquitectura de Le Corbusier y Mies Van Der Rohe.pdfAportes a la Arquitectura de Le Corbusier y Mies Van Der Rohe.pdf
Aportes a la Arquitectura de Le Corbusier y Mies Van Der Rohe.pdf
 
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbbTema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
Tema ilustrado 9.2.docxbbbbbbbbbbbbbbbbbbb
 

Programación en Arduino

  • 1. Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Programación en Arduino
  • 2. 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
  • 3. 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.
  • 4. 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();
  • 5. 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
  • 6. 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.
  • 7. 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
  • 8. 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); }
  • 9. 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();
  • 10. 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();
  • 11. 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; }
  • 12. 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);
  • 13. 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