Picoo (actuador)

En este ejemplo de programa HOST se encienden distintos colores del Picoo según se mueve por distintas áreas del espacio (sensor RTLS).

Actuador3D requiere tres parametros

parámetro 1: es el LED a encender o apagar: 1 , 2, 3 ó 4. 5 significa encender o apagar todos

parámetro 2: es el color: {82 = rojo, 71 = verde, 66 = azul, 89 = amarillo, 80 = morado, 77 = menta, 87 = blanco, 79 = naranja}

parámetro 3: es el estado 0= apagado; 1=encendido

 

Código TUIML.xml

<juguemos>
 
 <token name="ubisense">
 <constraint name="todo" type= "2D" list_vertex="0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0,0.0,0.0">
 <tac subtoken="089"/>
 </constraint>
 
 <constraint name="paredCentro" type= "2D" list_vertex="0.44583333,0.21728395,0.6611111,0.21975309,0.65833336,0.36296296,0.44583333,0.36296296,0.44305557,0.21975309" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="paredIzq" list_vertex="0.41805556,0.21481481,0.4138889,0.36296296,0.19583334,0.36049384,0.20833333,0.21234567,0.41527778,0.21481481" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="paredDer" list_vertex="0.69027776,0.21728395,0.90416664,0.22469136,0.9027778,0.3580247,0.6888889,0.36049384,0.6861111,0.21481481" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="mesa1" list_vertex="0.20972222,0.5777778,0.325,0.58271605,0.31805557,0.7604938,0.19861111,0.745679,0.20694445,0.5802469" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="mesa2" list_vertex="0.37361112,0.5876543,0.48472223,0.5876543,0.47916666,0.76296294,0.36666667,0.7654321,0.37083334,0.5925926" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="mesa3" list_vertex="0.5152778,0.58518517,0.63472223,0.5925926,0.63055557,0.75061727,0.51111114,0.7654321,0.5152778,0.58518517" >
 <tac subtoken="089"/>
 </constraint>
 <constraint name="mesa4" list_vertex="0.68472224,0.5802469,0.81805557,0.58518517,0.81527776,0.74814814,0.68194443,0.7580247,0.68472224,0.58271605" >
 <tac subtoken="089"/>
 </constraint>

 
 <subtoken idG="089"/>
 </token>
</juguemos>

Código Host en Proccessing

int ANCHO=1280; //definir valores segun tamaño pantalla destino
int ALTO=768;

TACAPI miAPI;
DisplaysHost displaysClient;

//tags de ubisense
float tag089_X=0;
float tag089_Y=0;
int rojo=0;
String localizacion="todo";

void setup() {
 
 // Keystone will only work with P3D or OPENGL renderers, 
 // since it relies on texture mapping to deform
 //fullScreen( P3D);
 size(80, 60, P3D); 
 frameRate(16);
 
 //definicion de la API
 miAPI = new TACAPI();
 
 //virtual screens
 displaysClient = new DisplaysHost("host"); 
 
}

void draw() {
 //Programacion Juego 
 displaysClient.beginDraw(); 
 
 displaysClient.elipse(tag089_X,tag089_Y, 50,50, rojo, 100,100, 255);
 displaysClient.escribir("estoy en "+localizacion, ANCHO/2, ALTO/2, 20, 255, 255, 255, 255);
 displaysClient.endDraw();
 
}

