SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Sistemas Electrónicos Programables
Facultad de Ingeniería, Universidad de Deusto
Programación Basada en Autómatas
Sistemas Electrónicos Programables
Patrones de Diseño Software
 Para programa correctamente un sistema embebido, un
desarrollador software debe conocer y dominar gradualmente los
patrones o métodos de programación más usados porque
 proporcionan catálogos de elementos reusables en el diseño de
sistemas software,
 evitan la reiteración en la búsqueda de soluciones a problemas ya
conocidos,
 estandarizan el modo en el que se realiza el diseño, entre otras
cosas
Un Patrón de Diseño Software es una solución
efectiva y reutilizable a un problema de diseño
software
No pretenden imponer ciertas alternativas de diseño
ni eliminar la creatividad del proceso de diseño
Sistemas Electrónicos Programables
Patrón Singleton
 Por medio de este patrón se pretende garantizar la
existencia de una única instancia para una clase; y
la creación de un mecanismo de acceso global a
dicha instancia.
 Se basa en el uso de un constructor privado y un atributo
estático con la única instancia posible de la clase.
class Singleton {
private static Singleton instance;
private Singleton(){
}
public static Singleton GetInstance() {
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
Sistemas Electrónicos Programables
Patrón Código Espagueti
 En realidad, es un anti-patrón, y es un término utilizado
para los programas computacionales que tienen una
estructura de control de flujo compleja e incomprensible.
 Suele asociarse a lenguajes de programación antiguos o
básicos y a programadores nóveles.
 Se identifica fácilmente cuando:
 se realiza un uso recurrente de sentencias condicionales
anidadas (if-then-else, while…),
 se crean situaciones de bloqueo del sistema (while(1),
delay()…) y
 se realizan las mismas comprobaciones una y otra vez a lo
largo del programa.
No hay nada malo en escribir código espagueti inicialmente
si facilita la compresión de un problema; lo incorrecto es
considerar el código como definitivo
Sistemas Electrónicos Programables
Código Espagueti (continuación…)
 Ejemplo 2:
 Programar una luz frontal de atletismo con la siguiente
funcionalidad:
 Por medio de un botón se puede pasar entre 4 modos
diferentes: apagado, encendido, parpadeo y regulación de luz.
 Con cada pulsación, se pasa de un modo al siguiente, y del último al
primero.
 En el estado de parpadeo; la luz se encenderá y apagará cada
500mS.
 En el estado de regulación de luz; la intensidad de luz será ajustada
por medio de un potenciómetro.
Sistemas Electrónicos Programables
Código Espagueti (continuación…)
void setup() {
pinMode(2, INPUT);
pinMode(6, OUTPUT);
}
void loop() {
digitalWrite(6, LOW);
while (digitalRead(2) == LOW);
delay(200);
digitalWrite(6, HIGH);
while (digitalRead(2) == LOW);
delay(200);
while (digitalRead(2) == LOW)
{
digitalWrite(6, LOW);
delay(500);
digitalWrite(6, HIGH);
delay(500);
}
delay(200);
while (digitalRead(2) == LOW)
{
int val = analogRead(A1);
analogWrite(6, (val * 255.0) / 1023.0);
}
delay(200);
}
Anidamiento de
Condicionales
Comprobación Repetitiva
Situación de Bloqueo
Sistemas Electrónicos Programables
Máquina de Estados
 Se llamará máquina de estados finitos si el conjunto
de estados de la máquina es finito;
 siendo éste el único tipo de máquina de estados que es
posible modelar con un computador.
 La representación gráfica se realiza por medio de
Grafos o Diagramas de Estados;
 aunque es posible utilizar diagramas de secuencia.
Se denomina Máquina de Estados al
comportamiento de un sistema con entradas y
salidas; donde las salidas dependen tanto de las
entradaS actuales como de las anteriores
Sistemas Electrónicos Programables
Autómatas Finitos
 Formalmente, un autómata finito es una 5-tupla (Q,
Σ, q0, δ, F) donde:
 Q es un conjunto finito de estados
 Σ es un alfabeto finito
 q0 ∈ Q es el estado inicial
 δ: Q x Σ  Q es una función de transición
 F ⊆ Q es un conjunto de estados finales
Un Autómata Finito es un modelo matemático
para la representación de una máquina de
estados finitos.
Sistemas Electrónicos Programables
Autómatas Finitos (continuación…)
 Representación formal de un autómata:
 Como Diagrama de Estados
 Como tabla de transiciones
S2S1
1 1
1
0
Salida
Q ∈ Q
Símbolo
δ ∈ Σ
Llegada
δ(q,σ) ∈ Q
S1 0 S2
S1 1 S1
S2 0 S1
S2 1 S2
0 1
 S1 S2 S1
S2 S1 S2
ó
Sistemas Electrónicos Programables
Diagramas de Estados
 Se componen de 3 elementos principales:
 Estado: es una condición o situación estable en el tiempo,
donde se puede realizar alguna actividad, o no, a la espera de
algún tipo de evento.
 Evento: es un acontecimiento significativo que puede, o no,
activar una transición entre estados.
 Transición: es una relación entre dos estados por medio del
cual se indica qué evento debe producirse para pasar de un
estado a otro.
Los Diagramas de Estados modelan el
comportamiento de un sistema a lo largo de su
ciclo de vida; mostrando el flujo de control entre
los diferentes estados
Sistemas Electrónicos Programables
Diagramas de Estados (continuación…)
 Ejemplo 3:
 Definición del funcionamiento de una puerta:
Secuencia de Eventos:
1. Abrir con Llave
2. Abrir Puerta
3. Cerrar Puerta
4. Abrir Puerta
5. Cerrar Puerta
6. Cerrar con Llave
Estado
Transición
Evento
Abrir con Llave
Cerrar con Llave
Abrir Puerta
Cerrar Puerta
Cerrada
Cerrada
con llave
Abierta
Sistemas Electrónicos Programables
Diagramas de Estados (continuación…)
 Ventajas:
 Los diagramas de estado son intuitivos y fáciles de entender.
 Su uso está muy extendido (por ejemplo, en protocolos de
comunicación).
 El sistema se divide en subsistemas más pequeños y
manejables.
 Es posible ampliar la funcionalidad del sistema con sólo añadir
nuevos estados y transiciones (sin cambiar lo implementado).
 Desventajas:
 No es aplicable al 100% de los casos.
 Es fácil caer en el error de definir demasiados estados lo que
complicará el sistema  se puede solucionar con jerarquías.
Sistemas Electrónicos Programables
Programación de un Autómata
 Ejemplo 4:
 Especificar el diagrama de estados de la luz frontal del
ejemplo 2.
Pulsar Botón
EncendidoApagado
ParpadeoRegulación
Pulsar Botón
Pulsar
Botón
Pulsar
Botón
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
 Ejemplo 4 (continuación…):
 Analizar los eventos que generan las transiciones y las
acciones a realizar en cada estado.
Evento Significado
Pulsar Botón Cuando la señal pasa de nivel bajo a nivel alto
Estado Acciones Se realiza…
Apagado* Apagar la luz 1 vez
Encendido Encender la luz 1 vez
Parpadeo
Apagar la luz cuando hayan transcurrido 500 mS todo el tiempo
Encender la luz cuando hayan transcurrido500 mS todo el tiempo
Regulación Regular la luz en base al valor del potenciómetro todo el tiempo
* Estado inicial
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
 Ejemplo 4 (continuación…):
 Identificar los requisitos de cada evento y cada estado.
Evento Requisitos
Pulsar Botón R1. Problema de rebotes con el sistema mecánico del pulsador
R2. Es posible utiliza la interrupción externa
Estado Requisitos
Apagado
R3. La luz debe estar apagada al arrancar el sistema
R4. La luz se apaga en la transición hacia este estado
Encendido R5. La luz se enciende en la transición hacia este estado
Parpadeo
R6. Se debe guardar el tiempo del último cambio que se ha realizado
R7. Se cogerá el primer valor en la transición hacía este estado
R8. Se pueden crear dos sub-estados: Apagado y Encendido
Regulación Ninguno
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
 Ejemplo 4 (continuación…):
 Codificar el programa en base a toda la información
obtenida previamente:
#define LUZ 6
#define PULSADOR 2
#define POTENCIOMETRO A1
#define APAGADO 0
#define ENCENDIDO 1
#define PARPADEO 2
#define REGULACION 3
byte estado = APAGADO;
byte subestado;
unsigned long tiempoAnterior;
void setup() {
pinMode(PULSADOR, INPUT);
pinMode(LUZ, OUTPUT);
attachInterrupt(0, intPulsador, RISING);
digitalWrite(LUZ, LOW);
}
Definición de los Estados
Requisito R3
Requisito R1
Variables para el Autómata
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
void loop() {
switch(estado)
{
case APAGADO:
break;
case ENCENDIDO:
break;
case PARPADEO:
if ((millis() - tiempoAnterior) > 500) {
tiempoAnterior = millis();
if (subestado == ENCENDIDO) {
digitalWrite(LUZ, LOW);
subestado = APAGADO;
}
else {
digitalWrite(LUZ, HIGH);
subestado = ENCENDIDO;
}
}
break;
case REGULACION:
int val = analogRead(POTENCIOMETRO);
analogWrite(LUZ, (val * 255.0) / 1023.0);
break;
}
}
Requisito R6
Clasificación de Estados
Requisito R8
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
void intPulsador() {
delay(20);
switch(estado)
{
case APAGADO:
digitalWrite(LUZ, HIGH);
estado = ENCENDIDO;
break;
case ENCENDIDO:
tiempoAnterior = millis();
subestado = ENCENDIDO;
estado = PARPADEO;
break;
case PARPADEO:
estado = REGULACION;
break;
case REGULACION:
digitalWrite(LUZ, LOW);
estado = APAGADO;
break;
}
}
Requisito R4
Clasificación de Estados
Requisito R5
Requisito R7
Sistemas Electrónicos Programables
Programación de un Autómata (continuación…)
 Ejemplo 4 (continuación…):
 Añadir un nuevo modo de funcionamiento donde la luz se
encienda a un 50% de la potencia:
¿Cómo de complicado y
costoso sería este cambio?
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

La actualidad más candente

Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1Marvin Pariona
 
problemas amplificador multietapa
problemas amplificador multietapaproblemas amplificador multietapa
problemas amplificador multietapaAndres Echeverry
 
Circuitos secuenciales ejemplos
Circuitos secuenciales ejemplosCircuitos secuenciales ejemplos
Circuitos secuenciales ejemplosLuis Sanchez
 
Electrónica digital: Diseño de circuitos secuenciales síncronos
Electrónica digital: Diseño de circuitos secuenciales síncronos Electrónica digital: Diseño de circuitos secuenciales síncronos
Electrónica digital: Diseño de circuitos secuenciales síncronos SANTIAGO PABLO ALBERTO
 
Criterio de bode y nyquist matlab
Criterio de bode y nyquist matlabCriterio de bode y nyquist matlab
Criterio de bode y nyquist matlabAle Perez Ortiz
 
Lugar geomtrico de las raices
Lugar geomtrico de las raicesLugar geomtrico de las raices
Lugar geomtrico de las raicesArnold Huaman
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flopsJimmy Osores
 
Sistemas Lineales (Señales y sistemas)
Sistemas Lineales (Señales y sistemas)Sistemas Lineales (Señales y sistemas)
Sistemas Lineales (Señales y sistemas)Julio Ruano
 
Circuito Integrado L293D
Circuito Integrado L293DCircuito Integrado L293D
Circuito Integrado L293DLuiz Sanchez
 

La actualidad más candente (20)

Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1
 
problemas amplificador multietapa
problemas amplificador multietapaproblemas amplificador multietapa
problemas amplificador multietapa
 
Convertidores
ConvertidoresConvertidores
Convertidores
 
Modelamiento de sistemas fisicos
Modelamiento de sistemas fisicosModelamiento de sistemas fisicos
Modelamiento de sistemas fisicos
 
Tipos de controladores
Tipos de controladoresTipos de controladores
Tipos de controladores
 
Circuitos secuenciales ejemplos
Circuitos secuenciales ejemplosCircuitos secuenciales ejemplos
Circuitos secuenciales ejemplos
 
Electrónica digital: Diseño de circuitos secuenciales síncronos
Electrónica digital: Diseño de circuitos secuenciales síncronos Electrónica digital: Diseño de circuitos secuenciales síncronos
Electrónica digital: Diseño de circuitos secuenciales síncronos
 
Lugar de las raices
Lugar de las raicesLugar de las raices
Lugar de las raices
 
Diseño de Circuitos Secuenciales
Diseño de Circuitos SecuencialesDiseño de Circuitos Secuenciales
Diseño de Circuitos Secuenciales
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
I conceptos basicos de control
I conceptos basicos de controlI conceptos basicos de control
I conceptos basicos de control
 
Función de transferencia
Función de transferenciaFunción de transferencia
Función de transferencia
 
Registro de desplazamiento
Registro de desplazamientoRegistro de desplazamiento
Registro de desplazamiento
 
Criterio de bode y nyquist matlab
Criterio de bode y nyquist matlabCriterio de bode y nyquist matlab
Criterio de bode y nyquist matlab
 
Lugar geomtrico de las raices
Lugar geomtrico de las raicesLugar geomtrico de las raices
Lugar geomtrico de las raices
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flops
 
Sistemas Lineales (Señales y sistemas)
Sistemas Lineales (Señales y sistemas)Sistemas Lineales (Señales y sistemas)
Sistemas Lineales (Señales y sistemas)
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
Circuito Integrado L293D
Circuito Integrado L293DCircuito Integrado L293D
Circuito Integrado L293D
 

Destacado

Circuitos básicos con Arduino
Circuitos básicos con ArduinoCircuitos básicos con Arduino
Circuitos básicos con ArduinoAlberto Labarga
 
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 DevelopmentJonathan Ruiz de Garibay
 
Arduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothArduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothJorge Zaccaro
 
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 proyectosJonathan Ruiz de Garibay
 
Android + Bluetooth + Arduino
Android + Bluetooth + ArduinoAndroid + Bluetooth + Arduino
Android + Bluetooth + ArduinoJonathan Alvarado
 

Destacado (20)

Circuitos básicos con Arduino
Circuitos básicos con ArduinoCircuitos básicos con Arduino
Circuitos básicos con Arduino
 
02.El Soporte Visual
02.El Soporte Visual02.El Soporte Visual
02.El Soporte Visual
 
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
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
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
 
Práctica09.Librerías
Práctica09.LibreríasPráctica09.Librerías
Práctica09.Librerías
 
Arduino sin cables: usando Bluetooth
Arduino sin cables: usando BluetoothArduino sin cables: usando Bluetooth
Arduino sin cables: usando Bluetooth
 
Introduccion a la Programación
Introduccion a la ProgramaciónIntroduccion a la Programación
Introduccion a la Programación
 
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
 
Trabajo en equipo
Trabajo en equipoTrabajo en equipo
Trabajo en equipo
 
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
 
Introducción a machine learning
Introducción a machine learningIntroducción a machine learning
Introducción a machine learning
 
Práctica06.Controlando Motores
Práctica06.Controlando MotoresPráctica06.Controlando Motores
Práctica06.Controlando Motores
 
Configuraciones con transistores BJT
Configuraciones con transistores BJTConfiguraciones con transistores BJT
Configuraciones con transistores BJT
 

Similar a Programación Basada en Autómatas

009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programadosguelo
 
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...SANTIAGO PABLO ALBERTO
 
Controladores (teoria de control)
Controladores (teoria de control)Controladores (teoria de control)
Controladores (teoria de control)martinezeduardo
 
Electrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDLElectrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDLSANTIAGO PABLO ALBERTO
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadMiguel sosa
 
Presentació RobòTica
Presentació RobòTicaPresentació RobòTica
Presentació RobòTicaJordi Mercader
 
ARDUINO GRAFCET - Metodología para la adaptación de automatismos simulado...
ARDUINO  GRAFCET  - Metodología para la adaptación  de automatismos  simulado...ARDUINO  GRAFCET  - Metodología para la adaptación  de automatismos  simulado...
ARDUINO GRAFCET - Metodología para la adaptación de automatismos simulado...Jovanny Duque
 
Sistemas Embebidos
Sistemas EmbebidosSistemas Embebidos
Sistemas EmbebidosJorge Garzon
 
Lenguaje Ladder
Lenguaje LadderLenguaje Ladder
Lenguaje LadderRuth Cano
 
Sistemas digitales
Sistemas digitalesSistemas digitales
Sistemas digitalesJesusLeal33
 
Algorítmos - Conceptos básicos
Algorítmos - Conceptos básicosAlgorítmos - Conceptos básicos
Algorítmos - Conceptos básicoscbertolotti
 
Arduino: Maquinas de estado con Arduino
Arduino: Maquinas de estado con ArduinoArduino: Maquinas de estado con Arduino
Arduino: Maquinas de estado con ArduinoSANTIAGO PABLO ALBERTO
 
Desarrollo de aplicaciones
Desarrollo de aplicacionesDesarrollo de aplicaciones
Desarrollo de aplicacionesAlexi_Kleeo
 
Programación estructurada plc
Programación estructurada plcProgramación estructurada plc
Programación estructurada plcMario RH
 

Similar a Programación Basada en Autómatas (20)

Arduino: Curso Arduino y robótica
Arduino: Curso Arduino y robóticaArduino: Curso Arduino y robótica
Arduino: Curso Arduino y robótica
 
Curso-de-PLC.pdf
Curso-de-PLC.pdfCurso-de-PLC.pdf
Curso-de-PLC.pdf
 
009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados
 
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...
009 Electroneumática y Neumática: electroneumática con circuitos secuenciales...
 
04a 150206074952-conversion-gate02
04a 150206074952-conversion-gate0204a 150206074952-conversion-gate02
04a 150206074952-conversion-gate02
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Controladores (teoria de control)
Controladores (teoria de control)Controladores (teoria de control)
Controladores (teoria de control)
 
Electrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDLElectrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDL
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidad
 
Presentació RobòTica
Presentació RobòTicaPresentació RobòTica
Presentació RobòTica
 
ARDUINO GRAFCET - Metodología para la adaptación de automatismos simulado...
ARDUINO  GRAFCET  - Metodología para la adaptación  de automatismos  simulado...ARDUINO  GRAFCET  - Metodología para la adaptación  de automatismos  simulado...
ARDUINO GRAFCET - Metodología para la adaptación de automatismos simulado...
 
Sistemas Embebidos
Sistemas EmbebidosSistemas Embebidos
Sistemas Embebidos
 
Lenguaje Ladder
Lenguaje LadderLenguaje Ladder
Lenguaje Ladder
 
Presentacion final de control
Presentacion final de controlPresentacion final de control
Presentacion final de control
 
Sistemas digitales
Sistemas digitalesSistemas digitales
Sistemas digitales
 
Algorítmos - Conceptos básicos
Algorítmos - Conceptos básicosAlgorítmos - Conceptos básicos
Algorítmos - Conceptos básicos
 
Arduino: Maquinas de estado con Arduino
Arduino: Maquinas de estado con ArduinoArduino: Maquinas de estado con Arduino
Arduino: Maquinas de estado con Arduino
 
Desarrollo de aplicaciones
Desarrollo de aplicacionesDesarrollo de aplicaciones
Desarrollo de aplicaciones
 
Programación estructurada plc
Programación estructurada plcProgramación estructurada plc
Programación estructurada plc
 
algoritmo
algoritmoalgoritmo
algoritmo
 

Más de Jonathan Ruiz de Garibay (16)

Vocaciones STEM
Vocaciones STEMVocaciones STEM
Vocaciones STEM
 
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
 
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
 
Programación en Arduino
Programación en ArduinoProgramación en Arduino
Programación en Arduino
 
Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
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

Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISIfimumsnhoficial
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 

Último (20)

Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISI
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 

Programación Basada en Autómatas

  • 1. Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Programación Basada en Autómatas
  • 2. Sistemas Electrónicos Programables Patrones de Diseño Software  Para programa correctamente un sistema embebido, un desarrollador software debe conocer y dominar gradualmente los patrones o métodos de programación más usados porque  proporcionan catálogos de elementos reusables en el diseño de sistemas software,  evitan la reiteración en la búsqueda de soluciones a problemas ya conocidos,  estandarizan el modo en el que se realiza el diseño, entre otras cosas Un Patrón de Diseño Software es una solución efectiva y reutilizable a un problema de diseño software No pretenden imponer ciertas alternativas de diseño ni eliminar la creatividad del proceso de diseño
  • 3. Sistemas Electrónicos Programables Patrón Singleton  Por medio de este patrón se pretende garantizar la existencia de una única instancia para una clase; y la creación de un mecanismo de acceso global a dicha instancia.  Se basa en el uso de un constructor privado y un atributo estático con la única instancia posible de la clase. class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton GetInstance() { { if (instance == null) instance = new Singleton(); return instance; } }
  • 4. Sistemas Electrónicos Programables Patrón Código Espagueti  En realidad, es un anti-patrón, y es un término utilizado para los programas computacionales que tienen una estructura de control de flujo compleja e incomprensible.  Suele asociarse a lenguajes de programación antiguos o básicos y a programadores nóveles.  Se identifica fácilmente cuando:  se realiza un uso recurrente de sentencias condicionales anidadas (if-then-else, while…),  se crean situaciones de bloqueo del sistema (while(1), delay()…) y  se realizan las mismas comprobaciones una y otra vez a lo largo del programa. No hay nada malo en escribir código espagueti inicialmente si facilita la compresión de un problema; lo incorrecto es considerar el código como definitivo
  • 5. Sistemas Electrónicos Programables Código Espagueti (continuación…)  Ejemplo 2:  Programar una luz frontal de atletismo con la siguiente funcionalidad:  Por medio de un botón se puede pasar entre 4 modos diferentes: apagado, encendido, parpadeo y regulación de luz.  Con cada pulsación, se pasa de un modo al siguiente, y del último al primero.  En el estado de parpadeo; la luz se encenderá y apagará cada 500mS.  En el estado de regulación de luz; la intensidad de luz será ajustada por medio de un potenciómetro.
  • 6. Sistemas Electrónicos Programables Código Espagueti (continuación…) void setup() { pinMode(2, INPUT); pinMode(6, OUTPUT); } void loop() { digitalWrite(6, LOW); while (digitalRead(2) == LOW); delay(200); digitalWrite(6, HIGH); while (digitalRead(2) == LOW); delay(200); while (digitalRead(2) == LOW) { digitalWrite(6, LOW); delay(500); digitalWrite(6, HIGH); delay(500); } delay(200); while (digitalRead(2) == LOW) { int val = analogRead(A1); analogWrite(6, (val * 255.0) / 1023.0); } delay(200); } Anidamiento de Condicionales Comprobación Repetitiva Situación de Bloqueo
  • 7. Sistemas Electrónicos Programables Máquina de Estados  Se llamará máquina de estados finitos si el conjunto de estados de la máquina es finito;  siendo éste el único tipo de máquina de estados que es posible modelar con un computador.  La representación gráfica se realiza por medio de Grafos o Diagramas de Estados;  aunque es posible utilizar diagramas de secuencia. Se denomina Máquina de Estados al comportamiento de un sistema con entradas y salidas; donde las salidas dependen tanto de las entradaS actuales como de las anteriores
  • 8. Sistemas Electrónicos Programables Autómatas Finitos  Formalmente, un autómata finito es una 5-tupla (Q, Σ, q0, δ, F) donde:  Q es un conjunto finito de estados  Σ es un alfabeto finito  q0 ∈ Q es el estado inicial  δ: Q x Σ  Q es una función de transición  F ⊆ Q es un conjunto de estados finales Un Autómata Finito es un modelo matemático para la representación de una máquina de estados finitos.
  • 9. Sistemas Electrónicos Programables Autómatas Finitos (continuación…)  Representación formal de un autómata:  Como Diagrama de Estados  Como tabla de transiciones S2S1 1 1 1 0 Salida Q ∈ Q Símbolo δ ∈ Σ Llegada δ(q,σ) ∈ Q S1 0 S2 S1 1 S1 S2 0 S1 S2 1 S2 0 1  S1 S2 S1 S2 S1 S2 ó
  • 10. Sistemas Electrónicos Programables Diagramas de Estados  Se componen de 3 elementos principales:  Estado: es una condición o situación estable en el tiempo, donde se puede realizar alguna actividad, o no, a la espera de algún tipo de evento.  Evento: es un acontecimiento significativo que puede, o no, activar una transición entre estados.  Transición: es una relación entre dos estados por medio del cual se indica qué evento debe producirse para pasar de un estado a otro. Los Diagramas de Estados modelan el comportamiento de un sistema a lo largo de su ciclo de vida; mostrando el flujo de control entre los diferentes estados
  • 11. Sistemas Electrónicos Programables Diagramas de Estados (continuación…)  Ejemplo 3:  Definición del funcionamiento de una puerta: Secuencia de Eventos: 1. Abrir con Llave 2. Abrir Puerta 3. Cerrar Puerta 4. Abrir Puerta 5. Cerrar Puerta 6. Cerrar con Llave Estado Transición Evento Abrir con Llave Cerrar con Llave Abrir Puerta Cerrar Puerta Cerrada Cerrada con llave Abierta
  • 12. Sistemas Electrónicos Programables Diagramas de Estados (continuación…)  Ventajas:  Los diagramas de estado son intuitivos y fáciles de entender.  Su uso está muy extendido (por ejemplo, en protocolos de comunicación).  El sistema se divide en subsistemas más pequeños y manejables.  Es posible ampliar la funcionalidad del sistema con sólo añadir nuevos estados y transiciones (sin cambiar lo implementado).  Desventajas:  No es aplicable al 100% de los casos.  Es fácil caer en el error de definir demasiados estados lo que complicará el sistema  se puede solucionar con jerarquías.
  • 13. Sistemas Electrónicos Programables Programación de un Autómata  Ejemplo 4:  Especificar el diagrama de estados de la luz frontal del ejemplo 2. Pulsar Botón EncendidoApagado ParpadeoRegulación Pulsar Botón Pulsar Botón Pulsar Botón
  • 14. Sistemas Electrónicos Programables Programación de un Autómata (continuación…)  Ejemplo 4 (continuación…):  Analizar los eventos que generan las transiciones y las acciones a realizar en cada estado. Evento Significado Pulsar Botón Cuando la señal pasa de nivel bajo a nivel alto Estado Acciones Se realiza… Apagado* Apagar la luz 1 vez Encendido Encender la luz 1 vez Parpadeo Apagar la luz cuando hayan transcurrido 500 mS todo el tiempo Encender la luz cuando hayan transcurrido500 mS todo el tiempo Regulación Regular la luz en base al valor del potenciómetro todo el tiempo * Estado inicial
  • 15. Sistemas Electrónicos Programables Programación de un Autómata (continuación…)  Ejemplo 4 (continuación…):  Identificar los requisitos de cada evento y cada estado. Evento Requisitos Pulsar Botón R1. Problema de rebotes con el sistema mecánico del pulsador R2. Es posible utiliza la interrupción externa Estado Requisitos Apagado R3. La luz debe estar apagada al arrancar el sistema R4. La luz se apaga en la transición hacia este estado Encendido R5. La luz se enciende en la transición hacia este estado Parpadeo R6. Se debe guardar el tiempo del último cambio que se ha realizado R7. Se cogerá el primer valor en la transición hacía este estado R8. Se pueden crear dos sub-estados: Apagado y Encendido Regulación Ninguno
  • 16. Sistemas Electrónicos Programables Programación de un Autómata (continuación…)  Ejemplo 4 (continuación…):  Codificar el programa en base a toda la información obtenida previamente: #define LUZ 6 #define PULSADOR 2 #define POTENCIOMETRO A1 #define APAGADO 0 #define ENCENDIDO 1 #define PARPADEO 2 #define REGULACION 3 byte estado = APAGADO; byte subestado; unsigned long tiempoAnterior; void setup() { pinMode(PULSADOR, INPUT); pinMode(LUZ, OUTPUT); attachInterrupt(0, intPulsador, RISING); digitalWrite(LUZ, LOW); } Definición de los Estados Requisito R3 Requisito R1 Variables para el Autómata
  • 17. Sistemas Electrónicos Programables Programación de un Autómata (continuación…) void loop() { switch(estado) { case APAGADO: break; case ENCENDIDO: break; case PARPADEO: if ((millis() - tiempoAnterior) > 500) { tiempoAnterior = millis(); if (subestado == ENCENDIDO) { digitalWrite(LUZ, LOW); subestado = APAGADO; } else { digitalWrite(LUZ, HIGH); subestado = ENCENDIDO; } } break; case REGULACION: int val = analogRead(POTENCIOMETRO); analogWrite(LUZ, (val * 255.0) / 1023.0); break; } } Requisito R6 Clasificación de Estados Requisito R8
  • 18. Sistemas Electrónicos Programables Programación de un Autómata (continuación…) void intPulsador() { delay(20); switch(estado) { case APAGADO: digitalWrite(LUZ, HIGH); estado = ENCENDIDO; break; case ENCENDIDO: tiempoAnterior = millis(); subestado = ENCENDIDO; estado = PARPADEO; break; case PARPADEO: estado = REGULACION; break; case REGULACION: digitalWrite(LUZ, LOW); estado = APAGADO; break; } } Requisito R4 Clasificación de Estados Requisito R5 Requisito R7
  • 19. Sistemas Electrónicos Programables Programación de un Autómata (continuación…)  Ejemplo 4 (continuación…):  Añadir un nuevo modo de funcionamiento donde la luz se encienda a un 50% de la potencia: ¿Cómo de complicado y costoso sería este cambio?
  • 20. 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