Project Bot es un cuaderno de campo sobre robótica. Basando principalmente sus objetivos con tecnología Arduino con el fin, a largo plazo, de diseñar un robot tanto de software como de hardware libre.

sábado, 22 de enero de 2011

Ejemplo básico de Wiring e interfaz del software

Buenas, antes de dar paso a la entrada quería disculparme por no actualizar tan a menudo el blog como se espera, pero como pone en la cabecera: es un cuaderno de campo, lo que significa que actualizaré cuando tenga tiempo y progresos con el robot que estoy montando. Actualmente no he podido dar señales de vida a causa de los exámenes, pero ahora que vuelvo a tener tiempo ya he pensado en unas cuantas entradas que publicar.

El tema que hoy vamos a tocar son los ejemplos más básicos que podréis realizar con vuestra placa arduino, unos cuantos leds y algún que que otro componente más. Una vez instalado el software arduino, al abrirlo os encontraréis con esta interfaz que tenemos a la derecha. El programa está en ingles, pero será sencillo hacernos con él. El botón [↑] sirve para abrir nuestros códigos o algunos que ya vienen de serie ordenados por categorías (Básicos, Digitales, Analogicos, Sensores, Pantallas...).

Como ejemplo más básico tenemos el programa "Blink". Su función es hacer parpadear el led colocado en el pin 13 durante 1 segundo encendido, 1 segundo apagado.

Cada programa, por sencillo que sea, constará de 3 o 4 partes bien diferenciadas en el código, lo que facilita el entendimiento de estos. En este caso he modificado el ejemplo "Blink" para poder ver estas partes fácilmente:


/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

int ledPin = 13; // LED connected to digital pin 0

void setup()
{
pinMode(ledPin, OUTPUT); // set ledPin pin as output
}

void loop()
{
intermitente(); // wait for a second
}

void intermitente()
{
digitalWrite(ledPin, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(ledPin, LOW); // set the LED off
delay(1000);
}

  1. La 1º parte es donde definiremos los nombres y el valor del pin en donde se encuentran los componentes, así como constantes y demás. Por ejemplo en:
    int ledPin = 13; // LED connected to digital pin 13
    Vemos que para definir  un componente usaremos un integer, que será el pin donde está conectado. Las barras "//" nos servirán para comentar las lineas y así explicar el código, algo realmente útil para programas largos. Un consejo que os doy desde aquí es que el nombre que le debéis dar a las cosas sea uno realmente significativo, es mucho más útil tener "SensorDerecha" que tener "SD".

  2. La 2º parte: el Setup, es donde definiremos que pines son de entrada y cuales de salida. Puesto que hemos definido con un nombre cada pin en la 1º parte del código, en esta parte utilizaremos directamente el nombre:
    void setup()
    {
    pinMode(ledPin, OUTPUT); // set ledPin pin as output
    }
  3. Como vemos, las salidas son OUTPUT y las entradas, lógicamente, INPUT. También podremos llamar a "Serial.begin(9600);" y con eso en el loop, escribiremos para mandarlo al ordenador, a un lcd...
  4. La 3º parte es el Loop, donde se ejecuta el programa:
    void loop() { intermitente(); // wait for a second }
  5. Como vemos, tenemos una función llamada "intermitente()" la cual no hemos definido en ningún sitio, de esto de ocupará la apartado 4º. 
  6. En esta "parte" es donde definiremos las diferentes funciones de nuestro programa. Hay que tener en cuenta como se actualizan los sensores y determinadas cosas, pero encapsulando el código de esta forma, nos facilitará el trabajo y evitaremos tener un loop interminable con repeticiones del código. En el caso que estamos estudiando, la función intermitente se definirá de esta forma:

    void intermitente() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); }
    En este caso podríamos haber puesto directamente la función intermitente en el loop, pero decidí ponerlo así en este ejemplo para que veamos las diferentes partes del código. Así como hemos metido una función, podemos poner tantas como queramos bajo la estructura:

    void Nombre_funcion() { //Código que realiza }
Y con esto acabaría nuestro código, ahora tocaría compilar y subirlo a nuestra arduino para pobrar que todo vaya bien.

En cuanto a los ejemplos, no creáis que me olvido de ellos, pero me ha parecido que está fuera de lugar poner multitud de ejemplos pues eso se apartaría de mi visión hacía el blog como cuaderno de campo. Pero no voy a haceros quedaros con las ganas después de tanta expectación, a parte de los ejemplos que encontraréis en el propio software de arduino, podéis visitar la página dedicada a ello en wiring:

http://wiring.org.co/learning/basics/index.html

Y como regalo extra, en esta página de Ikkaro encontraréis otros ejemplos (uno muy visual es hacer las luces del coche fantástico):

http://www.ikkaro.com/Tutoriales-basicos-arduino

Con esto me despido hasta la próxima entrada, que supongo que será el donde y como adquirir la placa arduino, además de una posible entrada sorpresa en estos días.

No hay comentarios:

Publicar un comentario