Physical Etoys y Arduino

Physical Etoys es un desarrollo del Grupo de Investigación en Robótica Autónoma del CAETI (GIRA).
En su página nos anuncian:

Estamos muy pero muy contentos de anunciarles que Physical Etoys llegó a su versión 2.0 y vendrá en TODAS las computadoras de Argentina asociadas al plan Conectar Igualdad! Se siente muy bien saber que desde acá podemos aportar nuestro granito de arena en pos de la educación del país. Ya está disponible para bajar de la página de Physical Etoys.

¿En qué consiste?

Physical Etoys es una ‘extensión’ de Etoys; una adaptación del lenguaje de programación para programar fácilmente objetos físicos como robots.

¿Cómo se usa?

Ejecutar el programa Physical Etoys

Y aquí vemos la primera pantalla:

Physical Etoys

  • Al hacer clic podemos crear un nuevo proyecto. Quienes hayan utilizado Etoys verán una pantalla prácticamente igual a la de ese programa.

Nuevo proyecto

  • Una vez creado el proyecto, al mover el mouse a la parte inferior de la pantalla, veremos aparecer un conjunto de provisiones específicas de Physical Etoys. Para empezar, debemos arrastrar al mundo la plaqueta de Arduino.

Arrastrar Arduino al mundo

  • Hacer clic con el botón derecho sobre la placa Arduino para visualizar los halos. Elegir el ojo para abrir un visor.

Abrir un visor

  • Una vez abierto el visor, buscamos el comando Placa arduino / Conectar hacemos clic en Ejecutar este comando una vez. Si todo sale bien, a partir de ahora vemos Verdadero en Placa Arduino’s está conectado. Si esto no ocurre, habrá que comprobar un poco más abajo el modelo de arduino (tipo de placa) y el puerto de conexión (nombre del puerto).
Conectar placa
  • Para hacer nuestro primer guión conectamos (en el arduino físico) un led al puerto 12 y realizamos la misma acción en el arduino virtual, haciendo clic en el número 12 y eligiendo Led.

Conectar un led

  • Abrimos un visor para el led, y ya podemos empezar a trabajar con sus propiedades:

Encender el led

Led encendido

 

Más sobre Arduino: lectura digital y analógica

Antes de continuar, recomiendo ver este video en que se muestran algunas nociones mínimas sobre Arduino, sus modelos, sus elementos, etc.

Hoy conecté un botón para utilizar un ejemplo del sitio de Arduino en el que muestran cómo leer el valor del botón (es decir, cómo enterarme mediante código si el botón está presionado o no).

Tengo el botón conectado en mi conector 12, es decir que voy a usar digitalRead(12) para saber cuál es su valor, asignándolo a la variable sensorValue. Después, le indico que el sensorValue lo muestre en la ventana Serial monitor, que debo abrir usando el menú Tools. Una vez compilado el código (botón “verify”, el primero) y subido a la placa (botón “upload”. el que tiene una flecha hacia la derecha), pulso el botón y veo en el Serial monitor una secuencia de ceros, que cuando pulso el botón se transforman en unos.

Lectura digital de un botón

El siguiente código de ejemplo de la misma página es de lectura analógica. Esto implica que se leerá un valor que tendrá un rango. En el caso de un botón, no tiene demasiado sentido, ya que el valor que devuelve es fijo: 1023 cuando está presionado, y 0 cuando no lo está:

Lectura analógica de un botón

Si conectamos un potenciómetro estos valores se incrementan o decrementan de acuerdo a lo que hagamos con él.

Potenciómetro y sus valores

Combinando todo lo aprendido ayer más lo aprendido hoy, podemos conectar un led y crear un nuevo código donde indiquemos que el led se encienda cuando el botón se presiona:

/*
Aqui usamos el boton para encender el LED.
*/

void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
}

void loop() {
int sensorValue = digitalRead(A2);
Serial.println(sensorValue);
if (sensorValue == 1) {
digitalWrite(12, HIGH); // si el valor del sensor es 1, enciende el LED
delay(100);                      // espera un ratito
digitalWrite(12, LOW); // apaga el LED
}

}

Este otro código enciende el led de acuerdo al valor del potenciómetro:

