Light Plotter with Intel Edison (14 / 16 paso)

Paso 14: Reunir todo el código

Este es un resumen del código que se ha discutido en los pasos anteriores. Se adjunta mi archivo final para su uso.

El código consta de estas clases

  • lápiz óptico
  • SVGHandler
  • paso a paso
  • lightPlotter
  • cmdInterface

Clase de lápiz óptico

Esta clase encarga de comunicación con ESP8266 el LED RGB controlado por wifi a través de un interfaz HTML. Tiene tres funciones

setColourRGBTuple() Esta función se utiliza para definir el color actual a un valor RGB proporcionado en la forma de una tupla (R, G, B), donde los valores R, G y B son entre 0 y 255 (base 10 - decimal)

setColourHexString() Esta función se utiliza para definir el color actual a un valor RGB proporcionado en la forma de una cadena hexadecimal '#rrggbb', donde los valores de rr, gg y bb son entre 00 y ff (base 16 - maleficio)

setColour() Esta función se llama setColourRGBTuple o setColourHexString para aplicar el color en los LEDS vía HTML. Si llamamos a esta función directamente entre pasos motor podría retrasar un e interferir con la suavidad de nuestro caminar. Para evitar esto se llama en un hilo, para que se ejecute simultáneamente con el código paso a paso.

Clase SVGHandler

Operación de esta clase se explicó en el paso "Coordenadas XY de un SVG" en definitiva se lee en un SVG (que se supone que tienen objetos de trazado único y lineal de coordenadas absolutas solamente) y los almacena como una lista de coordenadas de inicio y final de líneas, junto con el color de la línea. Los segmentos forman una lista de listas, cada segmento tiene la forma [x 0 y0 x1 y1 RGB]. x e y son coordenadas normalizados flotadores (escalados para que el mínimo es 0 y el máximo es 1).

Clase paso a paso

Esta clase se describe en el paso "Código Python para conducir los steppers". Se encarga de la comunicación I2C con los motores paso a paso y proporciona una función step() simple que mueve el paso hacia delante o hacia atrás un paso a paso.

Clase LightPlotter

La clase de LightPlotter todas estas otras clases reúne en un sistema que puede dibujar con la luz. Durante la inicialización hay unas cuantas variables clave que se configuran

  • los dos motores se definen como motor1 (motor izquierdo) y el motor2 (motor derecho), son instancias de la clase paso a paso
  • Se define el número de pasos horizontales entre motor1 y motor2 (xRes). Esto debe ser determinado experimentalmente y depende del diámetro de sus poleas y la distancia entre los motores.
  • Se define el tiempo de defectos entre pasos (stepTime). un valor de 10 ms (0,01) funcionó bien para mí, pero usted tendrá que determinar qué tan rápido puede caminar sin falta pasos.
  • También se define el tiempo de paso máximo (stepTimeMax), pero esto es realmente sólo una seguridad para los cálculos, no tiene una relevancia de hardware, opté por 1 segundo, que nunca fue alcanzado en la práctica.
  • usableArea. Como se describe en el el paso de "Comprender la geometría de una cadena Plotter", las extremidades justo debajo de los motores y directamente entre los motores (en la parte superior) debe evitarse, por lo que definir una variable "usableArea" que es un porcentaje del área teórico. 70% (o 0.7) es un buen punto de partida.
  • A veces puede que desee cambiar su imagen hacia abajo (por ejemplo, a los pies de un personaje en el piso), la variable "yOffset" se encarga de esto

Son funciones de la clase lightPlotter

  • setOrigin
  • goTo
  • runSteppers
  • stepMotors

setOrigin() se utiliza para indicar el luz plotter que está actualmente en (0,0) que se utiliza en la calibración.

runSteppers() es una función de conveniencia que se lleva en una serie de pasos que debe girar cada motor, así como el intervalo entre pasos para cada motor. Con hilos los dos motores son capaces de ser caminado al mismo tiempo.

goTo() toma un (X, Y) coordinar y calcula el número de pasos que cada motor tiene que mover para conseguir el LED a esa ubicación. Además determina el retraso entre las medidas para velar por que ambos motores al mismo tiempo para llegar a su destino. Una vez que estos datos se calculan, goTo() hace uso de la función runSteppers() para obtener los motores móviles.

cmdInterface clase

Esta clase hace uso de Python muy cool módulo "cmd" lo que nos permite construir fácilmente una interfaz de línea de comandos para nuestro plotter de luz.

Funciones que llevan el prefijo "do_" se pueden llamar desde la línea de comandos cuando se ejecuta el script. Puedes ver que todos ellos se corresponden casi directamente a las funciones de las distintas clases, en la mayoría de los casos incluyen un bit de comprobación de errores para asegurarse de que las discusiones son sanas. El paso de "Cómo usar el sistema" describe cómo utilizar estos.

  • do_plotsvg
  • do_movesteps
  • do_invertMotor
  • do_disableMotor
  • do_enableMotor
  • do_setrgb
  • do_goxy
  • do_goxyrgb
  • do_setusable
  • do_setorigin
  • do_setyoffset
  • do_exit

Artículos Relacionados

Rover de monitoreo ambiental - impulsado por Intel Edison

Rover de monitoreo ambiental - impulsado por Intel Edison

