You are on page 1of 49
Guia de Usuario de Arduino Rafael Enriquez Herrador 13 de noviembre de 2009 © @8O Este trabajo esta publicado bajo la licencia Creative: Commons Attribution-Noncommercial-Share. Alike Para ver una copia de esta licencia, visita: http: //creativecommons .org/Licenses/by-nc-sa/3-0/ O envia una carta a: Creative Commons 171 Second Street, Suite 300 San Francisco, California, 91105, LTAL Sistemas Universidad de Cordoba i52enher@uco.es, Indice general Be PREFACIO INTRODUCCION 21. iQue 2.2. jPor qué ARDUINO? . « HARDWARE 3.1. Placas 3.2. Arduino Diecimila. «+. B21. 3.2.2. 32.3. B24. B25. 3.2.6. B27. 32.8. 32.9. 3.2.10, ARDUINO? . B/S. - Vision General Alimentaci6n . . ‘Memoria « Entrada Programacién wae . Reseteo Automitico (Software). . « Proteccién de Sobrecarga del USB . . we wee es es Caracteristicas FISiCaS 66. SOFTWARE 4.1. Instalar el Software Arduino . . . « ALL AL. 413. 4,2. Introduccion al Entorno Arduino 421. A224 4.23. Window wee MAC OS X (v. GNU/Linux... Barra de herramientas . . . Mentis, oe tae see oe oe Preferencias 2.220 eee eee COMENZANDO CON ARDUINO. 5.1. Estructura... 52. Variables. . « 5.3. Tipos de datos 5a, Avitmética . . COMstaMtS eee Control de flujo . B/S digital. . B/S analogica 9. Tiempo .. « 5.10, Matemiticas . 5.11. Aleatorio . . « 5.12. Serie. . PHBE pone A. Ejemplos de Aplicacién con Arduino AuL, Salida digital nnn ‘A.2, Entrada digital... A.B, Salida PWM. 2... ‘Ad, Entrada de potenciometro . B. Esquemético de Arduino Diecimila SS658 SRRS5858 & Indice de cuadros 3.1. Caracteristicas técnicas de Arduino Diecimila 2... 0.2 eee ee eee 5.1. Relacion valor-salida con analogWrite() oa Indice de figuras 3.1. Placa Arduino Diecimila (USB)... 0.0.0.2 ee eee eee eee i 4.1. Descripcién de componentes de la placa Arduino Diccimila . . . . a 4.2, Conexién del cable USB ala placa Arduino... 6+ 18 43. Asistente para Nuevo Hardware MS-Windows - Paso 1 18 dud, Asistente para Nuevo Hardware MS-Windows - Paso 2 19 45, Asistente para Nuevo Hardware MS-Windows - Paso 3 +. 19 4.6. Asistente para Nuevo Hardware MS-Windows - Paso 4 - 20 4.7. Entorno Arduino... . 2 4.8. Administrador de Dispositivos MS-Windows 2 4.9. Meni de seleceiin de puerto del Entorno Arduino... 2 4.10. Meni de selecciin de placa del Entomo Arduino... . 2 4.11. Botén de subida de la rutina ala placa... . 2 4.12. Instalacién de drivers en Mac OSX . . « 2B 4.13, Conexion del cable USB a la placa ‘Arduino | - 2d Entorno Arduino... 6-20-0202 eee wae 25 « Menit de seleceién de puerto del Entorno Arduino. . « B Ment de seleceiin de placa del Entomo Arduino... « 26 Botén de subida de la rutina a la placa 26 ALL, Esquema de salida digital A.2, Esquema de entrada digital A.3, Esquema de salida PWM « ‘AML, Esquema de entrada de potenciometto + | Capitulo 1 PREFACIO Esta guia de usuario intenta ser una forma de acercarse al diseiio y desarrollo de proyectos basados en Arduino para aquellas personas que minea han trabajado con él pero que peseen un buen nivel en programacién y electronica, Por esta razon y para hacerlo fécil, se ha excluido nmcha informacion existente en Internet y otros mannales para centrarse en Jos aspectas mas bisioos de Is caracteristicas y la programacion de Arduino, Otro de los objetivos de esta guia es onganizar un poco la gran cantidad de informaci6n sobre este tema existente en la red. Para ello casi toda la informacion se ha obtenido a través de la fuente http://www .arduino.cc o de manuales basados en ella pero algo mas estructurados. En general, el texto es una traduccién libre al espaiiol del documento original «Arduino Programming Notebook» escrito y compilado por «Brian W. Exans>. Por iiltimo, la gufa est pensada para aquellas personas que no han usado Arduino pero les gustaria iniciarse en este campo, por lo que si eres un usuario avanzado de esta plataforma no te aportara nada nuevo (sélo te servird para repasar conceptos basicos). Expero que les sea de utilidad. Capitulo 2 INTRODUCCION 2.1. ,Qué es ARDUINO? Anluino es una plataforma de prototipos electronica de cédigo abierto (open-source) basada en hardware y software flexibles y faciles de usar, Est pensado para artistas, diseniadores, como hobby y para cualquiera interesado en crear objetas © entornos interactivos. Arduino puede «sentir» el entorno mediante la recepcién de entradas desde una variedad de sensores y puede afoctar a su alrededor mediante el control de luces, motores y otras artefactes. El microcontrolador de la placa se programa usando el «Arduino Programming Language> (basado en Wiring!) y el «Arduino Development Environment» (basado en Processing”). Los proyectos de Arduino pueden ser autonomes 0 se pueden cormicar con software en ejecucion en un ordenador (por ejemplo con Flash, Processing, MaxMSP, etc.). Las placas se pueden ensamblar a mano? o encargarlas preensambladas'; el software se puede cescargar® gratuitamente. Los diseiios de referencia del hardware (archivos CAD) estén disponibles bajo licencia open-source, por lo que eres libre de adaptarlas a tus necesidades. Arduino recibié una mencién honorifica en la seccién Digital Communities del Ars Electronica Prix en 2006, 2.2. Por qué ARDUINO? Hay nmichas otros microcontroladores y plataformas microcontroladoras disponibles para compu taci6n fisica. Parallax Basic Stamp, Netmedia’s BX-24, Phidgets, MIT's Handyboard, y muchas otras ofertas de funcionalidad similar. Todas estas herramientas toman los desorlenados detalles de la programacién de microcontrolador y la encierran en. un paquete ficil de usar. Arduino tam- bién simplifica el proceso de trabajo con microcontroladores, pero ofrece algunas ventajas para profesores, estudiantes y aficionadas interesadas sobre otros sistemas: /Tairing.org.co °Mas informacion en hit tp: //sni processing .org ° Ms informacion en hit tp: //swag aarauino.cc/en/Main/USBAssenbly {Mis informacién en http: //snna arduino.cc/en/Main/Buy 8\Mas informacion en bit tp: //sna.arantino.cc/en/Main/Software 8 = Barato: Las placas Arduino son rdlativamente baratas comparadas con otras plataformas microcontroladoras. La version menos cara del modulo Arduino puede ser ensamblada a mano, € inchiso los médulos de Arduino preensamblados cuestan menos de 50%. = Multiplataforma: El software de Arduino se ejecuta en sistemas operatives Windows, Ma- cintosh OSX y GNU/Linux. La mayoria de los sistemas microcontroladores estén limitados a Windows. = Entorno de programacion simple y claro: El entorno de programacién de Arduino es ficil de usar para principiantes, pero suficientemente flexible para que usuarios avanzados puedan aprovecharlo también, Para profesores, est convenientemente basado en el entorno de pro- gramacién Processing, de manera que estudiantes aprendiendo a programar en ese entorno estardn familiarizados con el aspecto y la imagen de Arduino. = Cédigo abierto y software extensible: El software Arduino est publicado como herramientas de codigo abierto, disponible para extensién por programadores experimentados. El Ienguaje puede ser expandido mediante librerias C++, y la gente que quiera entender los detalles téenicos pueden hacer el salto desde Arduino ‘a la programacién en Ienguaje AVR C en €l cual est basado. De forma similar, puedes afiadir cédigo AVR-C directamente en tus programas Arduino si quieres. = Cédigo abierto y hardware extensible: El Arduino est basado en microcontroladores AT- MEGAS y ATMEGA168 de Atmel. Los planos para los médulos estan publicados bajo li- cencia Creative Commons, por Io que disefiadores experimentados de circuitos pueden hacer sui propia versién del médulo, extendiéndolo y mejorandolo. Incluso usuarios relativamente inexpertos pueden construir la version de Ia placa del médulo para entender como funciona y ahorrar dinero. Capitulo 3 HARDWARE Hay miiltiples versiones de la placa Arduino. La mayorfa usan el ATmegal68de Atmel, mientras ne las placas més antiguas usan el ATmega8. Nota: Los disettos de referencia para Arduino se distribuyen bajo licencia Creative Commons Attribution- ShareAlike 2.5. 3.1. Placas E/S * Diccimila: Esta es la placa Arduino més popular, Se conecta al ordenador con un cable estandar USB y contiene todo lo que necesitas para programar y usar la placa. Puede ser ampliada con variedad de dispositives: placas hijas con caractertsticas especificas. = Nano: Una placa compacta diseiada para uso como tabla de pruebas, el Nano se conecta al ordenador usando un cable USB Min-B. = Bluetooth: El Arduino BT contiene un modulo bluetooth que permite comunicacion y programacién sin cables. Es compatible con los dispasitivos Arduino. = LilyPad: Disefiada para «aplicaciones listas para llevar», esta placa puede ser conectada en fabrica, y un estilo sublime. Esta es la placa mas pequefia de Arduino, Trabaja bien en tabla de pruebas 0 para aplicaciones en las que prima el espacio, Se conecta al orlenador usando el cable Mini USB. = Serial: Es una placa basica que usa RS232 como un interfaz. con el ordenador para programa- ion y comunicacion, Esta placa es fill de ensamblar incluso como ejercicio de aprendizaje. « Serial Single Sided: Esta placa est disefiada para ser grabada y ensamblada a mano. Es ligeramente més grande que la Diecimila, pero aun compatible con les dispositivos. 10 3.2. Arduino Diecimila 3.2.1. Visién General EI Arduino Diecimila es una placa microcontroladora basada en el ATmegal68. Tiene 1 pines de entrada/salida digital (de los cuales 6 pueden ser usados como salidas PWM), 6 entradas anal6gicas, un oscilador de cuarzo.a 16MHz, tna conexi6n USB, un conector para alimentacion, tuna cabecera ICSP, y un bot6n de reset. Contiene todo lo nevesario para soportar el microcontrolador; simplemente conéctalo a un ordenador con un cable USB o endhifalo con un adaptador AC/DC 0 bateria para comenzar. Figura 3.1: Placa Arduino Diecimila (USB) «Diecimila> quiere decir 10000 en italiano y fue Hamado asi para resaltar el hecho de que mas de 10000 placas Arduino han sido fabricadas. El Diecimila es el iiltimo en la serie de placas USB Arduino. uw 3.2.2. Resumen Caracteristica Descripeion Tcrocontrolador ‘Atmegalow Voltaje de operacion BV “Tension de entrada (recomendada) T-2V “Tension de entrada (limite) 6- DV Pines digitales de Ey Ta (de ies cuales 6 proven salidas PWM), Pines de entrada analogicas 6 Comiente DC por pin F7 mA Comiente DC para pin 3.3 V omA ‘Memoria Flash 16-KB (de Tos cuales 2 KB usados para bootloader) SRAM TRB EEPROM Biz bytes Frecuencia de reloj T6 Miz Cuadro 3.1: Caracteristicas téenicas de Arduino Diecimila 3.2.3. Alimentacién EI Arduino Diecimila puede ser alimentado a través de la conexién USB 0 con un suministro de energia externo. La fuente de energia se selecciona mediante el jumper PWR_SEL: para alimentar a laplaca desde la conexién USB, colocarlo en los dos pines més cercanos al conector USB, para un suministro de energia extemo, en Jos dos pines mas cercanos al conector de alimentacion externa. La alimentacién externa (no USB) puede venir o desde un adaptador AC-%DC (wall-wart) 0 desde una bateria, El adaptador puede ser conectado mediante un enchufe centro-positivo en el conector de alimentacién de la placa. Los cables de la baterfa pueden insertarse en Jas cabeceras de ls pines Gnd y Vin del conector POWER. Un regulador de bajo abandono proporciona eficiencia energética mejorada, La placa puede operar con un suministro externo de 6 a 20 voltios, Si es suministrada con menos de 7 V, sin embargo, el pin de 5 V puede suministrar menos de cinco woltios y la placa podria ser inestable, Si usa mas de 12 V, el regulador de tension puede sobrecalentarse y dai placa. El rango reoomendado es de 7 a 12 volties. Los pines de alimentaci6n son los siguientes: = VIN. La entrada de tensién a la placa Arduino cuando esta usando una fuente de alimenta- ion extema (al contrario de los 5 voltios de la conexion USB u otra fuente de alimentacion regulada). Puodes suministrar tension a través de este pin, o, si suministra tension a través del conector de alimentaci6n, acceder a él a través de este pin, = 5V. El suministro regulado de energia usado para alimentar al microcontrolador y otros componentes de la placa, Este puede venir o desde VIN a través de un regulador en la placa, © ser suministrado por USB u otro suministro regnlado de 5 V. = 3V3. Un suministro de 3.3 V generado por el chip FTDI de la placa. La corriente maxima es de 50 mA, 12 = GND. Pines de Tierra. 3.2.4. Memoria EI ATmegai6s tiene 16 KB de memoria Flash para almacenar eédigo (de los cuales 2 KB se usa para el «bootloader» ), Tiene 1 KB de SRAM y 512 bytes de EEPROM (que puede ser leida y esctita con la librerfa EEPROM!). 3.2.5. Entrada y Salida Cada tmo de los 14 pines digitales del Diecimila puede ser usado como entrada o salida, usando funciones pinMode(), digitalWrite() y digitalRead()?. Operan a 5 voltios. Cada pin puede propor- Gonar o recibir un maximo de 40 mA y tiene una resistencia interna «pull-up» (desconectada por defecto) de 20-50 KOhms. Ademés, algunos pines tienen funciones especiales: = Serial: 0 (Rx) y 1 (Tx). Usados para recibir (Rx) y transmitir (Tx) dates TTL en serie. Estos pines estan conectados a los pines cormespondientes del chip FTDI USB-a-TTL Serie. = Interruptores externos: 2 y 3. Estos pines pueden ser configurados para disparar un interruptor en un valor bajo, un margen creciente o decreciente, oun cambio de valor. Mirar Ja funcion attachInterrupt(}°. = PWM: te(f. = SPI: 10 (SS), 11 (MOSD), 12 (MISO), 13 (SCK). Estos pines soportan comunicacion SPI, la cual, aunque proporcionada por el hardware subyacente, no esta actualmente incluida en el lenguaje Arduino, = LED: 13, Hay un LED empotrado conectado al pin digital 13. Cuando el pin est a valor HIGH, el LED esta encendido, cuando el pin esta a LOW, est apagado. EI Diccimila tiene 6 entradas analégicas, cada una de las cuales proporciona 10 bits de resolucién (por ejemplo 1024 valores diferentes). Por defecto miden 5 voltios desde tierra, aunque es posible cambiar el valor més alto de su rango usando el pin ARF y algiin eddigo de bajo nivel. Ademés, algunos pines tienen funcionalidad especializadaz = PC: 4 (SDA) y 5 (SCL). Soportan comunicaci6n PC (TWH) usando la breria Wire’ Hay otro par de pines en la placa: 5 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la funcién analogWri= = AREF. Voltaje de referencia para las entradas analogicas. Usado con analogheference(P. = Reset, Pone esta linea a LOW para resetear el microcontrolador. Tipicamente usada para aiiadir un bot6n de reset. a dispositivos que bloquean a la placa principal, fa. ardutino .0c/en/Reference /EEPROM fama.arduino .0c/en/Reference/ ham.arrduino .0c/en/Reference ham arduino .0c/en/Reference /visring .org.co/reference/Librar ies/Wire/index. htm] fama .arduino .0c/en/Reference Mis informacion an: http: 13 3.2.6. Comunicacion EI Arduino Diecimila tiene un numero de infraestructuras para comunicarse con un ordenador, otro Arduino, u otras microcontroladores. El ATmegal68 prove comnicacion serie UART TTL (5V), la cual esté disponible en los pines digitales 0 (Rx) y 1 (Tx). Un FTDI FT232R1 en la placa canaliza esta comunicacion scrie al USB y los drivers FTDI (incluidos con el software Arduino) proporcionan un puerto de comunicacion virtual al software del ordenador, El software Arduino incluye un monitor serie que permite a datos de texto simple ser enviadas a y desde la placa Arduino. Una libreria SoffwareSerial” permite commnicacién serie en cualquiera de los pines digitales del Diecimila. E] ATmegal68 también soporta conmnicacion 12C (TW1) y SPI. El software Arduino incluye una librerfa Wire para simplificar el uso del bus 12C®. Para usar la commnicacién SPI, consultar el esquema del ATmegal68. 3.2.7. Programacion EI Arduino Diecimila puede ser programado con el software Arduino®, El ATmegal68 del Arduino Diecimila viene con un bootloader" pregrabado que te permite subirle mevo cédigo sin usar un programador hardware externo. Se commnica usando el protocolo original STI500. ‘También puedes saltar el bootloader y programar el ATmegal68 a través de la cabocera ICSP (In-Circuit Serial Programming)!!, 3.2.8 Reseteo Automatico (Software) En lugar de requerir una pulsacion fisica del botén de reset antes de una subida, el Arduino Diecimila esta disefiado de forma que permite ser reseteado por software en ejecucién en una computadora conectada. Una de las lineas de control de flujo de hardware (DTR) del FT232RL esta conoctada a la linea de reset del ATmegal68 a través de un condensador de 100 nF. Cuando esta linea toma el valor LOW, la linea reset se mantiene el tiempo suficiente para resetear el chip. La version 0009 del software Arduino usa esta capacidad para pemnitirte cargar eédigo simplemente presionando el botén upload en el entomo Arduino, Esto significa que el bootloader puede tener un tiempo de espera mais corto, mientras la bajada del DTR puede ser coordinada correctamente con el comienzo de la subida. Esta configuracién tiene otras repercusiones, Cuando el Diecimila esta conectado a un ordenador que ejecuta o Mac OS X o Limx, se resetea cada vez. que se hace una conexién a él por software (a través de USB). Durante el siguiente medio segundo aproximadamente, el bootloader se ejecutaré en €l Diecimila. Mientras esté programado para ignorar datos «malformados» (por ejemplo, cualquiera excepto uma subida de obdigo nuevo), interceptara los primeras bytes de datos enviadas a la placa despues de abrir la conexién, Si una rutina que se ejecuta en la placa recibe una configuracion una jana ardutino .0c/en/Reference/SoftwareSerial tar: http://wiring.org. co/reference/Librar ies/Wire/index.html Descarga desde: het: //m-arduino .cc/en/Yain/Software 10M 4s informacion en: http: //iani.arduino.oc/en/Tutorial /Bootloader Mis detalles encht tp: //snimaranino. cc/en/Hacking/Programer u vez 11ottos datas cuando empieza, asegurarse de que el software con el que se commnica espera un segundo después de abrir la conexion y antes de enviar estos datos. 3.2.9. _Proteccién de Sobrecarga del USB EI Arduino Diecimila tiene un fusible reseteable que protege tus puertos USB del ordenador de cortes y sobrocangas. Aunque la mayoria de los ordenadotes proporcionan su propia proteccién intema, el fusible proporeiona una capa de protecein extra, Si més de 500 mA se aplican al puerto USB, el fusible autométicamente rompera la conexién hasta que el corte o Ja sobrecarga sean eliminados. 3.2.10. Caracteristicas Fisicas La maxima longitud y anchura del Diecimila PCB son 2.7 y 2.1 pulgadas respectivamente, con el conector USB y el conector de alimentacién que se extienden mas alla de las primeras dimensiones. Tres agujeros de tornillo permiten a la placa atomillarse a una superficie 0 caja. Capitulo 4 SOFTWARE 4.1. Instalar el Software Arduino Esta seccion explica como instalar el software Arduino en un ordenador que ejecute cualquiera de los siguientes Sistemas Operativos: Windows, Mac OS X, GNU/Linux. Este documento eaplica como conectar tu placa Arduino al ordenador y cargar tu primera rutina. Estas son los pasos que seguiremas: 1, Obtener una placa Arduino y un cable, 2. Descargar el entorno Arduino. 3, Instalar los drivers USB. 4. Conectar la placa. . Conectar un LED. ov 6, Ejocutar el entorno Arduino, ~. Subir un programa. 8, Buscar el Led que parpadea, 1.Obtener una placa Arduino y un cable En este tutorial se asume que estas usando un Arduino Diecimila. Si tienes otra placa, lee la informacién correspondiente en http://www arduino .cc/en/Guide/HomePage. El Arduino Dieci- milla es una placa simple que contiene todo lo que necesitas para empezar a trabajar con electronica Y programacién de microcontrolador. ‘También necesitas un cable USB esténdar (del tipo que conectarfas a una impresora USB, por ejemplo). 16 Rex Lebe_ Pin 23 (L) ED Dial Pins Fro1 use chs IS Power =D ss ack eset button - ses Header Power Selection Jumper ‘voltage Regulator Microcontroler Power Jack Prot Soin Baroni, dune te Creve Cs Mt Saree ee Figura 4.1: Descripcién de componentes de la placa Arduino Diecimila 4.1.1. Windows 2.Descargar el entorno Arduino. Para programar la placa Arduino necesitas el entorno Arduino, Descarga la tiltima version desde http: //waw arduino.cc/en/Main/Softtware. Cuando termine la descarga, descomprime ¢l archivo descargado, Asegurate de conservar la estructura de carpetas. Haz doble click en la carpeta para abrirla, Deberia haber archivos y sub- carpetas en su interior. 3.Instalar los drivers USB. Si estas usando un Arduino USB, necesitars instalar los drivers para el chip FTDI de la placa. Estos pueden encontrarse en el directorio drivers/FTDI USB Drivers de la distribucién Arduino, En el signiente paso («Conectar la placa»), se mostrar el asistente para Ariadir Nuevo Hardware de Windows para estos drivers. La tiltima version de los drivers se puede encontrar en http: //swaw. ftdi chip.con/Drivers/ vcP.htm 4,Conectar la placa. La fuente de alimentacién se selecciona mediante el jumper entre les conectores del USB y alimentacién. Para alimentar la placa desde el puerto USB (bueno para controlar dispositives de baja potencia como LEDs), coloca el jumper en los das pines més cercanos al conector USB. Para alimentar la placa desde uma fuente externa (6-12 V), coloca el jumper en los dos pines mas cercanos al conector de alimentacién, En cualquier caso, conecta la placa a un puerto USB de tu ordenador. i Conexién del cable USB a la p ra Arduino E] LED de alimentacién deberia encenderse, Elasistente para Aftadir Nuevo Hardware deberia abritse, Indicale que no conecte a Windows Update y haz. clids en siguiente, tek Welcome to the Found New Hardware Wizard indo i eich for ert and ude cfs ty leckngcn geearpatr ene hadersalten CD, 0190 Ihe WtoUpdae eb ste (ath youaaraseon) Feadou pivao pol an Win carne! to Wns peer seach shane O Yer titre nly Ores. newane evey tre leemrec advice ONo.ncthetine (hee tcc. Figura 4.3; Asistente para Nuevo Hardware MS-Windows - Paso 1 Seleociona dInstalar desde una lista o ubicacién especificada (Avanzado)» y haz click en si- guiente. 18 tek The wesrdhebs yeu tl soa fer Frame useuaRT 1 jour honors came with an instalation CD Qari ae ‘Wheto you wantin adi do? Ollie setae race Recommended © hn tow ao Sketchbook > Examples > Digital Blink. Seleccionar el dispositivo serie de la placa Arduino desde el menu Herramientas > Puerto Serie. En Windows, este deberia ser COM1 0 COM2 para la placa serie Arduino, o COM, COM4 0 COMS para la placa USB, Para descubrirlo, abrir el Administrador de Dispositivos de Windows (En ha pestaiia Hardware o en el Panel de Control de Sistema), Buscar un «USB Serial Port en la secein Puertos; esa es la placa Arduino, 20 Figura 4,7: Entorno Arduino Figura 4.8: Administrador de Dispositivos MS-Windows QL dit Sketch Help ‘Auto Format RT Alpha, ‘Archive Sketch Export Folder. Microcontroller (WCU) » Serial Port PAC Serial Monitor Baud Rate» | [evjcu.usbserial-A3000Y)0 Iéev]tty.Bluetooth-POA-Sync Burr Bootloader: Iéevjcu.Bluetooth-PDA-Sync {Iéevjtty.Bluetooth-Modem 4 ceoyleFt 205 Oosehave Board. ‘Sketch Help. ‘Auto Format =r Copy for Forum Archive Sketch co Serial Port ‘Arduino 8T ‘Arduino NG or older w/ ATmega8 Arduino NG or older w/ ATmegal68 ‘Arduino Mini PAXIL You mess anty er LE, avin Figura 4.10: Menti de seleccién de placa del Entorno Arduino Ahora, simplemente hav click en el botn «Upload» del entorno. Expera unos pocos segundos (deberfas ver los LEDs Rx y ‘Ex de la placa ilumingndose). Si la carga es correcta, el mensaje «Done uploading» aparaceréi en la barra de estado. 8.Buscar el LED que parpadea. ‘Unos pocos segundos después de que la subida termine, deberias ver el LED ambar (amarillo) en Ia placa empezar a parpadear. Si lo hace jenhorabuena! Has conseguido Arduino cargado y ejocuténdase, Si tienes problemas, consulta http: //www.arduino.cc/en/Guide/Troubleshoot:ing. 22 4.1.2. MAC OS X (v. 10.3.9 0 posterior) 2.Descargar el entorno Arduino. Para programar la placa Arduino necesitas el entomo Arduino. Descarga la tiltima version desde http: //waw arduino.cc/en/Main/Softtware. Cuando termine la descarga, descomprime el archivo descargado. Asegurate de conservar la estructura de campetas. Haz doble click en Ta carpeta para abritla. Deberfa haber archivos y sub- carpetas en su interior. 3.Instalar los drivers USB. Si estas usando un Arduino USB, necesitars instalar los drivers para el chip FTDI de la placa. Estos pueden encontranse en el directorio drivers de la distribucion Arduino. Si tienes un Mac mas antigno como un Powerbook, iBook, G4 0 G5, deberias usar Jos drivers PPC: FTDIUSBSerialDriver_w2_1_9.dmg, Si tienes un Mac més nuevo como un MacBook, Mac- Book Pro 0 Mac Pro, necesitas los drivers de Intel: FTDIUSBSerialDriver_v2_2_9_Inteldmg. Haz doble click para montar la imagen del disco y ejocutar el FTDIUSBSerialDriver.pkg incluido, 2ofssdkected, 442 GS alate Figura 4.12: Instalacion de drivers en Mac OS-X La tltima versién de los drivers se puede encontrar en http://wa.ftdichip.com/Drivers/ VeP.htm. 4.Conectar la placa. La fuente de alimentacién se selecciona mediante el jumper entre les conectores del USB y alimentacion, Para alimentar la placa desde el puerto USB (bueno para controlar dispositives de baja potencia como LEDs), coloca el jumper en los dos pines més cercanos al conector USB. Para alimentar la placa desde uma fuente externa (6-12 V), coloca el jumper en los dos pines mas cercanos al conector de alimentacién. En cualquier caso, conecta la placa a un puerto USB de tu ordenador. EI LED de alimentaci6n deberia encenderse, 23 Figura 4.13: Conexion del cable USB a la placa Arduino 5. Conectar un LED (si estas usando una placa antigua). La primera rutina que subir a la placa Arduino hace parpadear un LED. El Arduino Diecimila (vel Arduino NG original) tiene uma resistencia incorporada y un LED en el pin 13. En el Arduino NG Rev. Cy placas Arduino pre-NG, sin embargo, el pin 13 no tiene un LED inoorporado. En estas placas, necesitaris conectar Ia patilla positiva (més larga) de un LED al pin 13 y la negativa (mas corta) a tierra (marcada como «GND»). Normalmente, también necesitaras usar una resistencia con el LED, pero estas placas tienen una resistencia integrada en el pin 13. 6.Ejecutar el entorno Arduino. Abrir la carpeta de Arduino y hacer doble click en la aplicacién Arduino, 7.Subir un programa. Abrir la rutina de ejemplo de parpadeo del LED: File > Sketchbook > Examples > Digital > Blink. a Figura 4,14: Entorno Arduino Selecciona el dispositivo de la placa Arduino desde el meni Tools > Serial Port. En el Mac, deberia ser algo con /dev/tty.ushserial, dit Sketch Help 10.6 J Auto Forma T Alpha. ‘Archive Sketch Export Folder. Microcontroller (MCU) : Serial Port : Serial Monitor Baud Rate | fdevjcu.usbserial-A3000¥)0 poe ong Iéev]tty.Bluetooth-POA-Sync ; fbr Ecoctos dar {Iéev/cu.Bluetooth-POA-Sync : —_ {Iéevjtty.Bluetooth-Modem Figura 4.15: Ment de seleccién de puerto del Entorno Arduino Asegurate de que «Arduino Diecimila» esta seleccionado en el menti Tools > Board. 25 sketch ERS Help Acduinos Auto Format Copy for Forum Archive Sketch ‘Arduino 8T ‘Arduino NG or older w/ ATmega8 Arduino NG or older w/ ATmegal68 ‘Arduino Mini PAXIL LilyPad Arduino Serial Port » Burn Bootloader > Lo teiign eee ete ee You mess anty er LE, avin Figura 4.16: Menii de seleccion de plaen del Brtorno Arduino Ahora simplemente haz click en el botén «Upload» en el entomo. Espera unos pooos segundas (deberias ver los LEDs Rx y Tx en la placa ilumindndose). Si la subida es correcta, el mensaje «Done uploading» aparecerd en la barra de estado. Figura 4.17: Boton de subida de la rutina a la placa 8.Buscar el LED que parpadea. ‘Unos pocos segundos después de que la subida termine, deberias ver el LED ambar (amarillo) en Ia placa empezar a parpadear. Si lo hace jenhorabuena! Has conseguido Arduino cargado y ejecutandase, Si tienes problemas, consulta http: //waw.arduino .cc/en/Guide/Troubleshooting. 4.1.3. GNU/Linux Estas instrucciones se centran en Ja distribucién Ubuntu’, para més informacion sobre como instalar el entomo Arduino en otras distribuciones visitar http://www arduino.cc/playground/ Learning/Linux. 1. Ejecutar el Gestor de Paquetes Synaptic (en Sistema > Administracién). 2. Primero necesitas habilitar los repositorios «Universe» y «Multiverse» para que puedas ac- ceder a todos los paquetes que necesitas. = Ira Configuracion > Repositorios = Haz click en Ariadir. 1Més informacién sobre la distiibucién en: http://www. ubuntu.can/ 26 = Marea «Software restringido por copyright o cuestiones legales (mmultiverse)» y «Software libre mantenido por la comunidad (univense)» y haz. click en Ariadir. = Haz click en Cerrar y click en Cerrar en el diélogo «Los repesitorios han cambiado». . Haz. click en el boton Recargar de la barra de herramientas. . Marca para instalar: «sun-javaSzjre>, «goo-av1>, éavrlibo>. Haz click en Aplicar en la barra de herramientas. Haz click en Aplicar en el cuadro de dilogo. Esto instalaré los paquetes seleccionados. 7. Acepta la licencia de Java. 8 Espera hasta completar la instalacion: el cuadiw de dilogo dir «Cambies aplicados, Haz click en Cerrar. 9. Cierra Synaptic. 10, Descarga Ja distribicion de GNU/Linux de Arduino desde http://www.arduino.cc/en/ Vain/Software. Haz doble click en el archivo .zip y arrastra la carpeta que contiene a algiin lugar (por ejempl el Escritorio). LL, Ejecuta el Terminal (en Aplicaciones > Accesorios). 12, Escribe «sudo update-alternatives -config java» y presiona Enter, Teclea el niimero de opcion que tiene «java-.5.0-sum» en él y presiona Enéer. Esto hara de la version de Java de Sun la predeterminada de tu sistema (necesaria porque la version GNU todavia no soporta todo lo necesitado por el entorno Arduino). 13, Haz doble click en éarduino» en el directorio de aplicacion de Arduino, Esto deberia lanzar un didlogo preguntando donde guardas los archivos de tus rutinas de Arduino. Un directorio «Arduino» en tu carpeta home es la ubicacién tipica. Haz click en OK. El entomo Arduino deberia abrirse. 4.2. Introduccién al Entorno Arduino 4.2.1. Barra de herramientas Verify/Compile ®) Chequea el oddigo en busca de errores, Stop © Para el blaques de o6digo con propositos de depuracion, comentarios de linea // Comentarios de ta Iinea empiezan con // y terminan con la siguiente Tinea de oédigo. Como el bloque de comentarios, son ignorados por el programa y no toman espacio en memoria. // este es un comentario de una linea Comentarios de una linea se usan a menudo despues de declaraciones vilidas para proporcionar més informacion sobre qué Ileva la declaracion 0 proporcionar un recordatorio en el futuro. 5.2. Variables Una variable es una forma de lamar y almacenar un valor nmmérico para usarse después por el programa. Como su nombre indica, las variables son niimeres que pueden cambiarse continuamente al contrario que las constantes, cuyo valor nunca cambia. Una variable necesita ser declarada y, opcionalmente, asignada al valor que necesita para ser almacenada. int inputVariabl //declara ma variable y asigna el valor a 0 inputVariable = analogRead(2); //ajusta la variable al valor del pin /fenalégico 2 32 Una vez que una variable ha sido asignada, o reasignada, puedes testear su valor para ver si cumple ciertas condiciones, o puedes usarlo directamente. if GnputVariable < 100) //comprueba si 1a variable es menor que 100 { inputVariable = 100; //si es cierto asigna el valor 100 + delay(inputVariable); //usa 1a variable como retardo declaracién de variable ‘Todas las variables tienen que ser declaradas antes de que puedan ser usadas. Declarar una variable significa definir su tipo de valor, como int, long, float, etc., definir un nombre especifico, y, opcionalmente, asignar un valor inicial. Esto sélo necesita hacerse una vez. en un programa pero 1 valor puede cambiarse en cualquier momento usando aritmética y varias asignaciones. int inputVariable = Una v deficin iable puede ser declarada en un mimero de posiciones en todo el programa y donde esta n tiene lugar determina que partes del programa pueden usar la variable. ambito de la variable Una variable puede ser declarada al comienzo del programa antes del void setup(), localmente dentro de fimciones, y algunas veces en un bloque de declaracién, por ejemplo bucles for. Donde la variable es declarada determina el dmbito de la variable, o la abilidad de ciertas partes de un programa de hacer uso de la variable. Una variable global es una que puede ser vista y usada por cualquier fiunci6n y declaracion en un programa. Esta variable se declara al comienzo del programa, antes de la funci6n setup(). Una variable local es una que se define dentro de uma funci6n o como parte de un bucle for. Sélo «8 visible y silo puede ser sada dentro de la funci6n en la cual fie declarada. Ademis, es posible tener dos o més variables del mismo nombre en diferentes partes del programa que contienen diferentes valores. int value; //*value’ es visible por cualquier funcién void setup) { //oo se necesita setup } void loop() t for(int i=0; i<20;) //?i? es sélo visible dentro del bucle for t its 33 3 float f; //’f? es s61o visible dentro de loop 3 5.3. Tipos de datos byte Byte almacena un valor numérico de 8 bits sin puntos decimales. Tienen un rango de 0a 255. byte soneVariable = 180; //declara *someVariable’ como un tipo byte int Enteros son los tipos de datos primaries para almacenamiento de nimeros sin puntos decimales y almacenan un valor de 16 bits con un rango de -32,768 a 32,767, int someVariable = 1500; //declara ’someVariable’ como tipo int long ‘Tipo de datos de tamaiio extendido para enteros largos, sin puntos decimales, almacenados en un valor de 32 bits con un rango de -2,146,483,648 a 2,147,483,647. long soneVariable = 90000; //declara *someVariable’ como tipo long float Un tipo de datos para nfimeros en punto flotante, o niimeros que tienen un punto decimal. Los niimeres en punto flotante tienen mayor resoluci6n que los enteros y se almacenan como valor de 32 bits con un rango de -3.1028235E 38 a 340282355 38. float someVariable = 3.14; //declara ’someVariable’ como tipo float arrays Unamray es una colecci6n de valores que son accedides con un indice numérico, Cualquier valor en el array debe llamarse escribiendo el nombre del array y el indice numérico del valor. Los arrays estén indexados a cero, con el primer valor en el array comenzando con el indice nimero 0, Un array necesita ser declarado y opcionalmente asignarle valores antes de que puedan ser usados, int mydrray[] = {value0, valuet, value? Asimismo es posible declarar un array declarando el tipo del array y el tamaiio y nego asignarle valores a una posicion del indice. By int myArray[5]; //declara un array de enteros con 6 posiciones nyArray[3] = 10; //asigna a la cuarta posicién del indice el valor 10 Para recibir un valor desde un array, asignamos una variable al array y la posicion del indice: a yArray[3]; //x ahora es igual a 10 5.4. Aritmética Los operadores aritméticos incluyen suma, resta, multiplicacion y diferencia, producto 0 cociente (respectivamente) de dos operandos. livision. Retornan la suma, La operacién es levada a cabo usando del tipo de datos de los operandos, asi 9/4 devuelve 2 en lugar de 2.25, Si los operandos son de tipos diferentes, el tipo mayor es usado para el calculo. Nota: Usar el operador cast, por ejemplo (intJmyFloat para convertir un tipo de variable a otro al vuelo, asignaciones compuestas Las asignaciones compuestas combinan una operacion aritmética con una asignacién de varia- ble, Estas son muy frecuentemente encontradas en bueles for. Las asignaciones compuestas mas comunes incluyen: xt; //lo mismo que x = xt x //lo mismo que x = x-1 x 4= ys //lo mismo que x = xty x -= y; //lo mismo que x = x-y x 4 y; //lo mismo que x = xy x /= y; //lo mismo que x = x/y operadores de comparacién. Las comparaciones de una variable o constante con otra se usan a menudo en declaraciones if para comprobar si un condicion especifica es cierta. //x es igual ay //x no es igual ay //x es menor que y //x es mayor que //x es menor o igual que y //x es mayor 0 igual que y MMM MO 35 operadores légicos Los operadores Jégices son normalmente una forma de comparar dos expresiones y devuelven ‘TRUE 0 FALSE dependiendo del operador. Hay tres operadores logicos, AND, OR y NOT, que se usan a menudo en declaraciones if. //4ND logico: if (00 && x<5) //verdadero sélo si las dos expresiones son ciertas //0R logico: f(O0 || y>0) //verdadero si al menos una expresion es cierta //MOT logico: i£(1G20)) //verdadero S610 si la expresién es falsa 5.5. Constantes El lenguaje Arduino tiene unos cuantos valores predefinides que se Haman constantes. Se usan para hacer los programas mas legibles. Las constantes se clasifican en grupos. true/false Estas son constantes Booleanas que definen niveles logicos. FALSE se define como 0 (cero) mientras TRUE es 1 0 un valor distinto de 0. if(b == TRUE) t doSomething; 3 high/low Estas constantes definen los niveles de pin como HIGH 0 LOW y se usan cuando se len o se escriben los pines digitales. HIGH esta definido como el nivel 1 logico, ON 6 5 V, mientras que LOW es el nivel ogico 0, OFF 60 V. digitalrite(13, HIGH) ; input/output Constantes usadas con Ja fincion pinode() para definir el modo de un pin digital como INPUT u OUTPUT. pinMode(13, OUTPUT) ; 36 5.6. Control de flujo if Las sentencias if comprucban si cierta condicién ha sido alcanzada y ejecutan todas las sen= tencias dentro de las llaves si la declaraci6n es cierta. Si es falsa el programa ignora la sentencia. if(someVariable ?? value) t doSomething; 3 Nota: Cuidate de usar «=» en lugar de «==» dentro de la declaracién de la sentencia « else if+. else permite tomar decisiones = 1000) { doThingB ; 3 else { doThing?; 3 37 for La sentencia for se usa para repetir un bloque de declaraciones encerradas en Haves un mimero especifioo de veces. Un contador de incremento se usa a menudo para incrementar y terminar el bucle, Hay tres partes seperadas por punto y coma (;), en la cabecera del bucle. for(inicializacion; condicion; expresion) t doSomething; 3 La inicializacion de una variable local, 0 contador de incremento, sucede primero y una sola una vex. Cada vez que pasa el bucle, la condicién siguiente es comprobada. Si la condicién devuelve TRUE, las dedaraciones y expresiones que siguen se ejecutan y la condicion se comprueba de m se vuehe FALSE, el bucle termina. //declava i, comprueba si es menor //que 20, incrementa i en 1 digitalWrite(13, HIGH); //activa el pin 13, delay (250) ; //pausa por un 1/4 de segundo digitalWwrite(13, LOW); //desactiva el pin 13 delay (250) ; //pausa por un 1/4 de segundo 3 while EI bucle ufile se repetin’ continuamente, e infinitamente, hasta que la expresién dentro del paréntesis se vuelva falsa. Algo debe cambiar la variable testeada, o el bucle while mea saldra. Esto podria estar en tu cédigo, como por ejemplo una variable incrementada, 0 una condicién externa, como un sensor de comprobacién. while(someVariable 7? value) t doSomething; 3 while(someVariable < 200) //comprueba si es menor que 200 t doSomething; //ejecuta las sentencias encerradas soneVariablet+; //sncrementa la variable en 1 do... while 38 do t doSomething; }uhile(someVariable 77 value) ; do { x = readSensors(); //asigna el valor de readSensors() a x delay(50); //pausa de 50 milisegundos Yuhile(x < 100); //repite si x es menor que 100 5.7. B/S digital pinMode(pin, mode) ‘Se usa en zoid setup() para configurar un pin especifico para que se comporte 0 como INPUT 0 como OUTPUT. pintMode(pin, OUTPUT); //ajusta *pin? como salida Los pines digitales de Arduino estan ajustados a INPUT por defecto, por lo que no necesitan ser doclaradlos explicitamente como entradas con pinMode(). Los pines configurados como INPUT se dice que estén e un estado de alta impedancia, Hay también convenientes resistencias de pull-up de 20KOhm, integradas en el chip ATmega que pueden ser accedidas por software, A estas resistencias pull-up integradas se accede de la siguiente manera. pinMode(pin, INPUT); //ajusta *pin? como entrada digitalWrite(pin, HIGH; //actiiva la resistencia de pull-up Las resistencias de pulbup se usarian normalmente para conectar entradas como interruptores. Los pines configurados como OUTPUT se dice que estén en un estado de baja impedancia y pueden proporcionar 40 mA a otros dispesitivas /circuitos. Nota: Cortocircuitos en los pines de Arduino 0 corriente excesiva puden daiiar o destruir el pin de salida, o daiiar el chip ATmega. A menudo es una buena idea conectar un pin OUTPUT a un dispositivo externo en serie con una resistencia de 4700hm o 1KOhm. digitalRead(pin) Lee el valor desde un pin digital especificado con el resultado HIGH 0 LOW. El pin puede ser especificado 0 como una variable o como una constante (0 - 13). value = digitalRead(Pin); //ajusta *value? igual al pin de entrada 39 digitalWrite(pin, value) Devuelve o el nivel logico HIGH 0 LOW a (activa o desactiva) un pin digital especificado. El pin puede ser especificado como una variable o constante (0 ~ 13). digitalWrite(pin, HIGH); //ajusta *pin? a HIGH //Bjemplo de programa. int led = 13; //conecta *led? al pin 13 int pin //conecta "pushbutton? al pin 7 int value = 0; //variable para almacenar 1 valor leido void setup() { pinMode(led, OUTPUT); //ajusta el pin 13 como salida pinMode(pin, INPUT); — //ajusta el pin 7 como entrada 3 void loop() t value = digitalRead(pin); //ajusta ?value’ igual al pin de entrada digitalwrite(led, value); //ajusta *led? al valor del boton 3 5.8. B/S analogica analogRead(pin) Lee el valor desde un pin analégioo especificado con una resolucién de 10 bits. Esta fumeién sélo trabaja en los pines analégicos (0 - 5). Los valores enteros devueltas estén en el rango de 0 a 1023, value = analogRead(pin); //ajusta *value’ igual a °pin? Nota: Las pines analogicos al contrario que los digitales, no necesitan ser declarados al principio como INPUT u OUTPUT. analogWrite(pin, value) Excribe un valor psendo analogico usando modulacién por ancho de pulso («PWM en inglés) au pin de salida marcado como PWM. En los Arduinos més nueves con el chip ATmegal68, esta fimci6n trabaja en los pines 3, 5, 6,9, 10 y 11. Los Arduinos mas antiguos con un ATmega8 s6lo soporta los pines 9, 10 y 11. El valor puede ser especificado como una variable o constante con un valor de Qa 255. analogiirite(pin, value); //escribe *value? al ’pin? analogico 40 Cuadro 5.1: Relacin valor-salida con analogWrite() El valor de salida varia de 0 a 5 V segtin el valor de entrada (de 0a 255) en funci6n del tiempo de pulso, Si # es el tiempo de puko, Ja tabla 5.1 mmestra Ja equivalencia entre el valor y la salida en fimci6n del tiempo. Como esta es una finci6n hardware, el pin generar una onda estitica después de una Hama da a analogWrite en segundo plano hasta Ja siguiente Hamada a analogWrite (0 una llamada a digitalRead o digitalWrite en el mismo pin). int led = 10; //LED con una resistencia de 220chm en el pin 10 int pin //potenciometro en el pin analogico 0 int value; //valor para lectura void setup(){} //setup no es necesario void loop) { value = analogRead(pin); //ajusta ’value? igual a °pin’ value /= 4; //convierte 0-1023 a 0-255 analogirite(led, value); //saca la sefial PWM al led + 5.9. Tiempo delay(ms) Pausa tu programa por la cantidad de tiempo especificada en milisegundos, donde 1000 es igual a 1 segundo. delay(1000); //espera por un segundo millis() Devuelve el niimero de milisegundos desde que la placa Arduino empezé a ejecutar el programa actual como un valor Jong sin signo, value = millisO; //ajusta >value? igual a millis© Nota: Este mimero se desbordara (resctear de nuevo a cero), después de aproximadamente 9 horas. 41 5.10. Matematicas min(xy) Caleula el minimo de dos mimeros de cualquier tipo de datos y devuelve el nimero mas pequeiio, value = min(value, 100); //asigna a ’value’ al mas pequefio de *value’ o 100, //asegurandose que munca superara 100. max(x,y) Caleula el maximo de dos twimeros de cualquier tipo de datos y devuelve el niimero més grande, value = max(value, 100); //asigna a ’value’ al més grande de ’value’ o 100, //asegurandose que es al menos 100. 5.11. Aleatorio randomSeed(seed) Asigna un valor, o semilla ( en inglés), como el punto de partida para la fiunci6n random(). randomSeed(value); //asigna *value? como la semilla aleatoria Como el Arduino es incapaz, de crear un niimero verdaderamente aleatorio, randomSeed te permite colocar una variable, constante, u otra fncién dentro de la funcién random, lo cual ayuda a generar mas miimeres «random» aleatories. Existen una variedad de diferentes semillas, 0 finciones, que pueden ser usadas en esta funcién incluyendo millis() 0 incluso analogRead() para leer ruido dléctrico a través de un pin analigico. random(max) random(min, max) La funcion random te permite devolver niimeros pseudo aleatorios en un rango especificado por los valores min y mar. value = random(100, 200); //asigna a ’value’ un nimero aleatorio //entre 100 y 200. Nota: Usar esto después de usar la funcién randomSead(). int randNumber; //variable para almacenar el valor //aleatorio int led = 10; //LED con una resistencia de 220chm //en el pin 10 42 void setup(){} //setup no es necesario void 1oop() { randonSeed (mil1is()) ; //asigna millis() como semilla randliumber = random(255) ; //numero aleatorio de 0 a 255 analogirite(led, randNumber); //salida de la sefial PWM delay (500) ; 3 5.12. Serie Serial.begin(rate) Abre el puerto serie y asigna la tasa de baudios para la transmision de datos serie. La tipica tasa de bandios para comunicarse con el ordenador es 9600 aunque otras velocidades estan soportadas. void setupQ { Serial.begin(9600); //abre el puerto serie //ajusta la tasa de datos a 9600 bps 3 Nota: Cuando se usa la comunicacion serie, los pines digitales 0 (Rx) y 1 (Tx) no pueden ser usados al mismo tiempo. Serial.printIn(data) Imprime datos al puerto serie, seguido de un retorno de carro y avance de Linea autométicos. Este comando toma la misma forma que Serial.priné(), pero es més ficil para leer datos en el Serial Monitor', Serial.printin(analogValue); —//envia el valor de ?analogValue? //Bjemplo de aplicacion void setupO { Serial .begin (9600) ; //ajusta al serie a 9600 bps 3 void loop) t Serial.printIn(analogRead(0)); //envia valor analogico delay (1000) ; //pausa por 1 segundo 3 TMs informacion en: 4.2 Introduccién al Entorno Arduino 43 Bibliografia [1] EVANS, Brian W., 2007) Antuino Programming Notebook. [2] SANTO ORCERO, David, (2007), «Hardware Libre», Todo Linur, Madrid: Studio Press. Pp: 1217. [3] ARDUINO - Wikipedia, the free encyclopedia, (tiltima modificacién, Marzo 2008). Disponible en: http: //en.wikipedia.org/wiki/Arduino [4] ARDUINO : Homepage, (\iltima modificacién, Marzo 2006). Disponible en: http://www. arduino.cc/es/ [5] ARDUINO - Homepage, (iiltima modificacién, Julio 2008). Disponible en: http://www. arduino.cc [6] WIRING, (Gltima modificacién, Junio 2008). Disponible en: http://www. wiring .org.co Apéndice A Ejemplos de Aplicacién con Arduino A.l. Salida digital ca ——W—or Pini3 220R LED Figura A.1: Esquema de salida digital Este es el programa bnisico una salida analogica por lh salida pusante. Esto podria usarse para atenuar ¢ iluminar un LED o posteriormente controlar un servomotor. El siguiente ejemplo ilumina y atenua lentamente un LED usando bucles for. int ledPin = 9; //pin PWM para el LED void setup(){} void loop() t for(int i=0; i<=255; i++) //incrementa el valor para i t analogifrite(ledPin, i); //asigna el nivel de brillo a i delay(100) ; //pausa 100 ms 3 for(int i=255; i>=0; i--) //decrementa el valor para i t analogWrite(ledPin, i); //asigna el nivel de brillo a i delay(100) ; //pausa 100 ms 3 3 A.4. Entrada de potenciometro Pin +5Vv 10kPot = Figura A.4: Esquema de entrada de potenciometro Usando un potenciometro y una de los pines de conversi6n anal6gico-digital (ADC) de Arduino ¢s posible leer valores de 0 a 1024, El siguiente ejemplo usa um potenciometro para controlar una fiecuencia de parpadeo de un LED. int potPin int ledPin 0; //pin de entrada para el potencionetro 13; //pin de salida para el LED void setup() t pinMode(ledPin, OUTPUT); //declara ledPin cono OUIPUT 47 3 void loop() { + digitalWrite(ledPin, HIGH); delay (analogRead (potPin)) ; digitalWrite(ledPin, LOW); delay(anallogRead (potPin)) ; //activa ledPin //paasa el programa //desactiva ledPin //pausa el programa 48 Apéndice B Esquematico de Arduino Diecimila 49

You might also like