/*
Aqui usamos el potenciometro para encender el LED.
*/
void setup() {
Serial.begin(9600);
pinMode(A3, OUTPUT);
}
void loop() {
int sensorValue = analogRead(A2);
analogWrite(A3, sensorValue/4);   // escribimos en el conector A3 el valor del sensor (del potenciómetro) dividido cuatro.
Serial.println(sensorValue);
}

Led encendido con el botónLed apagado al soltar el botónLed apagado utilizando un potenciómetroLed encendido utilizando un potenciómetro

 

 

 

 

 

 

 

Mis primeros pasos con Arduino

Me prestaron muy amablemente un Starter kit de Arduino. Como de costumbre, mi intención era hacerlo funcionar en Ubuntu.

Lo primero que hice fue instalar el software, desde este sitio: Arduino Software

Después estuve buscando tutoriales y encontré algunos que seguramente son muy útiles pero que no usan el modelo de Arduino que yo tengo (por ejemplo, este video: Primeros pasos con Arduino)

Mi objetivo es usar Arduino con Physical Etoys, un desarrollo de Gonzalo Zabala y su equipo sobre Etoys. No logré hacerlo andar y entonces me di cuenta de que me faltaba conocer el modelo de Arduino y también el nombre de mi conexión…!

Así que retrocedí un paso, abrí el software que instalé y de la misma página de Arduino tomé el primer código de la sección Learning, que es para hacer parpadear un led conectado en D13.

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.This example code is in the public domain.
*/void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}void loop() {
digitalWrite(13, HIGH);   // set the LED on
delay(1000);              // wait for a second
digitalWrite(13, LOW);    // set the LED off
delay(1000);              // wait for a second
}

No funcionaba, así que busqué en Google el mensaje de error hasta que encontré esto: Installing Arduino 0023 on Ubuntu 11.10 (Oneiric Ocelot)

Este era el error que me daba:

In file included from /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:44:0,
                 from /usr/lib/gcc/avr/4.5.3/../../../avr/include/avr/delay.h:37,
                 from /home/matt/arduino-0023/hardware/arduino/cores/arduino/wiring_private.h:30,
                 from /home/matt/arduino-0023/hardware/arduino/cores/arduino/WInterrupts.c:34:
/usr/lib/gcc/avr/4.5.3/../../../avr/include/math.h:426:15: error: expected identifier or ‘(’ before ‘double’
/usr/lib/gcc/avr/4.5.3/../../../avr/include/math.h:426:15: error: expected ‘)’ before ‘>=’ token

En el post encontrado se muestra la solución: comentar una línea del código del software de Arduino. Mi archivo no estaba en la misma carpeta del ejemplo así que tuve que buscar la carpeta Arduino por todos lados. Al encontrar el archivo, para editarlo tuve que usar sudo gedit ‘…’ porque si lo editaba directamente no tenía los permisos suficientes para guardar.

Editar archivo de configuración

Una vez que logré comentar esa línea de código, volví a mi programa que ya había adaptado para encender el led conectado en el conector D12 (mi placa no tiene D13 o no lo encuentro), ¡y funcionó! Me puse tan contenta que les armé un gif animado 😉

Parpadeando

 

 

Cómo invertir los colores de una imagen en Gimp

Este post es muy pero muy básico, dedicado a mi papá que me dijo que tiene cientos de imágenes escaneadas que tienen letras negras sobre fondo blanco, y necesita invertirlas para que se lea mejor.

Para cualquier persona que tenga instalado el Gimp (acá está el link para descargar el programa e instalarlo), es muy simple aplicar algunos efectos sobre una imagen completa.
Si tenemos una imagen en blanco y negro y queremos invertir los colores (que lo que es negro quede blanco y lo que es blanco quede negro… y no me pregunten qué pasa con lo que es gris…), tenemos que seguir estos pasos:
1) Abrir la imagen (si está en la web, hacer clic con el botón derecho, guardar imagen, observar en qué carpeta se guarda y después abrirla). Para eso se puede usar el menú Archivo / Abrir o también se puede abrir el Gimp y “pegar” (con CTRL+V, por ejemplo) la imagen que uno copió previamente. O tomar el archivo y arrastrarlo a la ventana de Gimp.
2) Hacer clic en el menú Colores / Invertir
Colores - Invertir
Este es el resultado:
Cartel invertido
3) Guardar el archivo (con Archivo / Guardar, o con CTRL+S)

