featured-tuto-arduino12

Primeros pasos con Arduino

Introducción

Este es el primer proyecto en la serie Arduino Starter Project. El Arduino Starter Project será un conjunto de proyectos de dificultad creciente que son posibles de construir completamente con las partes del Arduino Starter Kit. Esta serie de proyectos está dirigida al usuario pincipiante de Arduino, sin embargo, se invita a todos a leerlos y a contribuir con comentarios y/o ideas de proyectos adicionales e instrucciones.

En el primer proyecto vamos a centrarnos en los LEDs y en cómo cargar sketches. No iremos mucho más lejos que construir un circuito básico y aprender a cómo usar la placa Arduino para encender los LEDs; pero algunas de las herramientas básicas necesarias para entender cómo se programa a Arduino serán cubiertas por completo.

Para poder completar este proyecto, será necesario tener instalado el software Arduino en tu computador. Para obtener instrucciones de cómo descargar e instalar el software de Arduino, véase las instrucciones en el sitio web de Arduino.

Hay también 3 carpetas que deberán ser instaladas. Descarga y descomprime estas dos carpetas al directorio “hardware\libraries\”de la instalación de Arduino (Por ejemplo en Windows esto sería C:\Program Files\arduino-0017\hardware\libraries).

Finalmente, descarga y descomprime el sketch del proyecto al directorio de tu sketchbook. Por default, en sistemas Windows, el sketchbook está ubicado en “Mis Documentos”.

Materiales:

(todas las partes están incluidas en el Arduino Starter Kit, o puede ser obtenidas individualmente.)

 

¡Cabléalo!

1. Usando el cable negro de jumper, conecta un extremo al agujero etiquetado ‘GND’ en el Arduino. Conecta el otro final del cable de jumper a la primera fila de la placa.

Step_1_Small

Step_1a_Small

Step_1b_Small

 

2. Pon la pata corta del LED rojo en la primera fila de la placa (Tip: ponla al lado del cable negro del jumper). Pon la pata larga del LED rojo en la segunda fila de la placa.

Step_2_Small

¿Qué es un LED?
Descripción: Un LED (Light Emitting Diode) tiene dos partes, la pata corta y la pata larga. Tienen nombres científicos también: El ánodo (la pata larga) y el cátodo (la pata corta). Se ven LEDs por todas partes, usualmente aparatos electrónicos como en teléfonos móviles, reproductores MP3, en consolas de videojuegos; y la lista sigue y sigue. Si no lo sabes aún, un LED puede alumbrar!¿Cómo funciona? Se coloca siempre la pata corta en tierra, o GND. La pata larga se coloca en uno de los puntos eléctricos de la placa Arduino. En el sketch (hablaremos de los sketches en breve) le decimos al LED si lo queremos prender o apagar.

 

3. Pon la pata corta del LED amarillo en la primera fila de la protoboard. Pon la pata larga del LED amarillo en la tercera fila de la protoboard.

Step_3_Small

 

4. Usando el jumper de color verde, conecta un extremo del cable al agujero etiquetado Digital 2 y el otro extremo a la segunda fila de la protoboard (Tip: Ponla en el agujero contiguo al de la pata larga del LED rojo).

Step_4a_Small

Step_4b_Small

 

5. Conecta un extremo del cable azul de jumper al agujero etiquetado Digital 3 y el otro extremo a la tercera fila de la protoboard (Tip: Ponlo en el agujero contiguo al de la pata larga del LED amarillo).

Step_5_Small

Step_5a_Small

Step_5b_Small

 

6. Conecta el cable USB al computador y a la placa Arduino.

Step_6_Small

 

¡Ejecuta el sketch!

1. Ejecuta el software Arduino haciendo doble-click en el ícono de Arduino.

loading

2.  Carga el sketch. Haz click sobre File->Sketchbook->Project_1 (Si no has descargado el código del proyecto mira la sección ‘Primeros pasos con Arduino’).

¿Qué es eso?Un Sketch 

Descripción: Un sketch es una lista de ‘instrucciones’ para la placa Arduino. Los sketches se escriben usando el software de Arduino. Después de escribir un sketch, se puede cargar en una placa Arduino. Después de cargar un sketch a la placa Arduino, ésta comenzará a ejecutar las instrucciones que están escritas en el sketch.

 

3. Compila el sketch. Para hacerlo, presiona el botón ‘Play’.

Play

¿Qué es eso?Compila 

