viernes, 22 de abril de 2011

Generador de encoders ópticos en Processing.

La salida del script es un pdf con los encoders.
Me he entretenido esta tarde un rato y he programado un pequeño generador de encoders ópticos en Processing.

El código es muy sencillo, lo que hace básicamente es generar dos círculos divididos en ocho sectores y otros dos en 16 sectores que alternan franjas blancas y negras. Este es el tipo de encoder más sencillo que se puede aplicar, otras variantes consistirían en añadir otra franja desfasada o utilizar un código de Gray en las bandas, estas dos alternativas nos permitirían, incluso, saber si vamos hacia adelante o hacia atrás analizando únicamente la lectura de los sensores.

Como ahora mismo sólo dispongo de un sensor óptico de reflexión no me pareció demasiado prioritario seguir añadiendo funciones, en cualquier caso, los cambios al sketch propuesto serían simples.

Les pego debajo el código del sketck de Processing.

import processing.pdf.*;

float numSect = 8;


void setup() {
size(600, 800, PDF, "encoder.pdf");
}

void draw() {
float step = TWO_PI / numSect;
float start = 0;
float end = step;
boolean black = false;
for (int i = 0; i < numSect; i++) {     if (black) {
fill(0);
}
else {
fill(255);
}
black = !black;
arc(170, 250, 100, 100, start, end);
arc(320, 250, 100, 100, start, end);
start = end;
end = end + step;
}

numSect *= 2;
step = TWO_PI / numSect;
start = 0;
end = step;
for (int i = 0; i < numSect; i++) {     if (black) {
fill(0);
}
else {
fill(255);
}
black = !black;
arc(170, 400, 100, 100, start, end);
arc(320, 400, 100, 100, start, end);
start = end;
end = end + step;
}
fill(255);
ellipse(170, 250, 10, 10);
ellipse(320, 250, 10, 10);
ellipse(170, 400, 10, 10);
ellipse(320, 400, 10, 10);
exit();
}


No hay comentarios:

Publicar un comentario