Otras cosas que pueden aplicarse a la imagen completa son:
Agregar sombra – Menú Filtros / Luces y sombras / Sombra arrojada
imagen con sombra
Agregar borde – Menú Filtros / Decorativos / Añadir borde
Foto con borde
Efecto foto antigua – Menú Filtros / Decorativo / Foto antigua
Foto antigua

En el menú Filtros hay muchos más efectos que pueden aplicarse, y usar la opción Deshacer si el resultado no es como uno lo esperaba.

Cómo corregir los ojos rojos en una foto usando Gimp

Vamos a modificar los ojos rojos de esta foto:

Foto con ojos rojos

Lo primero que tenemos que hacer es delimitar los ojos, usando la Herramienta de selección elíptica:

Seleccionar los ojos

Para seleccionar ambos ojos pulsamos la tecla de mayúscula mientras delimitamos el segundo ojo (agregamos a la selección anterior en lugar de crear una selección nueva).

Una vez que los ojos están seleccionados, usamos Filtros / Realzar / Quitar ojos rojos.

Vamos a tener que elegir el umbral de tolerancia, es decir, si la zona afectada es más grande o más chica.

Modificar el umbral de tolerancia

Pulsamos aceptar, y ¡listo!

Ojos rojos corregidos

Lo que hace este filtro es quitar la tonalidad roja del sector seleccionado, con lo cual si elegimos algo que no sea un ojo (los aros, por ejemplo, o una zona de los ojos que incluya todo alrededor), obtendremos zonas grisadas.

Agregar un sello, recuadro o cintillo a una foto usando Gimp

Este es un post muy básico, para alguien que recién empieza a utilizar Gimp. Otros post de nivel básico de Gimp: Dibujando figuras en Gimp, Gimp para docentes, Cómo armar un collage con fotos en Gimp, Cómo scannear usando Gimp.

Muchas veces necesitamos pegar una imagen sobre otra, algo así como un sello, cintillo o marco:

Perro con cinta argentina Perro con marco de cuadro

Vamos a pegar esta cinta argentina (autor: Lobo argentino) sobre una foto.
El primer paso será abrir el archivo de la foto en Gimp (Archivo / Abrir).
Después, copiar la imagen que vamos a superponer (usando el botón derecho del mouse, opción copiar):

Copiar una imagen
Esto pondrá la imagen en el portapapeles. Ahora vamos a pegar la cinta sobre el perrito, pero como una nueva capa (Editar / Pegar como / Capa nueva)

Pegar como capa nueva
Seguramente la cinta es de un tamaño diferente al que necesitamos, en mi caso es muy grande y por eso se ve sólo una parte (podría ser que no se viera nada, pero inmediatamente lo vamos a resolver).

Cinta ya pegada, sin modificar el tamaño

Para cambiar únicamente el tamaño de la cinta vamos a usar el menú Capa, opción Escalar Capa.

Escalar la capa

Modificamos uno de los dos números (Anchura o Altura), y el otro se va a modificar automáticamente para mantener la proporción (si no mantenemos la proporción, la imagen se deforma, quedando más ancha o más alta que la original). Hacemos clic en el botón Escala.
Por último, acomodamos la cinta en la posición en que queremos que esté, usando la herramienta Mover. No olvidemos que existe la opción Deshacer (CTRL-Z) por si nos equivocamos y movemos otra capa.

Mover una capa

Sólo nos falta guardar el archivo, preferentemente con un nombre diferente (Archivo / Guardar como). En Gimp tenemos que escribir el nombre y la extensión del nuevo archivo, así que escribimos por ejemplo: perro argentino.jpg

Ahora vamos a hacer algo un poquito más complicado, que es añadir el marco de este cuadro a la foto del perrito. Los primeros pasos son los mismos:

  • Copiar el marco
  • Pegarlo como capa nueva
  • Redimensionarlo

En el caso del marco del cuadro necesitamos hacer un paso más: agrandar el “lienzo”, usando Imagen / tamaño del lienzo. Esto nos va a servir si queremos que el marco quede por fuera de la imagen y no superpuesta tapando los bordes. Podemos agrandar mucho el lienzo sin importar que queden franjas vacías, porque el último paso será recortar lo que sobre.

