Esta es una plantilla para programar un sistema secuencial con processing utilizando pinguino y processing.
con pinguino obtengo las estradas digitales para generar las transiciones entre estados y a su vez generar las salidas digitales que controlan el proceso.
La plantilla esta realizada para 4 estados y dos entradas digitales.
Las salidas y los cambios de estado se realizan sengun el problema
/*=========================================================================
Librerias
import hypermedia.pinguino.*;
Llamo la libreria para trabajar con la plataforma pinguino
Pinguino pinguino;
Creo el objeto pinguino
Variables
===========================================================================*/
import hypermedia.pinguino.*;
Pinguino pinguino;
/*=========================================================================*/
//variable que monitorea los estados
int nEstado;
//los nombres de los estados
int nEstadoA,nEstadoB,nEstadoC,nEstadoD;
//las entradas
int nSensor0,nSensor1,nSensor2,nSensor3,nSensor4;
// variables donde se guardan los bits capturados
int bit0,bit1,bit2,bit3,bit4;
void setup(){
size(400,200);
Pinguino.log( true );
pinguino = new Pinguino( this );
//Doy valores para identificar los estados
nEstadoA=0;
nEstadoB=1;
nEstadoC=2;
nEstadoD=3;
//Indico los terminales de pinguino como entradas digitales
//los terminales 8,9,10,11,12 de pinguino
nSensor0=8;
nSensor1=9;
nSensor2=10;
nSensor3=11;
nSensor4=12;
//Inicio en el estado A
nEstado=nEstadoA;
}
void draw(){
//leo las entradas digitales
bit0 = pinguino.digitalRead(nSensor0);
bit1 = pinguino.digitalRead(nSensor1);
bit2 = pinguino.digitalRead(nSensor2);
bit3 = pinguino.digitalRead(nSensor3);
bit4 = pinguino.digitalRead(nSensor4);
//obtengo el valor digital equivalente de las entradas digitales
dato = bit4*16 + bit3*8 + bit3*2 + bit1*2 + bit0;
println("Dato de entrada es " + dato);
//verifico si esta en el estado A
if (nEstado==nEstadoA){
//verifico las condiciones para las entradas que ocasionan cambio
//de estado como ejemplo se tiene los valores de entrada 0,1,2,3
//para evaluar solo dos sensores, el sensor0 y el sensor1
println("Estado A");
if(dato==0){
}
if(dato==1){
}
if(dato==2){
}
if(dato==3){
}
}//fin del estado A
//verifico si esta en el estado B
if (nEstado==nEstadoB){
println("Estado B");
if(dato==0){
}
if(dato==1){
}
if(dato==2){
}
if(dato==3){
}
}//fin del estado B
//verifico si esta en el estado C
if (nEstado==nEstadoC){
println("Estado C");
if(dato==0){
}
if(dato==1){
}
if(dato==2){
}
if(dato==3){
}
}//fin del estado C
//verifico si esta en el estado D
if (nEstado==nEstadoD){
println("Estado D");
if(dato==0){
}
if(dato==1){
}
if(dato==2){
}
if(dato==3){
}
}//fin del estado D
}
No hay comentarios:
Publicar un comentario