jueves, 21 de septiembre de 2017

Resolución de acertijo con Python 3

El otro día, un amigo estaba leyendo el periódico y se topó con un acertijo que consideró interesante. Iba todo bien hasta que han comenzado a suceder cosas raras, vale, vale, es broma... me centro. Me lo enseñó y rápidamente nos pusimos manos a la obra para resolverlo. El acertijo es éste: (Está un poco pintado, pero se puede leer)

Como puedes leer, consiste en hallar una palabra de 5 letras que cumpla las siguientes normas:

  • Solo puede contener las letras que aparecen en el acertijo (ninguna otra).
  • De cada fila, deben aparecer tantas letras como se indica en el primer número de dicha fila.
    Por ejemplo: la palabra solución del acertijo, debe contener dos letras (ni más ni menos) de la segunda fila, donde pone "MORSA", porque así lo indica el primer número de dicha fila en la palabra solución.
    Otro ejemplo: la palabra solución no debe contener letras de la primera fila, porque así lo indica el primer número (que es un 0).
  • De cada fila, deben aparecer tantas letras en el mismo sitio como indica el segundo número de la fila. (Con letras "en el mismo sitio" o "en la misma posición" me refiero a letras en el mismo index, es decir, si la letra es la tercera de la fila, en la palabra solución también debe ser la tercera)
    Por ejemplo: la palabra solución debe contener una letra en el mismo sitio de la tercera fila, porque así lo indica el segundo número de ésta (un 1). O sea, de las letras A R D U O, una de ellas debe estar en el mismo sitio en la palabra solución. Pero ¡OJO! Solo una, más no.
    Otro ejemplo: la palabra solución debe contener una letra en el mismo sitio de la última fila, porque así lo indica el segundo número de ésta (un 1).

Nos pusimos con toda la ilusión del mundo a resolverlo, pero al cabo de un buen rato seguíamos sin conseguirlo (en parte por su dificultad y en parte porque no somos de la NASA). Viendo el panorama, se me ocurrió una idea para resolver el acertijo de una vez por todas: hacer un programa que lo resolviese. El programa está hecho, escribo este post, con el objetivo de mostrároslo y comentároslo.

miércoles, 13 de septiembre de 2017

PROYECTO MONLED: Utilizar una tira led WS2812B controlada por Arduino para iluminar un escritorio

Ya sabrás que me encantan las tiras leds, y más si las puedo controlar, manejar y programar yo mismo. Tanto me gustan, que hace unos meses decidí crear el proyecto que voy a presentar en este post.

Este proyecto, lo he llamado "Monled". Consiste en la utilización de una tira led WS2812B como una lámpara normal, como un flexo de escritorio, con el objetivo de iluminar una mesa. El flexo que tengo (tenía) para iluminar mi escritorio es bastante aparatoso y se le suele fundir la bombilla cada 2 meses, y cansado de esto pensé: ¿Por qué no me hago yo el mío propio? Fue así como comenzó mi maravilloso viaje a través de estos aparatejos que Arduino nos permite controlar.

Para empezar, debes saber qué es una tira led WS2812B y cómo funcionan. No, no hace falta que busques en Google, puedes ver este post de mi blog en el que explico su funcionamiento, el hardware, el software y todo lo que te puedas imaginar. Pero yo las explicaré un poco aquí. Las tiras leds WS2812B están formadas por leds WS2812B (hasta ahí llegamos ¿no?). La principal característica de estos leds es que se comunican entre ellos, es decir, cada uno le transmite información al siguiente, en forma de cadena. Por tanto, solo hace falta que conectemos el Arduino a un extremo de la tira y podremos encender cada uno de los leds de ésta. La verdad es que a mi me han encantado, principalmente porque son facilísimos de usar.

Entonces, si lo que queremos es que nuestra tira led ilumine nuestra mesa, debemos colocarla en un sitio elevado ¿no? Pues sí, yo tengo una ventaja importante y es que justo encima de la mesa de mi escritorio tengo una estantería, por lo que puedo pegar la tira led en la parte de abajo de la estantería apuntado hacia a mesa. Así, cuando la encienda, la luminosidad de todos los leds acabará en mi mesa y alumbrará cada rincón. Si no tienes una estantería encima de tu mesa (que quizás es lo más normal) puede que no puedas usar este proyecto para alumbrar tu mesa, pero sí puedes poner la tira en muchos más sitios. Eso ya te lo dejo a ti.

miércoles, 28 de junio de 2017

Tutorial tira led WS2812B RGB Arduino


Tira led Neopixel de Adafruit
Controlar una tira led es algo que siempre he querido hacer con mi Arduino. Las tiras leds son muy interesantes y fáciles de controlar, al igual que impresionantes y luminosas. En este tutorial voy a explicar el funcionamiento de una tira led y voy a mostrar toda la información que he encontrado por Internet.

Para empezar, necesitamos comprar una tira led RGB WS2812B (WS2812B es el modelo los leds que componen la tira). Las hay de diferentes medidas y de diferentes cantidades de leds por metro. Yo compré 1 metro de una tira led de 60 leds/metro, lo que significa que podré controlar 60 leds. La más barata que encontré es ésta en ebay, y vale 12.6 € el metro. Ésta que compré no venía soldada, por lo que tuve que soldarla yo mismo a cables macho-macho. Así que si no te gusta soldar, mejor compra una de Adafruit aquí, que ya vienen soldadas y listas para usar. Lo malo es que son más caras. Las tiras leds WS2812B de las que estamos hablando, están formadas por leds WS2812B conectados los unos a los otros que se comunican. Cada led, le pasa información al siguiente, de modo que solo tienes que conectar la tira por un extremo y los leds podrán tener diferentes colores simultaneamente.

Tira led de Electro Hobby, ebay
Las tiras leds son RGB (red green blue), así que para poner un color en un led de la tira, habrá que establecer un valor de brillo para para el rojo, uno para el verde, y otro para el azul. Visto de una manera más fácil, cada led de nuestra tira tiene tres leds más pequeños todavía, uno que ilumina rojo, uno que ilumina verde y otro que ilumina azul. Lo que nosotros hacemos para poner un color en un led de la tira, es variar la luminosidad de estos tres componentes de color; es como mezclar colores. Si mezclas el rojo y el azul sale el morado ¿no? pues aquí también; si enciendes el mini-led rojo y el mini-led azul veremos el color morado. También existen tiras led RGBW, que además de los colores rojo, verde y azul, incorporan el color blanco como color principal, pero la que compré no es de ese modelo.