También puede ser que necesitemos rotar el marco (ponerlo en sentido horizontal). Para ello utilizamos Capa / Transformar / Rotar 90° en sentido horario (o antihorario).

A continuación debemos seleccionar la parte de la pintura (con la herramienta de recorte rectangular) y eliminarla (pulsando la tecla suprimir):

Seleccionar recuadro

Utilizando la herramienta  Mover, reacomodamos la capa de abajo:

 

Mover la capa del perrito

Podemos volver a redimensionar la capa del recuadro hasta encontrar el tamaño justo.

Finalmente, con la herramienta de selección rectangular, seleccionamos el marco completo y elegimos Imagen / Recortar a la selección, para eliminar las partes que sobran de la imagen.

 

 

 

Eliminar un objeto en Gimp

Muchas veces tenemos una foto buenísima pero tiene una persona que ya no queremos ver o un objeto que no queremos mostrar… ¿cómo hacemos para eliminar esa persona u objeto intentando que se note lo menos posible? (el padre de un amigo mío, sabiamente, decía en las fotos familiares “las novias en las puntas así después podemos recortar la foto”)
Una posibilidad es usar la herramienta de clonación.
Supongamos que por algún motivo incomprensible queremos borrar el mate de esta foto:
Mi foto con mate

El primer paso será hacer zoom (pulsando la tecla + es para mí la manera más cómoda), y elegir la herramienta de clonación. Observar bien los alrededores de lo que queremos eliminar y elegir una parte del mismo fondo (remera, árbol o pasto en este caso) que reciba la misma cantidad de luz.
Presionar la tecla CTRL y hacer clic en esa región (“tomar el patrón”), y después arrastrar (sin CTRL) sobre el lugar donde queremos clonar esa textura, cuidando la dirección y la longitud de nuestros movimientos.
En este ejemplo, para la remera utilicé movimientos en diagonal y horizontal, y para el árbol movimientos verticales. El brazo tuve que clonarlo utilizando un patrón del cuello:
Clonado de remera y árbol

Es importante observar que al clonar se mueven dos círculos: el que toma el patrón y el que nosotros movemos con el mouse. Por esto, para algunas texturas va a convenir hacer movimientos verticales, para otras horizontales, para algunas convienen los bordes difusos y para otras no, y para algunas convienen los pequeños recorridos y en otras conviene más hacer “golpeteos”.

Aquí está lo que yo logré, seguramente con tiempo y paciencia se puede hacer algo mejor:

La imagen sin el mate

En este otro ensayo copié el pasto en una nueva capa para trabajar tranquila, y lo cloné con franjas horizontales, creo que quedó más natural:

La imagen sin el mate pero el césped con otra iluminación

Otro tutorial y de paso un sitio interesantísimo: Foto Libre

Crear una macro en Gimp

Un amigo me hirió el orgullo diciéndome que en Photoshop podía redimensionar y recortar en un solo paso, y como no logré encontrar una manera de hacerlo en Gimp decidí intentar programar una macro.
Busqué macros ya resueltas y encontré esta explicación sobre cómo crear macros simples: Iniciación a la creación de script-fu o macros en Gimp

Y esta otra macro que redimensiona y pone un marco negro: Foro Buceo – Macro para redimensionar y añadir marco

¡Qué bueno que haya gente que comparte de esta manera sus conocimientos! ¡Gracias!
Intenté modificar esas macros y no pude hacer demasiado ¡¡No es nada simple!!

Así que tuve que hacer lo que no quería hacer en un principio, que es empezar de cero a conocer el lenguaje de Script-fu:
Tutorial de Script-Fu

En un próximo post voy a contar qué aprendí a hacer, y si logro mi objetivo de crear una macro que redimensione y recorte, voy a compartir el código en este blog.

Actualización posterior: Por ahora logré hacer este menú que contiene cuatro opciones para redimensionar una imagen a un alto o un ancho determinados. Para cumplir mi objetivo me falta solamente que al terminar me aparezca la herramienta de recorte 🙂 Para hacerlo, me basé en el script de Foro Buceo y modifiqué los parámetros y opciones, hasta lograr mi objetivo, pero sin comprender todo el código (por eso no comparto el código de lo que logré: tiene muchas cosas que no entiendo y seguramente sobran).

