Don Básico Servo ataca de nuevo. Girasol con LDRs.

Hola de nuevo compañeros. Aprovechando lo preparado para el montaje anterior, Don Básico nos quiere enseñar una variación. Esta vez se ha sujetado unas LDRs a las muñecas. Veamos por qué:

ldrEsta es la pinta que tiene una LDR, o resistencia dependiente de la luz. Es un pequeño dispositivo electrónico que tiene la propiedad de ofrecer mucha, muchísima resistencia al paso de la electricidad a su través, pero solo en condiciones de oscuridad. Según aumenta la intensidad de luz ambiental, la resistencia interna de la LDR disminuye, dejando que pase poco a poco la corriente eléctrica. Llega un momento, cuando la luz ambiental es muy intensa, en el que la LDR deja de ofrecer resistencia (o es pequeñísima) y la corriente eléctrica pasa a su través con facilidad. Este efecto es el que perseguimos en este montaje, pero Don Básico utilizará 2 de ellas. ¿Por qué?. Pues por la misma razón que tenemos 2 ojos o 2 oídos. Si nos tapamos un ojo o un oído, no seremos capaz de ver en 3 dimensiones ni de localizar la procedencia de un sonido. Necesitamos 2 receptores para poder apreciar sutiles diferencias entre ellos, consiguiendo por tanto mucha más información. Don Básico es muy espabilado y sabe que las LDR solo medirán la misma intensidad lumínica si están justo en frente de la fuente de luz. Si no es así, la LDR que esté mejor orientada detectará más luz y por tanto, la otra detectará menos. Utilizaremos esta diferencia de luz captada por las LDR para calcular hacia donde debe girarse Don Básico y posicionarse siempre frente a la fuente de luz. Ingenioso este Don Básico, ¿eh?.

modulo_octopus_ldrYa sabéis que en nuestros montajes intentamos simplificar al máximo las conexiones eléctricas para centrarnos en la programación. Por eso utilizaremos módulos LDR con pines de conexión extra como éste de la linea Octopus de ElecFreaks. El código de colores utilizado (negro para la masa-tierra, rojo para el voltaje y amarillo para señal que procesará Arduino) es muy práctico ya que en el peor de los casos, intercambiar amarillo y negro tan solo producirá errores de medición, pero nos aseguramos de que el cable rojo, el crítico que puede cortocircuitar la placa esté siempre bien conectado.

En primer lugar damos paso al vídeo para que veáis el comportamiento de Don Básico y después destripamos el programa para explicarlo módulo a módulo:

Como véis, hemos hecho 2 experimentos. En el primero utilizamos una linterna para dirigir la luz en la dirección que queramos, comprobando en seguida que Don Básico se orienta siguiéndola. Mientras, su réplica virtual en Scratch muestra, en lugar de brazos, 2 estrellas cuyo tamaño depende de la intensidad de la luz detectada por las LDR. Así mismo, unas flechas aparecerán para indicar el sentido de giro en el que de Don Básico tenga que orientarse. En el segundo experimento engañaremos a Don Básico tapando uno de los sensores de luz. De este modo, nuestro profesor se cree que la luz es más intensa del otro lado y se gira persiguiéndola.

Ahora que entendemos el comportamiento, nos meteremos con la programación:
Como es habitual, utilizamos s2aio como puente de comunicación entre Arduino y Scratch 2.0. s2aio es obra del gran Alan Yorinks y podéis encontrar más info y una guía de instalación en esta entrada. En el primer módulo definimos y activamos los pines de Arduino a los que hemos conectado tanto los servos como las LDRs. Observad que los servos se definen en los pines digitales mientras que las LDRs (como suele pasar con los sensores) se conectan a pines analógicos. Hechas las presentaciones, enviamos el mensaje ServosAO que explicaremos a continuación. Termina el módulo con un bucle Por Siempre que leerá los valores registrados por las LDRs y los grabará en las variables creadas a tal efecto. Así mismo, calculará la diferencia de valores detectada por ambos sensores. El bucle se cierra con una pequeña espera de 2 décimas de segundo que sirve para no sobrecargar la comunicaciones con la placa Arduino.01-modulo

02-moduloPasamos al módulo ServosAO. Es una simple puesta a punto de las posiciones iniciales de los servos para asegurarnos de que los brazos están perfectamente estirados y Don Básico mira hacia el frente, centrado. Termina el módulo fijando también el valor de la variable Grados a 90. Como ya sabéis, un servo puede moverse entre los 0 y los 180 grados, así que 90 corresponderá con la mitad del rango. En seguida comprobaréis la importancia de utilizar una variable para almacenar los grados de posición del servo.

 A continuación, el módulo en el que recae la acción:

03-modulo

Comienza esperando 1 segundo para dar tiempo a que los servos alcancen las posiciones iniciales y esté todo listo. Consta de un gran bucle Por Siempre que contiene dos condicionales. Ambos comprueban si la diferencia entre los valores de luz registrados por las LDR son mayores de 20 (para menores de 20 se considera que Don Básico está bien orientado hacia la luz. Debemos tener en cuenta que ese valor de 20 puede ser positivo o negativo dependiendo de qué LDR sea la que registre mayor intensidad. Así pues, si la diferencia es mayor de -20 y si además Don Básico no está girado más allá de los 177 grados (acordáos del límite de 180), le pide al servo que gire 3 graditos hacia la derecha. Además incluye un mensaje, Giro_derecha que hará aparecer la flecha correspondiente, así como un bloque Esperar preventivo, por si el invento requería un pequeño retardo par evitar sobrecargas de proceso. El segundo condicional no requiere mayor explicación ya que recrea la misma situación pero en el sentido contrario.

Para terminar, os pego una imágen virtual de Don Básico en plena acción.

entrada

Como los programas creados con la extensión s2aio no son compatibles con la web oficial de Scratch, os dejamos el programa compartido en el siguiente enlace. Sentíos libres de modificarlo, juguetear y experimentar con él. Al final, ¿no se trata de eso?. Esperamos que os haya gustado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *