Sie sind auf Seite 1von 5

Tarea Cuatro: Encoder

Martínez Velázquez, Fco. Javier *

February 5, 2019

Profesor: M. en M. Mario Alberto Magaña Mendez


Materia: Sistemas Embebidos
Matricula: 1831215543
Carrera: Maestria en Mecatrónica

* javier_c555@hotmail.com

1
Contents Martínez Velázquez, Fco. Javier

Contents
1 Máquina de estados 2
2 Código 2
2.1 main.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1 Máquina de estados
Máquinas de estado (FSM) Definición Una máquina de estados finita (FSM) es un modelo
usado para diseñar circuitos lógicos secuenciales. No puede estar en más de un estado por
vez. El estado en el que se encuentra se denomina estado actual. El cambio de un estado
a otro se denomina transición, y se dispara con el reloj del circuito Son muy útiles en el
diseño de protocolos de comunicación. Existen dos tipos de máquinas de estado: Moore y
Mealy Características

2 Código
Se creará un codigo para poder visualizar un pwm, esto es, con respecto al numero de pul-
sos y el sentido de giro (el cuál sera definido por un signo - o un +)nos hará un recorrido
de números, dependiendo del numero de pulsos seran los numeros que se visualizen en
pantalla, ya sea:
Números negativos:

*13
*11
*4
*2

Y para números positivos:

*14
*8
*7
*1

2
2.1 main.cpp Martínez Velázquez, Fco. Javier

2.1 main.cpp

#include <iostream>
using namespace std;

int fija[4][2] = {{0,0},{1,0},{1,1},{0,1}};


int datos [1][2];
int contador=0;
int valor_final = 0;

int main(){
int giro,residuo,f=0;
while(f<5){
cout<<"\n\nSimulacion de los pulsos de un Encoder \n";
cout<<"Positivo derecha----Negativo izquierda \n";
cout<<"\nInserte el numero de pulsos que desea que se desplace: ";
cin>>giro;
datos[0][0]=0;
datos[0][1]=1;
if(giro>=0){
for(int i=0; i<giro; i++){
valor_final = 0;
residuo = i%4;
if(fija[residuo][0] == 1)
valor_final = valor_final +8;
if(fija[residuo][1] == 1)
valor_final = valor_final +4;
if(datos[0][0] == 1)
valor_final = valor_final +2;
if(datos[0][1] == 1)
valor_final = valor_final +1;

cout<<"Valor Binario: "<<fija[residuo][0]<<fija[residuo][1]<<datos[0][0]


<<datos[0][1]<<" -----"<<"Valor Decimal: "<<"+"<<valor_final<<" \n";
datos[0][0] = fija[residuo][0];
datos[0][1] = fija[residuo][1];
contador++;
}
}
if(giro<0){
giro = abs(giro);
for(int i=0; i<giro; i++){
valor_final = 0;
residuo = i%4;

3
2.2 Resultados Martínez Velázquez, Fco. Javier

if(datos[0][0] == 1)
valor_final = valor_final +8;
if(datos[0][1] == 1)
valor_final = valor_final +4;
if(fija[residuo][0] == 1)
valor_final = valor_final +2;
if(fija[residuo][1] == 1)
valor_final = valor_final +1;

cout<<"Valor Binario: "<<datos[0][0]<<datos[0][1]<<fija[residuo][0]


<<fija[residuo][1]<<" -----"<<"Valor Decimal: "<<"-"<<valor_final<<"\n";
datos[0][0] = fija[residuo][0];
datos[0][1] = fija[residuo][1];
contador--;
}
}
cout<< "\nPulsos : " <<contador;
f++;
}
return 0;
}

2.2 Resultados

Con el codigo anterior obtenemos un resultado como la captura siguiente, en el que se


podra visualizar los numeros en sus respectivos giros

Figure 1: Ejemplo de la ventana desplegada

4
2.2 Resultados Martínez Velázquez, Fco. Javier

Al ingresar un valor positivo

Figure 2: Valores positivos

Al ingresar un valor negativo

Figure 3: Valores negtivos

Das könnte Ihnen auch gefallen