Paso 2: Una plantilla simple.
la red de
Crear un nodo de red con el parámetro row en 56. Se trata de una línea vertical de la imagen. A continuación, establezca el parámetro de columnas a 25. Cambiar las dimensiones de la misma anchura 120 y altura 300. Resultará en una cuadrícula de puntos.
Esta rejilla de puntos se ordena en el eje Y. Tenemos que cambiar para que los 56 primeros puntos son la primera columna de la cuadrícula, el segundo conjunto de 56 puntos de la segunda columna de la cuadrícula y así sucesivamente.
Crear un nodo de tipo y conectarse grid1 del puerto de formas. Cambie el parámetro de orden para X.
la forma de
La siguiente cosa que necesitamos es una forma.
Crear un nodo de elipse y dejarlo en sus parámetros por defecto.
la superposición
La idea es que vamos a intentar averiguar qué puntos de la cuadrícula superponen la elipse. Los que tienen que almacenarse como 1, los que no tienen que almacenarse como 0. Esto no es una función de construir-en, pero NodeBox nos permite utilizar nuestro propio código así.
Abra un editor de texto y escriba
def cook (forma, puntos): si shape.contains (points.x, points.y): retorno 1 otro: Return 0guárdelo como un archivo de python llamado check.py. Ahora que tenemos una función de convocatoria, se puede implementar en NodeBox. Primero tenemos que importar el archivo de python en el programa.
* Ir a archivo >> bibliotecas de código. Se abrirá una nueva ventana pequeña con en la parte superior derecha de la esquina un signo '+'.
* Presione '+' y seleccione el Python Python cierre opción. Vaya a check.py
* Si puede ver una referencia a él puede cerrar la ventana.
Ahora es importar el archivo de python y la función en se puede llamar para de un nodo.
Cada nodo requiere una función, usted puede averiguar que uno Seleccione un nodo y luego ir a la ficha de metadatos sobre la ventana de parámetros del puerto. Abrirá una nueva ventana con las especificaciones del nodo y sus puertos. Si vas a 'Opciones' puede averiguar lo que la función se refiere a. En el caso de un rectángulo que dirá: corevector/rect, lo que significa que llamará la función rect en el archivo corevector. Para llamar a la función de cocinero en checkImage.py que voy a tener que llamar a checkImage/cocinero.
Necesito un nodo donde puedo enviar una forma y una lista de puntos y que devuelve una lista (de 0 y 1). Podemos utilizar para comenzar con el nodo de filtro pues ya que importa una forma.
* Crear un nodo de filtro.
* Seleccione el nodo y vaya a la ficha de metadatos.
* Ir al nodo >> ajustes. Escriba a ' check/cook' en la opción de 'Función'.
Todavía necesitamos un nuevo puerto. Por el momento el nodo sólo puede recibir una forma.
* En la ventana de metadatos: haga clic en el botón '+' en la esquina inferior izquierda.
* Introduzca un nombre de puerto: lo llaman 'puntos'.
* Seleccione 'punto' en el menú tipo y pulse 'Aceptar'.
Ahora tenemos dos puertos de entrada, uno negro para nuestra forma (la elipse) y uno azul para nuestros puntos (para nuestra red de clasificados).
Conecte sort1 al puerto de puntos del nuevo nodo filtro y conecte ellipse1 al puerto de forma del nodo de filtro. Debe devolver una lista de 0 y 1 que podemos utilizar para crear un color.
visualizarlo
Crear un nodo de color rgb y cambiar el rango a 1. Conecte filter1 al puerto verde. Ahora podemos visualizar en NodeBox lo que será posteriormente en la interfaz.
* Crear un nodo rectangular de 5 por 5.
* Crear un nodo de traducir y conecte la rect a su parámetro de forma y sort1 a su parámetro de traducir.
* Crear un nodo colorise y conectar traducir a ella. Conectar el nodo de rob al parámetro llene esto colorise nodo y hacerla. La elipse debe aparecer. (véase la captura de pantalla en la parte superior este paso)
en hex.
Primer paso es crear pares de 8, entonces a escribir en valor hexadecimal y luego la salida a un archivo.
* Crear un nodo de la rebanada. Establezca el parámetro de cantidad a 8 y conecte filter1 al puerto de la lista. El índice de inicio nos permite leer 8 valores y queremos hacerlo sobre un paso de 8. Crear una subred para él y llamarlo eight_bit. Publicar el parámetro de índice de inicio por lo que es accesible desde la raíz.
* Crear un nodo de Conde, conecte filter1 a su puerto de la lista. Esto genera el número de valores en la lista.
Crear un nodo de gama y conectar la cuenta de que es el puerto final. Establezca el parámetro paso a 8. Esto devuelve una lista de 0, 8, 16, 24, 32,... Podemos utilizar estos valores como el índice de inicio de nuestro nodo de eightbit. Se conectan.
* Ir en la subred y crear 8 nodos del segmento. Cada uno de ellos tiene 1 como parámetro de cantidad. El primero tiene Inicio índice 0, el segundo un 1... Conecte todo al primer nodo de la rebanada (con la cantidad de 8).
* Crear nodos concatenar 3. Conecte todos los nodos del segmento (con cantidad 1) a ellos y ver resultados como 00000000, 00000000, 00000000, 00011111...
Abra un editor de texto y escriba
importación matemáticasDEF tohex(n): volver hex(int(n,2))
guardar como tohex.py
importar en NodeBox mediante la opción de bibliotecas de código.
Crear un nuevo nodo es un nodo base se amplíe para los nodos de medida. Ir a los metadatos y cambiar su función para 'tohex/tohex'. Crear un nuevo puerto, llamada bits y poner el tipo en cadena.
Conecte el nodo de 8 bits y dejarlo. El resultado debe ser hexagonales valores como 0 x 0, 0x3, 0xff...
Es importante saber cuántos paquetes de' ocho' así son crear un nuevo nodo de la cuenta. Conectar el nodo hexagonal a su parámetro de la lista.
para arduino
Ahora vamos a la salida a un archivo. Vamos a usar un formato csv.
Abra un editor de texto y escriba:
csv de importaciónDEF writetocsv(hexes,name): Lista =]
csvfile = archivo ('/ usuario/escritorio /'+ nombre + 'CSV', 'w') # esto debe referirse a una carpeta en su computadora
escritor = csv.writer (csvfile, delimiter = ",")
para hex en casillas: list.append(hex) writer.writerow(list)
csvfile.Close()
volver casillas
guárdelo como toarduino.py. Volver a crear un nuevo nodo base, cambiar su función a 'toarduino/writetocsv' y crear dos nuevos parámetros. Ambos tienen un widget de cadena pero el primero tiene una lista como gama, mientras que el segundo tiene valor como gama. Maleficios de llamada primero y el segundo nombre. Vamos a enviar la salida del nodo hexagonal al puerto de casillas y escriba un nombre de archivo en el parámetro name.
código de Arduino
a continuación es el código de arduino comenzado desde el tutorial de Tom Igoe en el patio de Arduino. La función de palanca de cambios funciona a través de todos los bytes y tiene 3 argumentos. (matriz de secuencia, cantidad y tiempo retardado). óvalo del octeto [175] almacena la información de NodeBox.
El potPin refiere a un potenciómetro que permite para controlar el tiempo retardado en la interfaz.
--
//**************************************************************//
código de este ejemplo de playground de arduino:
Nombre: shiftOutCode, Hola mundo
Autor: Carlyn Maw, Tom Igoe, David A. Mellis
Fecha: 25 de octubre de 2006
Modificado: 23 de marzo de 2010
Versión: 2.0
Notas: El código para utilizar un registro de desplazamiento 74HC595 / /
: contar de 0 a 255
//****************************************************************
int latchPin = 8;
clockPin INT = 12;
int potPin = A0;
int dataPin = 11;
óvalo del octeto [175] = {0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0,
0 x 0 0 x 0 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0xff, 0 x 0 0 x 0 0 x 0, 0 x 0, 0 x 0, 0x3, 0xff, 0xc0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x7,
0xFF, 0xe0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x7, 0xff, 0xe0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0xf, 0xff, 0xf0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0xf,
0xFF, 0xf0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f, 0xff, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f, 0xff, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f,
0xFF, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f, 0xff, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f, 0xff, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f,
0xFF, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x1f, 0xff, 0xf8, 0 x 0 0 x 0 0 x 0, 0 x 0, 0xf, 0xff, 0xf0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0xf,
0xFF, 0xf0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x7, 0xff, 0xe0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x7, 0xff, 0xe0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0x3,
0xFF, 0xc0, 0 x 0 0 x 0 0 x 0, 0 x 0, 0 x 0, 0xff, 0 x 0 0 x 0 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0,
0 x 0 0 x 0 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0, 0 x 0};
void setup()
{
pinMode (dataPin, salida);
pinMode (latchPin, salida);
pinMode (clockPin, salida);
pinMode (potPin, entrada);
Serial.Begin(9600);
}
desplazador del vacío (byte sec1 [], float tiempo retardado, int len) {}
para (int x = 0; x < len; x ++)
{
digitalWrite (latchPin, bajo); Inicio sturen via latchpin
Si (x %7 == 0) {}
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+1]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+2]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+3]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+4]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+5]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+6]);
shiftOut (dataPin, clockPin, MSBFIRST, seq1[x+7]);
}
digitalWrite (latchPin, HIGH); parada versturen
Delay(timeDelay);
}
Delay(timeDelay*20);
}
void loop() {}
temp de flotador = analogRead(potPin);
tiempo retardado de flotador = asignan (temp, 0, 1023, 0, 25);
palanca de cambios (oval, tiempo retardado, 175);
}
flotador asignado (float x, float in_min, in_max del flotador, flotador out_min, flotador out_max) {}
retorno (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
otra imagen
Ahora contamos con una plantilla básica que podemos utilizar para crear otras imágenes. Cambiando la elipse a otra forma crea una nueva matriz. Puede crear un solo carácter de un alfabeto. etc.