Descripción: Cuando el sketch es compilado, el software de Arduino realiza dos importantes pasos. Primero, chequea el sketch en busca de cualquier problema. Estos problemas pueden ser palabras mal escritas, símbolos o signos faltantes o instrucciones que el sistema no entiende. Si Arduino detecta algún error, se detendrá y reportará los errores encontrados. Lo otro que hace el software Arduino, al compilar un sketch, es traducirlo a lenguaje de máquina. La placa Arduino no entiende las palabras inglesas en el código del sketch, de manera que es necesaria la traducción a un lenguaje que la placa pueda entender.

 

4. Cargar el sketch. Presiona el botón ‘Upload’ para cargar el sketch a la placa Arduino.

Download

Una vez el sketch se haya cargado por completo en la placa, verás texto aparecer en la ventana inferior del software de Arduino. El texto dirá “Done Uploading”. (Si no dice esto, entonces ha habido un problema. ¡No te preocupes! Mira la sección de ‘Troubleshooting’ al final de este laboratorio). Ahora que se ha cargado el sketch, la placa comenzará a ejecutar las instrucciones escritas en el sketch. Ahora miremos al sketch para ver por qué los LEDs están parpadeando a esa frecuencia.

Volviendo al software Arduino, encuentra esta sección del sketch:

//These two numbers will tell the Arduino Board how long to keepeach LED on for each cycle. The numbers are given in milleseconds.
 //Hint: There are 1000 milleseconds in 1 second.
int Red_On_Time = 1000;
//This tells the Arduino Board tokeep track of a number named "Red_On_Time." We can also assign a number to "Red_On_Time," here we've assigned 5000.
//This will be the number of milliseconds the red LED stays on.

¡Wow! ¡¿Qué es todo eso?! Notar cómo hay 3 colores distintos para el texto. Cada color le indica algo al software Arduino. Las sentencias en café son llamadas “comments”.

¿Qué es eso?Comentando el código 

Descripción: Un comentario es una parte del sketch que es ignorada por la placa Arduino cuando el sketch está corriendo. Los comentarios son usados para escribirse notas a uno mismo acerca del sketch. Todo lo que haya a la derecha del comentario, en la misma línea que ‘//’ es ignorado por Arduino, mientras todo lo que haya antes de ‘//’ sigue siendo parte del sketch.¿Cómo usarlo? Se puede poner un comentario en el sketch poniendo dos slashes (//) antes de las notas que se quiera comentar.Muéstrame un ejemplo:
runExperiment();   //runExperiment is called to cause the LED to start blinking

 

Verás comentarios en cada sketch que uses, y cuando crees tus propios sketches deberías poner comentarios tan seguido como sea posible. A veces el código se puede volver complicado o difícil de entender. Los comentarios son para recordarnos que es lo que está haciendo el sketch.

Además de los comenarios en esta sección vemos tres letras rojas ‘int’ en el código. Esta parte del sketch le dice a Arduino que haga un seguimiento de una variable, que es un entero de nombre Red_On_Time.

¿Qué es eso?Una variable 
Descripción: Una variable es un espacio donde guardar algo. Simplemente le dice a la placa Arduino que necesita registrar algo. Una variable tiene siempre un tipo, un nombre y un valor. Hay varios tipos distintos de variables. El tipo de la variable le dice a Arduino qué es lo que debe guardar. ‘int’ es una abrevación de integer y le permite a Arduino registrar un número normal.El nombre de la variable puede ser cualquier cosa (‘volume_level’, ‘color’, ‘blah’, ‘temp’, ‘x’). Escoge un nombre para cada variable que te ayude a recordar qué es lo que la variable está almacenando.Nosotros escogemos el valor de una variable. También podemos cambiar el valor de la variable en cualquier momento en el sketch, razón por la cual se le llama variable. Cada vez que usemos el nombre de la variable en el sketch, la placa Arduinno puede buscar esa variable y decirnos cuál es el valor almacenado en ella.Muéstrame un ejemplo: int Red_On_Time = 1000; En este ejemplo la variable es llamada ‘Red_On_Time’ y el tipo de la variable es ‘int’, o un entero. El valor de la variable es 1000.


¿Qué es eso?Un entero 
Descripción: Un entero es un tipo de variable que representa un número. Puede ser un número positivo o negativo. El número más grande que puede ser almacenado en un entero es 32.767 y el menor -32.768. Un entero no puede representar fracciones ni decimales.¿Cómo lo ocupo?: Las letras ‘int’ le dicen a Arduino que quieres crear una variable del tipo Integer. El nombre de las variables sigue a las letras ‘int’. Cuando creas una variable, le puedes asignar un valor usando ‘=XX’ luego de ingresar el nombre.Muéstrame un ejemplo: int Red_On_Time=1000;

