Demo caja administradora de galletas

¡Buenos días!

Hace unos cuantos días hice una caja administradora de galletas (de dulces en general, realmente), y la he subido a Instructables y al concurso de Arduino que tienen allá. Para los que sepan inglés y quieran ir viéndolo, aquí les dejo el link al instructable. Para los que no sepan inglés y quieran verla, no se preocupen que pronto estaré subiendo el mismo contenido en español acá. De momento les dejo unas imágenes y el vidéo de demostración.

DSC07239 DSC07240 pantalla

Y el video lo pueden encontrar aquí.

Saludos.

5 mitos comunes de Arduino (que no son verdad) [Traducción]

Hola de nuevo!

Hace un par de días, a través de la página de Arduino en Facebook, llegué a este artículo de James Lewis acerca de 5 mitos comunes de Arduino, y me pareció buena idea traducirlo al español. Al final de la entrada dejaré mis comentarios acerca de cada mito. Que lo disfruten 😉

“5 Mitos comunes acerca de Arduino (Que no son verdad)

Habiendo ocupado estos últimos 6 años escribiendo código para Arduino, he notado una serie de mitos provenientes tanto de los recién llegádos como de los expertos. Aquí está el Top 5 de los mitos que más he visto en los foros, clases e IRCs.

1. Arduino usa su propio lenguaje

Este mito no es ayudado por la página principal de arduino.cc, que dice: “El microcontrolador en la placa es programado usando el lenguaje de programación Arduino“. Aún cuando la estructura de los programas de Arduino parece única, es realmente solo C++ con un poquito de preprocesamiento [Nota del traductor: No estoy seguro si el término preprocessing tenga algún uso distinto. De ser así, por favor avísenme]. Los usuarios escribiendo “código Arduino” en realidad estan programando en C++ con, como yo lo llamo, la Librería Arduino. Funciones como digitalWrite() son solo eso, funciones de C++.

Mientras la librería Arduino hace un excelente trabajo haciendo muy simple la programación de microcontroladores, no es un lenguaje por si misma.

2. El pin 13 tiene una resistencia

Incontables tutoriales han atraído a novatos a esta trampa. La primera placa Arduino, de la cual fueron producidas como 200, tenía un LED y una resistencia en serie en el pin 13. Esa fue la única placa que la tenía. Así que nunca nunca nunca conectes un LED al pin 13 sin una resistencia!

3. Los productos comerciales no usan Arduino

Corolario: los ingenieros “reales” no usan Arduino!

De acuerdo, intentaré no entrar mucho en el tema, pero yo soy un “ingeniero real”. Tu ya lo sabes: esta en mi nombre de twiter y en la URL. He aquí cierta información confidencial: yo uso Arduino. Si vas a tu tienda de electrónica preferida, no encontrarás muchos (si hay) productos con una calcomanía que diga “Arduino inside”. Como sea. Arduino es una plataforma de desarrollo. Tú no vaz a enviar una placa UNO con cada producto. En cualquier caso, tu deberías desarrollar un producto con Arduino y usar un Atmega328 en el producto final. O, más probablemente, prototipar la idea, proponerla para financiarla en sitios de crowd funding y entonces rediseñarla.

Tienes que definir que signifíca “comercial”, pero hay varios ejemplos de productos que iniciaron usando Arduino. Haz oído hablar de las impresoras 3D?

4. La función analogWrite() es analógica

Esta abarca a todos los que no entienden realmente el Pulse-Width Modulation [o PWM, en español “Modlación del largo del pulso”]. Con la excepción de la placa “Due”, las placas Arduino no tienen señales de salida “analógicas”. (Nota. Tal vez quieras ver este video acerca de la diferencia entre señales analógicas y digitales [En inglés, la nota hace parte del artículo original]) Las señales PWM son realmente señales digitales, en las que cambias el largo de los estados “encendido”[on] y “apagado”[off].

5. Los espacios entre los Headers fue un error (o no lo fue)

Si tu sabes algo acerca del orden de los pines de Arduino, debes saber que el espacio entre los pines 7 y 8 no es 0.1″. En una parte del FAQ de la página de Arduino dice que fue un “error de  última hora”. Aunque también dice que es para evitar que los escudos se conecten al revés. Ahora, no estoy seguro si el espacio entre los headers fue intencional, pero un beneficio de eso es que se evita que los escudos se pongan al revés.

Una desventaja clara de esto es que hace difícil conectar la placa al protoboard, o conectar un escudo al protoboard.Como sea, los cables jumpers mágicos existen, lo cual resuelve el “problema”.

Bien, esos fueron los 5 mitos que encuentro más comunes. Que otros mitos haz oído o haz intentado desmentir? Déjalos abajo.”

Fuente

Personalmente encuentro el artículo muy interesante. Hay un par de mitos que yo creía. Ahora, mi opinión sobre cada mito:

  1. Si había oído hablar de que se usaba C++, pero yo siempre me sentí más usando Processing.
  2. Esa si me tomó por sorpresa. Me he puesto a mirar los archivos de la UNO y la MEGA 2560 (Que son las que tengo), y, efectivamente, en ninguna hay una resistencia. Lo que sí tienen ambas es un led (con su respectiva resistencia) en paralelo con el pin en el que nosotros conectamos el cable, pero va directo a tierra, por lo cual, el pin en sí, no tiene resistencia.
  3. Esta me la sospechaba. Como menciona James, Arduino es una plataforma de prototipado, aunque sirve para el producto final.
  4. Esa sí me la sabía 🙂 . En el curso que seguí para iniciarme en Arduino, si mencionan la diferéncia. El video aquí.
  5. De este había visto en un video que estaban separados tal y como están clasificados los pines en el Atmega328 (PORTB, PORTC y PORTD).

Bien, espero les halla parecido interesante el artículo.

Saludos.

Dado electrónico con Arduino y un Attiny45

Hola a todos. Aprovechando que empezó el año, voy a poner a mover el blog un poco.

Hace un tiempo me encontré en Maker Shed un dado electrónico. Al ver que usa un microcontrolador Pic, me pareció simpático hacerle un “hermano” en Arduino usando uno de mis queridos Attiny45.

Ya que nunca había utilizado antes la funcion random() de Arduino, me puse a investigar al respecto. Yo sabía de antemano que los números aleatorios generados por máquinas no son del todo aleatorios, pero no me esperaba encontrarme siempre con el mismo inicio (2, 2, 6, 3, etc…). Al ver un poco más al respecto, encontré un truco usando randomSeed() y los pines analógicos, pero, por algún motivo, no funcionó. Después de leer un par de tutoriales en los que hablaban de usar el ruido atmosférico o la decadencia radioactiva (cosa que, por supuesto no pienso usar, ya que es algo caro y aparatoso), me puse a pensar en una solución sencilla del problema. Después de pensar un poco, me acordé de los Mips, los millones de instrucciones por segundo que puede ejecutar un microcontrolador (Tanto el Atmega328P-PU que usa el Arduino UNO como el Attiny45 tienen 20 Mips con un cristal de 20 Mhz, así que supuse que con el cristal interno del Attiny de 1 Mhz tenemos 1 Mips 😉 ).

Cambiando el numero un millón de veces por segundo, el “numero elegido” depende de el microsegundo (0.000001 segundos, o una millonésima de segundo) exacto en el que se presione el botón, cosa que, en teoría, debería hacerlo aleatorio.

Aquí el dibujo de Fritzing:

Y el esquema:

El código, las imágenes y el archivo del esquema los pueden encontrar en el repositorio de Github.

Espero les sea útil. Saludos.