Tutorial: Comenzando con Arduino

De Asociación de Robotica y Domótica de España (A.R.D.E.)

Contenido

[editar] Introduccion

[editar] ¿Qué es Arduino?

Arduino es una plataforma de hardware abierto basada en los microcontroladores AVR de ATMEL. Se trata de una sencilla placa con entradas y salidas (E/S) analógicas y digitales que incluye un entorno de desarrollo que implementa el lenguaje Processing/Wiring.

Originalmente estaba pensada para el desarrollo de proyectos artísticos y entornos interactivos, pero debido a su versatílidad y facilidad de uso, se está usando en muchos otros proyectos, incluyendo cada vez más robots.

[editar] ¿Para qué sirve Arduino?

En la robótica, podemos usar Arduino de 2 formas:

  • Arduino usarse como "cerebro" de nuestro robot, ejerciendo de controlador y coordinador del resto de partes del robot.
  • Si queremos usar un ordenador más potente (o un portátil) como cerebro, Arduino puede servir como interfaz de control entre el ordenador y el resto de partes del robot.

[editar] Tipos de tarjetas

Existen varios modelos de tarjetas arduino, cada una tiene un tipo de interconexión con nuestro ordenador:

  • Tarjeta serie
  • Tarjeta USB
  • Tarjeta Bluetooth

La más habitual y sencilla de usar es la tarjeta USB.

[editar] Instalación

Para comenzar a utilizar arduino sólo necesitamos seguir los siguientes pasos:

  • Instalar el IDE adecuado a nuestro sistema operativo. La última versión se puede obtener en la página de arduino.
  • Conectar la placa arduino a nuestro ordenador y alimentarla. Si estamos usando una tarjeta usb, basta con conectarla a un puerto usb libre.

[editar] Instalación del IDE en Windows

Para que el IDE de arduino funcione, necesitamos tener instalado el Java Runtime Enviroment (J2RE). Se puede descargar de página web de Sun y se instala siguiendo las instrucciones indicadas.

Después hay que descargar la última versión del IDE Arduino, que se puede obtener de la página web de arduino y seguimos los siguientes pasos:

1) Descomprimir el fichero zip dónde queramos que quede instalado el IDE.

2) Instalar los drivers USB. Si hemos instalado el IDE en la carpeta c:\ los drivers USB estarán en:

c:\arduino-0012\drivers

Estos drivers son necesarios para el funcionamiento de Arduino en Windows. Para hacer la instalación de los drivers hay que seguir estos pasos:

- Conectar la placa arduino a un puerto USB libre de nuestro ordenador.

- Se abrirá automáticamente el asistente de windows para nuevo hardware encontrado

- Seleccionar "No por el momento" y presionar "Siguiente"

- Seleccionar "Instalar desde una lista o ubicación específica (avanzado)" y presionar "Siguiente"

- Seleccionar "Buscar el controlador más adecuado en estas ubicaciones" presiona "Examinar" y seleccionar la carpeta donde hayas descomprimido el driver y presiona "Siguiente".

3) Abrir el IDE Arduino. Sólo tenemos que ejecutar el fichero Arduino.exe. Tan sólo hay que configurar el puerto USB al que tenemos conectado nuestra placa arduino y seleccionar el modelo de tarjeta apropiado.

[editar] Primeros pasos

[editar] Carga del primer programa en la tarjeta

1) Ide de arduino

1) Éste es el aspecto del ide de arduino al iniciarlo. En este caso está cargado uno de los ejemplos incluidos en el ide, el ejemplo "blink".

2) Selección de tarjeta

2) Antes de cargar nuestro el programa de prueba, debemos seleccionar el tipo de tarjeta que tenemos, cómo se muestra a la derecha.

3) selección de puerto serie

3) A continuación seleccionamos el puerto serie al que hemos conectado nuestra tarjeta.

4) carga de un programa

4) Por último, pulsamos en "Upload to I/O board" dentro de "File" y nuestro programa se cargará en la tarjeta.


[editar] Ejemplos de Arduino

El ejemplo más sencillo, al igual que con cualquier lenguaje de programación, es construir un hola mundo. En el caso de Arduino, podemos escribir un hola mundo "físico" que haga parpadear un led de la placa. Con este pequeño programa podemos familiarizarnos con la funcionalidad básica del entorno y que nuestra placa funciona correctamente.


[editar] Hola Mundo con Delay

  1. /**
  2.  * Archivo: HelloWorldDelay.c
  3.  * Descripción: Hola mundo con delay (led)
  4.  * Autores: Boops y Gizer20
  5.  * Asociación de Robótica y Domótica de España (A.R.D.E.)
  6.  * http:\\www.webdearde.com
  7.  * Revisiones:
  8.  * +RRR+ AAAA/MM/DD Nombre Descripción
  9.  * ------------------------------------------
  10.  * +001+ 2009/02/23 Ranganok Modificada cabecera
  11.  */
  12.  
  13. int Led = 13; // Pin de la placa arduino donde se conecta el led.
  14.  
  15. void setup() // Funcion para inicializar los pines de la placa
  16. {
  17. pinMode(Led, OUTPUT); // Asignamos la variable Led ,que corresponde al pin 13,como salida
  18. }
  19.  
  20. void loop() //Iniciamos lo que es propiamente el programa
  21. {
  22. digitalWrite(Led, HIGH); // Ponemos a 1 el pin 13 para encender el led
  23. delay(500); // esperamos medio segundo
  24. digitalWrite(Led, LOW); // Ponemos a 0 el pin 13 para apagar el led
  25. delay(500); // esperamos medio segundo
  26. }