Muy bien, basta con aprender por un momento. Volvamos al sketch. Hasta ahora hemos creado una variable llamada ‘Red_On_Time’ en el sketch y le hemos asignado el valor 1000. Entonces ¿qué significa esto? Bueno, los comentarios nos dicen que será el número de milisegundos que el LED rojo se mantenga encendido. Observa la placa Arduino que ahora ejecuta el sketch. ¿Cuánto tiempo crees que se mantiene encendido el LED rojo? Si piensas que es 1 segundo, entonces ¡estás en lo correcto! Ahora ¿qué es lo que sigue en el sketch?

int Yellow_On_Time = Red_On_Time/2;
//This tells the Arduino Board to keep track of a number named "Yellow_On_Time." Here we've assigned the number "Yellow_On_Timer" to be a half of "Red_On_Timer" (or Yellow_On_Timer = 1000/2).
//This will be the number of milliseconds the yellow LED stays on.

 

Otra variable. Ésta es llamada Yellow_On_Time. ¡Mira el número que le dimos como valor! Ni siquiera es un número. ¡Es una ecuación! Bueno, en realidad sí es un número. Recuerda que Red_On_Time es una variable que almacena un valor. Dijimos que su valor es 1000. De manera que estamos diciendo que Yellow_On_Time tiene un valor 1000/2; o si uno hace el cálculo quiere decir que Yellow_On_Time=500.

Así, el sketch dice que Yellow_On_Time debe ser la mitad de Red_On_Time. Observa de nuevo la placa Arduino ejecutar el sketch. ¿Es esto cierto? ¡Claro que sí! Ahora bien, ¿Qué hace el resto del sketch?

int Red_Cycle_Time=2000;
//This tells the Arduino Board to keep track of a number named "Red_Cycle_Time."
//Here we've assigned the number "Red_Cycle_Time" to be 2000.
//HINT: Notice that 2000 = 2 * Red_On_Time. This makes it so that the Red LED will be off for the same amount of time that it is on.
intYellow_Cycle_Time=Red_Cycle_Time
//This will be the number of milliseconds the yellow LED stays on.

 

Al leer los comentarios nos damos cuenta de que estas variables especifican cuál es el tiempo del ciclo para cada LED. El tiempo de ciclo es el tiempo total que debe demorar un LED en parpadear (Tiempo de encendido y de apagado). ¡El tiempo de ciclo de ambos LEDs es el mismo! Ambos están configurados a 2000 ms.

 

¡Modifica el Sketch!

Ahora que entendemos cómo funciona este sketch, cambiémoslo. Ahora podemos ver que el LED amarillo está encendido por la mitad del tiempo que el LED rojo. Pero entonces, ¿cómo es que no parpadea el doble más rápido? Esto es porque el tiempo de ciclo de cada LED es el mismo. Hagamos que el LED amarillo parpadee dos veces cada vez que el LED rojo lo haga.

Para hacer que el LED amarillo parpadee más rápido, debemos setear un Yellow_Cycle_Time más corto. Si el tiempo de ciclo es más corto, el LED parpadeará más rápido. Encuentra esta parte del sketch:

intYellow_Cycle_Time=Red_Cycle_Time;
//This tells the Arduino Board to keep track of a number named "Yellow_Cycle_Time.
//Here we've assigned the number "Yellow_Cycle_Time" to be equal to "Red_Cycle_Time"(or Yellow_Cycle_Time=10000).

 

Cambia el sketch de tal forma que se vea como la parte destacada del siguiente sketch.

intYellow_Cycle_Time=Red_Cycle_Time/2;
//This tells the Arduino Board to keep track of a number named "Yellow_Cycle_Time.
//Here we've assigned the number "Yellow_Cycle_Time" to be equal to "Red_Cycle_Time"(or Yellow_Cycle_Time=10000).

 

¡No olvides dejar un punto y coma luego de la instrucción! Pronto hablaremos acerca de los punto y comas. ¿Qué hemos hecho aquí? Hemos cambiado la variable Yello_Cycle_Time para que tome el valor Red_Cycle_Time/2; en otras palabras el tiempo de ciclo del LED amarillo debe ser la mitad del tiempo de ciclo del LED rojo. Ahora debemos cargar el sketch a la placa Arduino para poder ver el efecto de los cambios.