Se trata de un instructable inspirado por la Curiosidad de Marciano , no espero este rover a Marte!! pero lo imitan e implementar algunas características interesantes con Edison de Intel. Dicho esto, a la madre tierra puede encontrar aplicaciones ind
Monitor remoto de parámetros ambientales de Intel Edison IoT

Monitor remoto de parámetros ambientales de Intel Edison IoT

Este es un proyecto muy básico hecho en javascript a través del IDE «Intel XDK IoT edición». Cuando haya terminado, usted tendrá un sistema de seguimiento de parámetros ambientales (temperatura, luz y calidad del aire), localmente en la pantalla LCD
Intel Edison Sensor tablero usando francobordo/Python/matraz (programación mínima necesaria)

Intel Edison Sensor tablero usando francobordo/Python/matraz (programación mínima necesaria)

Primero queria agradecerles por la oportunidad de trabajar con un Edison y para ser dado por Intel/Instructables con el fin de participar en su concurso de IoT. Creo que esto es una gran manera de construir comunidad y animar a los desarrolladores qu
Bomba de agua de Sensor de movimiento de Intel Edison

Bomba de agua de Sensor de movimiento de Intel Edison

Aprender a construir un sistema de bomba de agua automatizado mediante el uso de un sensor de movimiento y una bomba de agua.Materiales necesarios:1 x 6v Mini bomba de agua2 x Grove IR distancia Interruptor1 x relé de Grove (30a)1 x Sensor de agua Gr
EQUIPO IMPACTO! Elegante casco - Intel Edison, Sparkfun 9DOF

EQUIPO IMPACTO! Elegante casco - Intel Edison, Sparkfun 9DOF

Edison de Intel con Sparkfun 9DOF LSM9DS0 IMU3er lugar a la IoT de Intel Roadshow NYC 2015Este Instructable es un casco elegante de IoT con Edison de Intel que utiliza un 9DOF de Sparkfun para recopilar datos del casco para medir cabeza tramas y crea
MCU-1: Un presupuesto Intel Edison MCU base Rover coche de juguete. (Intel IoT)

MCU-1: Un presupuesto Intel Edison MCU base Rover coche de juguete. (Intel IoT)

Pequeño video que muestra evitación del obstáculo y pocos botón basado en comandos vía bluetooth.Paso 1: ResumenEste proyecto construirá un coche rover simple que puede ser controlado por una aplicación smart android usando la voz o botón de comandos
Movimiento de cámara de seguridad activada usando Intel Edison

Movimiento de cámara de seguridad activada usando Intel Edison

El objetivo de este proyecto es hacer una cámara de seguridad que es activada por un sensor de movimiento. Un sensor de movimiento infrarrojo pasivo (PIR) supervisa de forma continua para cualquier movimiento en su campo de visión. Cuando se detecta
Resolver Sudoku usando Intel Edison

Resolver Sudoku usando Intel Edison

Objetivo• Partir de una imagen de un rompecabezas de Sudoku, extracto y (opcional) resolver el rompecabezas.Elementos de objetivo• Extraiga el rompecabezas de la imagen (imagen de la remodelación).• Identificar los números en cada celda. -Correlacion
Intel® Edison Hands-on día 8: Guardian del Eden

Intel® Edison Hands-on día 8: Guardian del Eden

¿Le gustaría proporcionar un cómodo entorno para sus plantas y flores en su jardín? ¿Están ellos sedientos por vez? A través de un sensor de temperatura, un sensor de humedad del suelo y una pantalla LCD, usted puede conseguir fácilmente el estado de
Intel Edison: BLE controla luces

Intel Edison: BLE controla luces

BLE de lucesHace un tiempo construí un DIY para la frambuesa Pi que podría controlar luces sobre Wifi. Mientras que Edison de Intel puede lograr la misma hazaña, hace una cosas más. Habla BLE. Este es tutorial práctica de convertir su placa Intel Edi
Intel® Edison Hands-on día 5: Voz activa bulbo

Intel® Edison Hands-on día 5: Voz activa bulbo

Foco activado por voz¿Había has estado curioso sobre el foco activado por voz en tu infancia? ¿Tenido alguna vez estampado una y otra vez y justo a su vez en la luz? Como aplauda sus manos, la luz será en turno. En esta sección vamos a hacer un foco
Intel® Edison Hands-on día 7: La caja del tesoro luminoso

Intel® Edison Hands-on día 7: La caja del tesoro luminoso

La caja del tesoro luminoso, el nombre suena divertido. Y que sería la verdadera diversión! Vamos a hacer esta caja, que estará cerrada durante el día, una vez en la noche, su luz conseguirá más brillante con el cuadro que se abre lentamente. Ha-ha..
Notificador de correo usando Intel-Edison la bandera

Notificador de correo usando Intel-Edison la bandera

En este proyecto, veremos cómo hacer un notificador de correo físico utilizando Intel EdisonComponentes necesarios:1. Intel Edison con placa base Arduino - como el procesador principal: https://www.sparkfun.com/products/13097 2. Motor servo: https://
Rastreador de vuelos en tiempo Real de ADS-B y dispositivo de monitorización utilizando Intel Edison

Rastreador de vuelos en tiempo Real de ADS-B y dispositivo de monitorización utilizando Intel Edison

Vigilancia dependiente automática-Broadcast (ADS-B) es un sistema de vigilancia satelital precisa. ADS-B utiliza tecnología GPS para determinar la ubicación de la aeronave, velocidad y otros datos y difunde que estaciones de información a una red de