<embedvideoplus-embed-clause>

[editar] Hola Mundo sin Delay

  1. /**
  2.  * Archivo: HelloWorldNoDelay.c
  3.  * Descripción: Hola mundo sin delay (led)
  4.  * En este ejemplo utilizaremos la funcion milis() para hacer parpadear el led.
  5.  * Esta funcion nos devuelve un long con el tiempo que el codigo ha estado funcionando y se resetea aproximadamente a los 50 dias.
  6.  * Autores: Boops y Gizer20
  7.  * Asociación de Robótica y Domótica de España (A.R.D.E.)
  8.  * http:\\www.webdearde.com
  9.  * Revisiones:
  10.  * +RRR+ AAAA/MM/DD Nombre Descripción
  11.  * ------------------------------------------
  12.  * +001+ 2009/02/23 Ranganok Modificada cabecera
  13.  */
  14.  
  15. int led = 13; // LED conectado al pin digital 13
  16. int estado = LOW; // estado del led
  17. long millisanteriores = 0; // guarda el ultimo intante del led ON
  18. long intervalo_parpadeo = 1000; // intervalo de parpadeo del led en milisegundos
  19.  
  20. void setup()
  21. {
  22. pinMode(led, OUTPUT); // configura el pin 13 (led==13) como salida digital
  23. }
  24.  
  25. void loop() // codigo del programa a ejecutar
  26. {
  27. if (millis() - millisanteriores > intervalo_parpadeo) //compara los milisegunos anteriores con los actuales
  28. //y si estos son mas grandes de 1000 (variable intervalo) activa el led
  29. {
  30. millisanteriores = millis(); //actualizamos el valor de los milisegundos
  31.  
  32. if (estado == LOW) //si esta apagado , lo encendemos
  33. {
  34. estado = HIGH;
  35. }
  36. else
  37. {
  38. estado = LOW; //si esta encencido lo apagamos
  39. }
  40. digitalWrite(led, estado); //activamos o desactivamos el led
  41. }
  42. }

<embedvideoplus-embed-clause>

[editar] Coche Fantastico

  1. /**
  2.  * Archivo: FantasticCar.c
  3.  * Descripción: Coche Fantastico
  4.  * Autores: Boops y Gizer20
  5.  * Asociación de Robótica y Domótica de España (A.R.D.E.)
  6.  * http:\\www.webdearde.com
  7.  * Revisiones:
  8.  * +RRR+ AAAA/MM/DD Nombre Descripción
  9.  * ------------------------------------------
  10.  * +001+ 2009/02/23 Ranganok Modificada cabecera
  11.  */
  12.  
  13. int timer = 100;
  14. int pins[] = { 2, 3, 4, 5, 6, 7, 8 };
  15. int num_pins = 7;
  16.  
  17. void setup()
  18. {
  19. int i;
  20. for (i = 0; i < num_pins; i++)
  21. pinMode(pins[i], OUTPUT); // se declara cada pin del array pins[] como salida
  22. }
  23. void loop()
  24. {
  25. int i;
  26.  
  27.  
  28. for (i = 0; i < num_pins; i++) // bucle que pasa por cada pin del array
  29. {
  30. digitalWrite(pins[i], HIGH); // enciende el led correspondiente,
  31. delay(timer);
  32. digitalWrite(pins[i], LOW); // y apaga el led encendido antes
  33. }
  34.  
  35. for ( i = num_pins-1; i > 0 ; i--)
  36. {
  37. digitalWrite(pins[i], HIGH);
  38. delay(timer);
  39. digitalWrite(pins[i], LOW);
  40. }
  41. }

<embedvideoplus-embed-clause>

[editar] PWM con led

  1. /**
  2.  * Archivo: LedPWM.c
  3.  * Descripción: LEDs con Pulse Width Modulation(PWM)
  4.  * Autores: Boops y Gizer20
  5.  * Asociación de Robótica y Domótica de España (A.R.D.E.)
  6.  * http:\\www.webdearde.com
  7.  * Revisiones:
  8.  * +RRR+ AAAA/MM/DD Nombre Descripción
  9.  * ------------------------------------------
  10.  * +001+ 2009/02/23 Ranganok Modificada cabecera
  11.  */
  12.  
  13. int led = 11; // Pin digital PWM
  14. int time = 5;
  15. int pulsewidth; // define la variable pulsewidth (0-255)
  16.  
  17. void setup() {
  18.  
  19. }
  20.  
  21. void loop() {
  22. // Subida del led
  23. for (pulsewidth=0; pulsewidth <= 255; pulsewidth++){
  24. analogWrite(led, pulsewidth);
  25. delay(time);
  26. }
  27. // Bajada del led
  28. for (pulsewidth=255; pulsewidth >= 0; pulsewidth--){
  29. analogWrite(led, pulsewidth);
  30. delay(time);
  31. }
  32. }

<embedvideoplus-embed-clause> <embedvideoplus-embed-clause>

[editar] Enlaces relacionados


Herramientas personales