Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ObjetivosEspecíficos.
Conocer la plataforma de hardware libre Arduino.
Desarrollar aplicaciones mediante sketches.
Conectar el Arduino a la PC mediante la interface USB y comunicarlos serialmente.
Utilizar la terminal serie para comunicarse con el dispositivo.
Materiales y equipos.
1 Computadora con sistema operativo Windows y con el programa Arduino IDE
instalado.
1 Cable USB (tipo A hacia tipo B).
1 Tarjeta Arduino UNO R2 o R3.
4 Resistencias de 4.7 kΩ.
4 LEDs.
4 Botones (pulsadores).
1 Breadboard.
1 Pinza punta plana.
1 Cortadora (pinza de corte diagonal).
Cables UTP.
Introducción Teórica.
El Arduino cuenta con un total de 14 pines (numerados del 0 al 13) con capacidad de
entrada y salida digital, así como de 6 pines (numerados del A0 al A5) con capacidad de
entrada analógica y también de entrada y salida digital.
Aparte de los pines de entradas y salidas, el Arduino cuenta con varios pines que permiten
compartir su fuente de suministro hacia circuitos externos. Es así, que cuenta con un total
de 3 conexiones de tierra (de las cuales al menos una debe ser conectada al tierra del
circuito externo), una salida de 5V y una salida de 3.3V.
Finalmente, existen 3 pines adicionales que son: AREF (Referencia analógica), Vin (voltaje
de entrada sin regular), y RESET (reinicio), cuya función no es fundamental para la
operación del Arduino y que por tanto no se verán en esta guía introductoria.
void setup()
Esta función es la primera que se ejecuta cuando el Arduino da inicio al programa, y es
efectuada una sola vez. Su propósito es llevar a cabo todas las tareas de inicialización
(como la configuración de los pines) antes que inicie el programa principal.
void loop()
Esta otra función es ejecutada tras terminar la función setup(), y en caso que loop() termine,
esta es re-ejecutada continuamente por el Arduino hasta que se reinicie, se reprograme o se
apague el suministro. Su propósito es llevar a cabo el programa principal mientras el
Arduino permanezca operando.
Nótese que el Arduino, a diferencia de una computadora personal, no cuenta con un sistema
operativo al cual retornar en caso que los programas terminen. Por tanto los programas
tienen que ser ejecutados de manera permanente mientras el sistema cuente con suministro
eléctrico. Sin embargo, si el usuario así lo desea, puede detener la ejecución del programa
por medio de atraparlo en un lazo infinito. Sentencias como for(;;); o bien while(1){ }
pueden ser usadas en ese caso.
Nota:
La introducción teórica no pretende ahondar más en los detalles de la sintaxis del lenguaje
C/C++, por lo que se recomienda al estudiante que consulte otros libros o documentación
referentes al tema. El resto de la introducción se enfocará más en los detalles que se
refieren al uso de periféricos externos que al lenguaje en sí.
Procedimiento.
2. Conecte la tarjeta de circuito del Arduino a su PC mediante el cable USB provisto (no
conecte ningún componente externo aún). Inicie el entorno de desarrollo de Arduino
haciendo doble clic izquierdo sobre el archivo ejecutable llamado arduino.exe. Su
docente dará indicaciones de la ubicación del programa en caso de ser necesario.
3. Proceda a configurar el Arduino IDE para que trabaje con su hardware. Acceda al menú
Tools->Board y asegúrese que se encuentra seleccionada la tarjeta Arduino Uno.
Asimismo, asegúrese que se encuentra seleccionado el puerto serie correcto en el menú
Tools->Serial Port (el número correcto de puerto dependerá de si ya existen otros
puertos seriales definidos en la PC).
4. A continuación haga clic izquierdo en el botón de abrir sketch de la barra de
herramientas, y abra el demo llamado blink en la categoría basics. A continuación, se
desplegará un programa simple en la pantalla.
5. Para correrlo, haga clic izquierdo en el botón de subir el sketch en la barra de
herramientas. El programa compilará automáticamente el código fuente en pantalla y
procederá de inmediato a programarlo en el hardware.
6. Estudie lo que hace el programa y verifique el LED rotulado como L en la tarjeta de
circuito. Como podrá apreciar en el programa, el LED se encuentra físicamente
conectado al pin 13 del Arduino.
7. Modifique su sketch de tal manera que el LED parpadee más rápido. Pruebe con
retardos de 100 milisegundos y suba el programa nuevamente al Arduino usando el
botón de la barra de herramientas.
8. Desconecte el Arduino del puerto USB y espere unos breves segundos. Reconecte el
Arduino nuevamente y observe lo que hace la tarjeta. ¿Qué puede concluir al respecto?
10. Con el circuito correctamente armado, proceda a conectar el cable USB al Arduino, y
suba el siguiente sketch:
void setup() {
//Configura los pines con los LEDs como salidas
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
//Inicializa el puerto serie
Serial.begin(9600);
}
void loop() {
//Verifica si se han recibido datos
if (Serial.available() > 0) {
//Si existen datos, comprueba de cual se trata, y enciende
//o apaga un LED acordemente
switch(Serial.read()) {
case '1': digitalWrite(2, HIGH); break;
case '2': digitalWrite(2, LOW); break;
case '3': digitalWrite(3, HIGH); break;
case '4': digitalWrite(3, LOW); break;
case '5': digitalWrite(4, HIGH); break;
case '6': digitalWrite(4, LOW); break;
case '7': digitalWrite(5, HIGH); break;
case '8': digitalWrite(5, LOW); break;
}
}
}
Código 1. Sketch para la parte 2.
11. Una vez descargado el sketch en el Arduino, abra el monitor serial desde el botón
respectivo en la barra de tareas.
12. Digite el número 1 en la linea de entrada y presione la tecla Enter o bien haga clic
izquierdo en send. El LED conectado al pin 2 deberá encenderse inmediatamente.
Pruebe con los números del 1 al 8 y verifique las acciones que efectúan.
13. Pruebe también encender o apagar simultáneamente varios LEDs enviando mensajes
como 1357 o bien 2468, note que si bien los datos son enviados uno tras otro, el
Arduino los procesa tan rápido que parece que se encienden o se apagan
simultáneamente.
14. Notifique a su docente que ha terminado esta parte para que le evalúe.
16. Con el circuito correctamente armado, conecte nuevamente el cable USB y suba el
siguiente sketch:
void setup() {
//Configura los pines conectados a los botones como entradas
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
//Inicializa el puerto serie
Serial.begin(9600);
}
void loop() {
//Envía el estado de cada uno de los botones
Serial.print(digitalRead(9));
Serial.print(digitalRead(10));
Serial.print(digitalRead(11));
Serial.print(digitalRead(12));
//Envia un final de linea
Serial.print("\n");
//Produce un breve retardo entre envíos
delay(1000);
}
Código 2: Sketch para la parte 3.
17. Una vez subido el sketch al Arduino, abra nuevamente el monitor serial.
18. En esta ocasión, notará que en la pantalla aparecen datos de forma periódica y
automática. Active los botones conectados a los pines de entrada y verifique su
operación. Note que si activa simultáneamente varios botones, el estado de los mismos
aparece sin problemas en la pantalla.
19. Notifique a su docente que ha terminado esta parte para que le evalúe.
Análisis de Resultados.
1. ¿Qué ocurre con el programa almacenado en el Arduino cuando se interrumpe el
suministro eléctrico?
2. ¿Qué debería ocurrir en el programa de la segunda parte si se envían datos que no sean
los números del 1 al 8?
Actividad complementaria.
1. Determine cómo se puede hacer para agregar entradas adicionales en el sketch de la
tercera parte.
2. En caso que se necesite comunicación bidireccional simultánea, ¿Que estructura
debería poseer el programa? Y ¿Cuál sería la estrategia de solución?
3. Investigue acerca de las variantes que existen de la plataforma Arduino que son
producto de la apertura de la plataforma.
Bibliografía.
Sitio web de los desarrolladores: www.arduino.cc
Referencia en línea del lenguaje: http://arduino.cc/en/Reference/HomePage
Massimo Banzi, “Getting started with Arduino” O'Reilly Media / Make Publisher,
Marzo 2009, ISBN: 978-0-596-15551-3
https://vimeo.com/18390711
https://botscience.wordpress.com/2012/06/05/historia-de-arduino-y-su-nacimiento/