Menú para redimensionar imágenes

Cómo armar un collage con fotos en Gimp

Este es un post muy básico, para alguien que me hizo esta pregunta y no maneja nada de Gimp. Así que ahí van, una serie de pasos explicados desde cero, con lujo de detalles 🙂

El primer paso, por supuesto, será tener las imágenes. Si hay que buscar, hay imágenes libres en Wikimedia Commons, en Open Clipart, y algunas con derechos menos restringidos en Flickr o en Google imágenes, usando opciones avanzadas (“Sólo imágenes que se puedan volver a utilizar.”) Atención: las imágenes con licencia Creative Commons requieren mencionar al autor (“Atribución”). Para no tener que agregar ninguna leyenda sobre las fotos, deben ser Public Domain. Se puede descargar la imagen, o copiarla en el portapapeles y pegarlas en Gimp (lo voy a explicar de esta segunda forma).

El segundo paso es pegar la primera foto en Gimp:

  • Abrir Gimp. La primera impresión suele ser rara porque tiene varias ventanas. Las únicas que importan son la de las herramientas, y la ventana de la imagen. La ventanita de las herramientas se puede mover a cualquier lugar de la pantalla, yo suelo ponerla a la izquierda de la imagen.

Primera vista de Gimp

 

  • Ir a la página donde está la foto, hacer clic con el botón derecho y elegir “Copiar”

Copiar una foto usando el menú contextual

  • Volver a Gimp, a la ventana más grande donde va a estar la imagen, y elegir Pegar (CTRL+V).
  • Trabajar esa imagen: Por ejemplo para recortarla, usar la herramienta de selección y después elegir Imagen / Recortar a la selección.

 

Recortar una imagen al tamaño de una selección

Ahora tenemos lista una imagen, vamos a buscar la segunda foto del “collage”.

  • Vamos a la ventana donde está la imagen, la copiamos, y esta vez la pegamos como nueva capa (menú Editar/Pegar como/capa nueva). ¿Esto qué significa? Supongamos que estamos haciendo un dibujo en un papel. Si le pegamos con pegamento otra imagen, es imposible despegar eso nuevo que pusimos y ver otra vez la imagen original. Cuando ponemos esta imagen en una capa nueva, estamos superponiendo la imagen sin pegarla, como si estuviera simplemente apoyada. Esto nos permite trabajar sobre ella como una imagen separada, acomodarla en distintos lugares, recortarla, etc. sin modificar la imagen de base.

Aclaración [agregado posteriormente a la publicación del post]: la capa nueva va a tapar completamente a la anterior, pero en los siguientes pasos lo solucionamos.

Pegar como imagen nueva

 

  •  Ahora el problema es el tamaño del lienzo, es decir, la tela en que estamos trabajando nuestra obra de arte. Si queremos que nuestra imagen final tenga el doble de tamaño que la primera imagen, vamos a duplicar el tamaño del lienzo. El contenido de las capas no se va a ver afectado.

Redimensionar lienzo

Para modificar la anchura y la altura proporcionalmente, hay que dejar los eslabones de la cadena unidos. Para modificar sólo la anchura o sólo la altura, hacemos clic en la cadena separando los eslabones. Si queremos evitar hacer cuentas, podemos elegir Porcentaje (en lugar de pixeles) y para duplicar poner 200.

Ahora tenemos un lienzo más grande, falta mover cada capa a su lugar. Para mover una capa, usamos la herramienta Mover:

Mover capa

Si queremos recortar la capa nueva, la última que pegamos, simplemente seleccionamos una parte pero esta vez no usamos la opción que utilizamos anteriormente, sino que vamos al menú Capa y elegimos Recortar a la selección.

Recortar capa

Ahora es sólo cuestión de acomodar cada nuevo dibujo de esta manera, pegándolo como capa nueva, recortando la capa, moviendo la capa. Al final, puede ser que necesitemos recortar la imagen completa; para ello seleccionar todo el trabajo (menos las partes que no queremos que queden) y elegir Imagen / Recortar a la selección.