3. Compila el sketch. Para compilar el sketch, presiona el botón ‘Play’.

Play

4. Carga el sketch. Para cargar el sketch en la placa Arduino, presiona el botón ‘Upload’.

Download

Deberías ver el LED amarillo parpadear dos veces más rápido que el LED rojo. Si esto es lo que ves, ¡bien hecho! Haz hecho tu primer programa de encendido de LEDs.

Próximo paso (tarea):
1.) Hacer que ambos LEDs se enciendan a la misma frecuencia. (Hint: Tendrás que modificar dos variables; Yellow_On_Time y Yellow_Cycle_Time) 2.) Haz que el LED rojo parpadee 4 veces por cada vez que el LED amarillo lo haga.
¿Qué otros patrones puedes crear cambiando los valores de estas variables?

Troubleshooting:

Cuando voy a ‘File->Sketchbook’ no veo el sketch ‘Project 1?!

Si no ves el sketch Project 1 en el sketchbook, entonces probablemente no lo has descargado aún. Vuelve al tutorial del principio y revisa la sección ‘Primeros pasos’. Debes bajar el archivo “Project_1.zip”. Una vez lo has bajado, descomprímelo en tu sketchbook (que está situado usualmente en ‘Mis Documentos’).

Cuando trato de compilar, Arduino dice “Error Compiling” y luego lista un montón de errores que dicen “‘LED was not declared in this scope” o “Run_Project_1.h: No such file or directory.”

Si obtienes este error, probablemente no has cargado los archivos de librería para el proyecto. Vuelve al tutorial del principio y revisa la sección ‘Primeros Pasos’. Debes bajar dos archivos: LED Library y Run Project Library. Una vez los has bajado, descomprímelos en el directorio ‘hardware/libraries’ del directorio de Arduino (en sistemas windows, usualmente es C:/Program Files\arduino-0017\hardware\libraries).

Cuando trato de cargar el sketch a la placa de Arduino, Arduino demora mucho y luego dice algo como “Problem uploading to board…”

Este error puede significar cosas diferentes. La más probable es que no hayas escogido apropiadamente el puerto COM de tu placa Arduino. Para arreglar esto, primero revisa muy bien si tu cable USB está correctamente conectado a tu computador y a la placa Arduino. Si está bien conectado, revisa que el LED PWR verde de la placa esté encendido. Una vez hayas revisado esto, ve al menú ‘Tools’ en la parte de arriba de la ventana del software Arduino y luego a ‘Serial Port’. Asegúrate de que el puerto COM seleccionado para la placa Arduino sea el correcto. (Hint: Si usas windows, esto es generalmente el puerto COM con el número más grande que aparezca en el listado).

Si tienes el puerto COM correctamente seleccionado y sigues viendo este error, puede que la placa esté mal seleccionada. Para arreglar esto, ve al menú ‘Tools’ en la ventana Arduino y luego a ‘Board’. Selecciona ‘Arduino Duemilanove or Nano w/ ATmega328? e inténtalo de nuevo.

 

He conseguido cargar exitosamente el sketch a la placa Arduino, pero uno o ambos LEDs no se enciende.

Ah, bienvenido al mundo del Hardware. Si el sketch se ha cargado correctamente y los LEDs no se encienden, significa que la conexión no está bien. Vuelve a la sección ‘¡Cabléalo!’ y revisa cuidadosamente las fotos en el tutorial. Luego compáralas con el cableado que hiciste. Algunas cosas a las que prestarle especial atención son:

  • Asegúrate de que las patas más cortas de los LED estén conectadas a la misma fila de la protoboard que el cable negro.
  • Asegúrate de que los cables azul y verde cada uno vaya a las patas largas de sus respectivos LEDs. También revisa que los cables azul y verde estén conectados a los pines 2 y 3 de la placa Arduino.
Cuando trato de compilar mi código luego de modificarlo, obtengo un error del software de Arduino que dice “error: expected ‘,’ or ‘;’ before ‘int.’

¡No hay problema! Sólo has olvidado el punto y coma después de una de las instrucciones en el sketch. Revisa la línea de arriba que aparece destacada y asegúrate de que haya un punto y coma al final.

¡Eso sería el primer proyecto de principiantes en Arduino! Si tienes más preguntas acerca del proyecto, hazlas en la sección de comentarios.