Paso 6: El genio en la lámpara
Umm, si usted puede pensar en un beneficio, me avisas, yo estaba teniendo problemas con eso.
He incluido el código como un archivo de texto, tendrás que abrirlo en un editor de texto y luego copiar y pegar en el entorno de Arduino. O, si lo prefiere, simplemente abra el software de Arduino y seguir escribiendo a medida que avanzamos.
Para la lámpara de emulación estoy usando mi biblioteca Moodlamp personalizada, usted puede conseguir los archivos de biblioteca y documentación sobre mis otros RGB Instructable, Moodlamp RGB con biblioteca personalizada. De lo contrario puede copiar simplemente el sensor de color, manejo de código y salida a su lámpara RGB de tu manera preferida.
Así que analicemos el código.
Comience con la primera imagen, o seguir junto con el archivo de texto.
Empezamos con una instrucción include seguida por un par de declaraciones.
La instrucción include es para la biblioteca de Moodlamp. La declaración bajo sólo está diciendo que nuestra instancia de Moodlamp se llamará la lámpara.
Luego hemos creado un par de los titulares de lugar.
La primera es una matriz que utilizaremos para abordar las clavijas que LEDs se conectan a. Recuerde que conectamos nuestras luces sensor a esos mismo números de pin.
Los otros deben ser lo suficientemente claro por las notas en la imagen, si no, nunca miedo, son algunos titulares de lugar para los valores que usaremos más adelante.
El marcador de posición para una lectura promedio no es especial, él consiguió su propia imagen porque fue pasado por alto casi.
Una vez realizados todas nuestras declaraciones, ahora tendremos que escribir la función de configuración. Empezamos asignando nuestro sensor pernos hechos salir. No tenemos que declarar la entrada analógica del sensor, y los pernos de las lámparas son atendidos por la biblioteca de Moodlamp.
Después comenzamos la comunicación serial por lo que podemos conseguir alguna información de depuración detrás de nuestra lámpara.
Después de eso podemos proceder con nuestra función de loop. El lazo es el código que el Arduino se ejecutará una y otra vez. Como se puede ver, pedimos unas cuantas funciones.
Primero llamamos a checkBalance para ver si el saldo ha sido establecer y ajustar si es necesario. (Cuando enciende)
A continuación, comprobamos el color debajo del sensor. Una vez que tenemos un color, imprimir a la pantalla y a continuación, establezca el color de la lámpara. La última llamada a getReading no hace nada útil, dejado allí por accidente. Bueno, podría reclamar que solo estaba manteniendo la lámpara sea demasiado ocioso.
Así que echemos un vistazo a las diferentes funciones.
CheckBalance es bastante sencillo, comprueba si existe un equilibrio y si no, entonces establece mediante una llamada a la función setBalance.
Echemos un vistazo a la función setBalance, es la más larga.
Primero nos pulse la luz roja dos veces y luego blanco usando la biblioteca Moodlamp. Esto es para advertir al operador que la exploración del blanco está a punto de ocurrir. Dejando la lámpara blanca (los tres colores en) deja tanta luz interferencia como sea posible para nuestros análisis de línea de base que mantiene igualmente equilibrado.
Qué significa la siguiente sección es luz el rojo, luego verde, luego verde LED teniendo un sensor de lectura en cada paso. Esto nos da algunos datos sobre cuántas de cada color se reflejaban atrás al sensor. Estas lecturas deberán ser alta ya que es blanco, que debería reflejar mucho para cada color.
Si el significado no se deduce, debe colocar una muestra de blanco (un papel o una tarjeta) debajo del sensor mientras que esta exploración lleva a cabo. Todo esto dura unos tres segundos. La exploración del menor que uno.
Cuando haya terminado con el análisis de blanco, escaneará negro. Hay algunos pilotos otra vez, un retraso y luego la exploración. Aquí usted tendrá una muestra de negro o gris debajo de la lámpara. Vamos a hablar un poco más sobre lo que la muestra debe ser más tarde.
Una vez se hayan completado los análisis de equilibrio, la lámpara se apagará y establece el valor booleano para o no se han establecido valores de equilibrio en true.
Una vez establecidos los saldos, nuestro programa comenzará comprobando el color debajo del sensor, lo más probable es que en el mundo físico que todavía no la quitó de su muestra negro, pero no importa que, hablábamos sobre el código.
Si seguiste lo que estaba sucediendo con la exploración del equilibrio, somos más o menos haciendo lo mismo. La gran diferencia es que estamos utilizando algunas matemáticas para equilibrar nuestra lectura ahora. Básicamente nos estamos alterando nuestra lectura basada en las lecturas máximas y mínimas posible, y lo que es un valor podemos utilizar, es decir, entre 0-255(roughly). Que nos da una representación muy justa de color.
Después de eso, simplemente establecemos el color. Necesitamos solo modificas los números un poco, porque a menudo las matemáticas arriba pone mayor o menor de los valores aceptables. A continuación, establezca las variables rojo verdes y azules y utiliza la biblioteca Moodlamp para facilitar la visualización del color.
Casi me olvidé de mencionar la función getReading, que sólo obtiene un promedio de lectura por número de veces de lecturas. Strickly no necesarios, como una lectura parece suficiente, pero no sabía en el momento.
Las dos funciones de impresión son para propósitos de depuración y simplemente impresión nuestras lecturas al puerto serie. Sí sé llame a uno en el circuito, pero no tienes que. Sólo me gusta desplazarse a veces números. Además estaba salida para procesar durante la prueba, para ver exactamente qué color el sensor está viendo. Voy a intentar encontrar el tiempo para documentar y subir ese sketch en un futuro cercano, pero por ahora estás por tu cuenta. (No es difícil si usted está familiarizado con el proceso y comunicación serial)
Una vez que haya terminado de escribir el código, subir a la lámpara y empieza a jugar. Con jugar me refiero a pruebas... pero de una manera divertida manera.