Una vez que todas las fotos están donde queremos que estén, guardamos el archivo (menú archivo, opción guardar). En Gimp la extensión nativa es .xcf, así que en lugar de escribir sólo el nombre de archivo, escribimos nombre y extensión (por ejemplo: computadoras.jpg). De todas formas, conviene guardar también una vez en formato .xcf, para conservar las capas, ya que ni jpg ni png guardan toda la información del archivo.

Otras cosas interesantes

  • Para modificar el tamaño de una capa, sin recortarla, se usa Escalar capa en el menú Capa.
  • Para modificar cualquier cosa de una capa que no sea la última que se agregó, pulsamos CTRL+L para ver el menú de capas. Haciendo clic en una de ellas pasa a ser la capa actual, y entonces las acciones del menú capa se aplican a ella.
  • Si queremos agregar sombra o borde, usamos el menú filtros.

 trabajo terminado

Gimp es software libre, un excelente reemplazo para quienes quieren usar Photoshop pero no pueden pagarlo, y un excelente software de edición de imágenes para todos, aunque pudiesen pagar Photoshop.

Recortando una figura con forma de otra en Gimp

Muchas veces vemos imágenes de dudoso gusto en las que la foto de una persona se ve recortada con forma de estrella o flor, o tal vez una serie de paisajes recortados sobre un mapa de la Argentina…
¿Cómo lograr ese efecto usando Gimp?
Se puede lograr de varias maneras. Supongamos que queremos recortar este césped con la forma de esta bicicleta, o lo que es lo mismo, hacer una bicicleta de pasto.

Bicicleta de pasto

Como primer paso, abrimos los dos archivos. Para trabajar vamos a necesitar el panel Capas, que se muestra y oculta con CTRL+L.
Después, copiamos una de las dos imágenes en el mismo archivo en que está la otra, poniéndolo en una capa nueva, con los siguientes pasos:

  • Copiar la imagen del pasto
  • Ir al archivo de la bicicleta
  • Pegar la imagen del pasto (CTRL-V). Al pegar, la selección queda flotante (se ve en el panel Capas).

Imágenes superpuestas del césped (en capa flotante) y la bicicleta.

  • Elegir en el menú Capa / Nueva, para que la selección flotante se convierta en una nueva capa.

Ahora necesitamos que el césped ocupe toda la bicicleta o al revés. Nos conviene elegir la capa más grande (en mi ejemplo la de la bicicleta) y achicarla. Para eso:

  • Hacer clic en la capa que contiene la bicicleta, en el panel Capas.
  • Elegir Capa / Escalar capa

Cambiar el tamaño de una de las capas

  • Escribir el ancho o el alto de la capa y hacer clic en Escala.

Determinar el tamaño de la capa

Ahora el pasto cubre completamente a la bicicleta, y nosotros lo necesitamos al revés. Si las capas quedaron invertidas, basta con arrastrar una sobre la otra en el panel Capas:

Poner una capa sobre otra

Ahora simplemente nos falta borrar de la capa superior todo lo que queremos que se vea transparente, para dejar ver el fondo. Pero acá lo importante va a ser que no tengamos que borrar con una goma, a mano alzada, sino que podamos seleccionar exactamente el objeto y eliminarlo.

  • Elegimos la herramienta de selección difusa (la varita mágica)
  • Hacemos clic en una zona de la imagen que queremos borrar
  • Si la selección es correcta, pulsamos Suprimir
  • Si selecciona muy poco, debemos subir el umbral (o si selecciona de más, bajar el umbral), hacer clic afuera de la selección y volver a probar:

Subir el umbral de tolerancia de diferencia de color

A medida que vamos borrando tiene que verse lo que está debajo (el pasto). Si esto no ocurre (es decir, si borra de color blanco) es porque hay que agregar transparencia a la capa (Capa / añadir canal Alfa).
Cuando la bicicleta está lista seguramente sobra algo de pasto en los bordes; simplemente seleccionamos lo que queremos conservar y usamos Recortar a la selección, del menú Imagen.

Recortar a la selección

Gimp es software libre, un excelente reemplazo para quienes quieren usar Photoshop pero no pueden pagarlo, y un excelente software de edición de imágenes para todos, aunque pudiesen pagar Photoshop.