Paso 2: Diseño y pruebas
Comencé a diseñar mi build determinando el número de píxeles que quería y cómo quería que se vea. Tuve cierto estándar LED RGB tiras poner alrededor así que experimentó con los y determinó que quería 35 píxeles en cada paso. La prueba me demostró la cantidad de dispersión de luz que me ha gustado mucho. El número de píxeles será diferente para cada instalación. La anchura de mi escalera es un poco tímida de la norma 3'.
Una vez que determine el número de píxeles, ordené las tiras de la luz. Esto fue por mucho la parte más costosa de la estructura entera. WS2812B es una tecnología bastante nueva; Si lo desea, puede ir con la alternativa más barata de tira de LED de un color o una tira RGB. Sin embargo, con una simple tira RGB, la tira será del mismo color. También, si utiliza una tira diferente, el código tendrá que ser modificado y no funciona con mi código. Además de las opciones de color, utilizando una tira de LED de WS2812B tenía la ventaja de tener sólo 1 salida en el arduino.
Originalmente, yo planeaba usar las tiras regulares, que habría requerido que utilice 16 salidas de arduino (1 para cada paso) ya que quería hasta las luces a la luz gradualmente hasta o hacia abajo dependiendo de qué movimiento sensor fue activado. Sin embargo, en el arduino UNO, sólo hay 6 salidas PWM y arduino MEGA cuenta con 14 salidas PWM. Así que este fue uno de los principales factores limitantes de por qué elegí que el WS2812B LED tiras en vez de la tradicional tira de luz RGB. El otro factor limitante fue si quería utilizar los 3 colores en cada una de las tiras de 16, que significaría 16 * 3 = 48 canales y salidas serían necesarios. Téngalo en cuenta al diseñar su estructura. Existen otros controladores disponibles que tantos canales, pero al final, costaría más que va con la tira de LED de WS2812B.
Aprendizaje NeoPixel
Usted debe han hecho toda la investigación sobre WS2812B LEDs si va a utilizarlos. Pero mientras esperas para que sus piezas a la nave, es una buena idea de retocar el uso de estas tiras de LED. Voy a utilizar NeoPixel indistintamente con WS2812B LEDs ya que son la misma cosa.
Ya que nunca he utilizado LEDs de WS2812B antes, que necesitaba para familiarizarse con la biblioteca de NeoPixel. Usted tendrá que descargar la biblioteca de Adafruit e importarlo en el software de codificación de Arduino. A continuación dos enlaces para que usted consiga comenzó con el uso de NeoPixels. (Voy a suponer que usted está algo familiarizado con Arduino y sabe cómo importar bibliotecas y hacer bocetos. Si no, consulte otros instructables o youtube videos sobre este proceso).
Conocer la biblioteca de NeoPixel
Los enlaces anteriores contienen muy completa descripción de cómo usar, de código y poder NeoPixels. También incluyen una secuencias de prueba, que inicialmente solía probar el filamento de LED para asegurarse de que no queden pixeles malos. Esto es muy recomendable así que usted puede cambiar el producto si hay algunos píxeles mal. O simplemente puede cortar hacia fuera y volver a soldar a la longitud requerida.
También hay numerosos proyectos que han hecho en el pasado con NeoPixels que son interesantes de referencia.
Programa adjunto, denominado "test2", es un programa de prueba que sólo se ejecuta a través de la misma diferentes bucles. La usé para aprender las capacidades diferentes de la tira LED y familiarizarme con algunas de la codificación. Creo que este programa fue descargado desde el sitio web de Adafruit. No tomar crédito por el código.
Una vez familiarizado con cómo funcionaba NeoPixels, encontré un instructivo que era muy agradable y similar a una generación que estaba planeando. Se vincular su instructable porque creo que también es una buena referencia para utilizar mientras planea su construcción. El autor va un poco más a fondo, y me gustaría darle las gracias por tomarse el tiempo para publicarlo. Encontré muy útil y fue capaz de adaptar su código.
Supongo que tienes algún conocimiento de arduinos y cableado para mantener esto corto, me salto algunos de los detalles obvios. También, como mencioné antes, cada construcción es única por lo que no es tan sencillo como simplemente copiar este instructable. También depende de qué tipo de piezas utiliza, así que espero que hacer algunas investigaciones en los componentes que utiliza.
Link instructivo. Su nombre es Simon Jowett.
Pruebas a pequeña escala
Bien, vayamos al Banco de pruebas de pequeña escala. Una vez que las tiras de la luz, los corte en 35 longitudes de pixel. Otro beneficio de tiras de luz LED de WS2812B es que puede ser cortadas cada pixel y la función correctamente en vez de cada 3 LED con las tiras de LED tradicionales. Una de las longitudes de 35 píxeles solía para probar algunos tipos distintos de efectos y reducido todo el diseño a utilizar solamente 35 píxeles. Así que en teoría, tenía 6 escaleras con 5 píxeles en cada paso.
Por eso he querido las tiras individuales de luz en cada paso a la luz para arriba en la lata del orden que él movimiento detector se dispara. Revisar el esquema adjunto en este paso para ver la configuración de la estructura general. Estoy utilizando dos sensores PIR que detectan si la persona está caminando hacia arriba o hacia abajo de las escaleras. Un LDR es una resistencia dependiente de la luz, también conocido como un fotoresistor. Este resistor cambia valores en base a cuánta luz se expone sobre la resistencia. Actualmente, el sensor no está conectado, pero planeo agregar pronto para ahorrar en costos de operación. Actualmente, el programa de instalación está trabajando 24/7. (Nota al margen: he hecho algunos cálculos básicos y mientras trabaja 24/7 cuesta alrededor $11 cada año). Usted puede aprender más acerca de cómo agregar una LDR a la arduino usando otros instructables o sigan este ejemplo. En definitiva, conectas el LDR a un puerto analógico de arduino para poder utilizar "analogRead()" comando en el código para ver el valor de la resistencia.
Voy a explicar brevemente por qué elegí el método back loop al conectar las luces en vez de sólo daisy les cadena. (usted puede comprender mejor cuando ves el código aún más en este informe y también me explayaré en este tema) Margarita cadena los LEDs dará como resultado una matriz de LED de ZIG-ZAG.
Así que si quiero ejecutar un basic para lazo para encender todos los LEDs de principio a fin, el código se verá algo como esto:
para (uint16_t n = 0; n < strip.numPixels(); n ++)
{
strip.setPixelColor (n, tira. Color(255,255,255));
}
Por lo que este código establece básicamente el color de cada LED a LED 0 el color completo brillo blanco (255,255,255) y sigue haciendo esto mientras se incrementa el contador hasta que llegue el último LED (n < strip.numPixels()).
Nota para aplicar este código en la situación de la cadena de Margarita, la tira de LED primero encenderá de derecha a izquierda, luego a luego paso siguiente de izquierda a derecha y así sucesivamente hasta que llegue el último LED. Tan si puede Imagínese esto en su cabeza, no se enciende el LED a partir del mismo lado en cada paso. El LED enciende para arriba en un movimiento de Zig-Zag. Por esta razón le recomiendo usar un poco más para alambre hasta las tiras según mi esquema. Esto simplifica considerablemente la codificación!