Entries RSS Comments RSS

Archive for the ‘Arduino’ Category

Physical Etoys y Arduino

Martes, mayo 1st, 2012

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

Jueves, abril 5th, 2012

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

Miércoles, abril 4th, 2012

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