void eventoTAC(TAC ta) {
 //tratamiento de tacs
 //ta.info();
 if (ta.getTokenName().equals("ubisense") && ta.getManipulacion().equals("move") && ta.getConstraintName().equals("todo") && ta.getSubtokenName().equals("089")) {
 tag089_X = ta.getValores().get(0)*ANCHO;
 tag089_Y = ta.getValores().get(1)*ALTO; 
 }
 if (ta.getTokenName().equals("ubisense") && ta.getManipulacion().equals("add") && ta.getSubtokenName().equals("089")) {
 if (ta.getConstraintName().equals("paredIzq")) {
 print("paredIzquierda ");
 
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="pared izquierda";
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 }
 if (ta.getConstraintName().equals("paredCentro")) {
 print("pared centro ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="pared centro";
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 } 
 if (ta.getConstraintName().equals("paredDerecha")) {
 print("pared derecha ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="pared derecha";
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 }
 if (ta.getConstraintName().equals("mesa1")) {
 print("mesa 1 ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 miAPI.actuator3D("picoo", 4, 1, 66, 1);
 miAPI.actuator3D("picoo", 4, 2, 66, 1);
 miAPI.actuator3D("picoo", 4, 3, 66, 1);
 miAPI.actuator3D("picoo", 4, 4, 66, 1);
 localizacion="mesa 1";
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 } 
 if (ta.getConstraintName().equals("mesa2")) {
 print("mesa 2 ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="mesa 2";
 miAPI.actuator3D("picoo", 4, 1, 71, 1);
 miAPI.actuator3D("picoo", 4, 2, 71, 1);
 miAPI.actuator3D("picoo", 4, 3, 71, 1);
 miAPI.actuator3D("picoo", 4, 4, 71, 1);
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 } 
 if (ta.getConstraintName().equals("mesa3")) {
 print("mesa 3 ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="mesa 3";
 miAPI.actuator3D("picoo", 4, 1, 89, 1);
 miAPI.actuator3D("picoo", 4, 2, 89, 1);
 miAPI.actuator3D("picoo", 4, 3, 89, 1);
 miAPI.actuator3D("picoo", 4, 4, 89, 1);
 } else {
 rojo=0;
 println("salgo");
 }
 }
 if (ta.getConstraintName().equals("mesa4")) {
 print("mesa 4 ");
 if (ta.getValores().get(0)==1.0) {
 rojo=255;
 println("entro");
 localizacion="mesa 4";
 miAPI.actuator3D("picoo", 4, 1, 79, 1);
 miAPI.actuator3D("picoo", 4, 2, 79, 1);
 miAPI.actuator3D("picoo", 4, 3, 79, 1);
 miAPI.actuator3D("picoo", 4, 4, 79, 1);
 } else {
 rojo=0;
 println("salgo");
 localizacion="todo";
 }
 }
 
 }
}

void mensajeRecibido(OscMessage theOscMessage) {
 //tratamiento mensaje osc
}

void keyPressed() {
 switch(key) { 
 case ESC: 
 displaysClient.disconnect();
 super.stop();
 break;

 }
}
 


Retos de aprendizaje


Documentación

  • actuator0D

Este método permite enviar órdenes de tipo 0D a un actuador. Se encuentra dentro de la clase TACAPI. Los parámetros que recibe son los siguientes:

String name: nombre del actuador al que va dirigida la orden.

int idG: id general del actuador

boolean valor: true, envía ‘1’, o false, envía ‘0’.

  • actuator1D

Este método permite enviar órdenes de tipo 1D a un actuador. Se encuentra dentro de la clase TACAPI. Los parámetros que recibe son los siguientes:

String name: nombre del actuador al que va dirigida la orden.

int idG: id general del actuador

float valor: valor que se envía al actuador.

  • actuator2D

Este método permite enviar órdenes de tipo 2D a un actuador. Se encuentra dentro de la clase TACAPI. Los parámetros que recibe son los siguientes:

String name: nombre del actuador al que va dirigida la orden.

int idG: id general del actuador

float valor1: valor 1 que se envía al actuador.

float valor2: valor 2 que se envía al actuador.

  • actuator3D

Este método permite enviar órdenes de tipo 3D a un actuador. Se encuentra dentro de la clase TACAPI. Los parámetros que recibe son los siguientes:

String name: nombre del actuador al que va dirigida la orden.

int idG: id general del actuador

float valor1: valor 1 que se envía al actuador.

float valor2: valor 2 que se envía al actuador.

float valor3: valor 3 que se envía al actuador.