0% encontró este documento útil (0 votos)
61 vistas138 páginas

Arduino

Introducción a Arduino Massimo Banzi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
61 vistas138 páginas

Arduino

Introducción a Arduino Massimo Banzi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
i Introduccion i aArduino LA PLATAFORMA DE CODIGO ABIERTO PARA LA CREACION DE PROTOTIPOS ELECTRONICOS. (0) mls pe a) sprepnge BAER RASST DigitaL. (Pw) HEE Massimo Banzi cofundador de Arduino y Michael Shioh He Make: ANAYN Introduccién a Arduino que esté tomando el mundo de los aficionados al disefio por la tormenta. Esta completa introduccién muchas ideas para proyectos y le ayuda a Arduino le da a empezar de inmediato. De organizarse a poner los toques finales en su prototipo, toda la informacién que necesita es correcta en este breve libro. » Disefio de interaccién e informatica ica. » El entorno de desarrollo de hardware y software de Arduino. » Conceptos basicos de la electricidad y la electronica. »» Prototipos en una placa sin soldadura »» Dibujo de un diagrama esquematico. Y més. Con hardware de bajo costo y componentes de software de cédigo abierto que puede descargar gratis, empezar usar Arduino es muy fécil. Para ‘mezclar con los ejemplos introductorios en este libro. Todo lo que necesitas es un cable USB Arduino, USBA-B y un LED. Unete a las decenas de miles de aficionados que han descubierto esta increible (y educativa) plataforma de prototipos. Escrito por el co-fundador del proyecto Arduino, Introduccién a Arduino te ayuda a divertirte. Mustraciones por Elisa Canducci Make: ussi2.s9 CAN $12.99 s ISBN: 978-0-596-15551-3 [Link] O'REILLY | 51299 DANN i Introduccion a Arduino Massimo Banzi Primera edicién O'REILLY” BEING + CAMBRIDGE + FARNHAM + KOLN + SEBASTOPOL - TAIPE! + TOKYO Introduccién a Arduino by Massimo Banzi Copyright © 2009 Massimo Bana. All rights reserved. Printed in US.A, Publicado por Make:Books, Una huella de Maker Media, Una divisién de O'Reilly Mecia, Inc 1005 Gravenstein Highway North, Sebastopol, CA 95472 O'Reilly books Pueden ser comarados para uso educativo, comercial o de promocién de ventas. Para tener més informacién, departamento de ventas corporative / institucional: 800-988-9938 or corporate@[Link], Historial de impresin: October 2008: Fist Edition Editor: Dale Dougherty Editor Asociado: Dan Woods Editor ejecutivo: Brian Jepson Director creative: Daniel Carter Disefiador: Brian Scott Jefe de produecién: Terry Bronson Editor de copia: Nancy Kotary Indexador: Patt Schiendelman lustraciones: Elsa Canducei Elogotipo de O'Reilly es una marca registrada de O'Reilly Mecia, Inc. Las designaciones dela serie Make: Projects Ylas referencias relacionadas son marcas reistradas de O'Relly Media, Inc. Las marcas comerciales de terceros utiizadas en este trabajo son propiedad de Sus respectivos propietarios, “Mensaje importante a nuestros lectores: Su seguridad es su propia responsabilidad, incuyendo el uso apropiado del equipo y equipo de seguridad, y determinar si usted tiene habildad y experiencia adecuadas. La electricidad y ‘otros recursos utilizados para estos proyectos son peligrosos a menos que se utlicen adecuadamente y con las, precauciones adecuadas,incluido el equipo de seguridad, Algunas fotos ilustratvas na representan precauciones ‘© equinos de seguridad, con el fin de mostrar los pasos de proyecto con mayor claridad, Estos proyectos no estan destinados a ser utlizados por nos El uso de las instruccionesy sugerencias de Introducién @ Arduino es bajo su propio riesgo. O'Reilly Mest, nc. y €elautor renuncian a toda responsabilidad por cvalaule dafo, lesién o gasto resultante. Es su responsabilidad _asegurarse de que sus actividades cumplen con las leyesaplicables,Incluidos los derechos de auto. ISaN: 978-0:596-15551.3 Contenido Prefacio . Aintroduccin . . Audiencia deseada £Qué es la informatica fisica? 2/ El Camino del Arduino 3 Prototipado. 6 Jugueteando 7 Remiendo. 8 Curvado del Circuito. ceveeeeeeseeee ce -10 Teclado Hacks. 2 Nos encanta Junk! 4 Juguetes de Hacking, cS Colaboracién, 16 3/ La Plataforma Arduino 19 El hardware de Arduino. 19 El Software (IDE) 22 Instalacién de Arduino en su computadora, . coven 2 Instalacién de controladores: Macintosh 23 Instalacién de controladores: Windows. 23 Identificacién de puertos: Macintosh... 2.2... ceteeeeteee eee DS Identificacién del Puerto: Windows 26 4/ Realmente empezando con Arduino Sensores y Actuadores. Parpadeando un LED. Pasame el Parmesano. 34 Arduino no es para Quitters 35 Real Tinkerers Escribir Comentarios. ....00.00 sccsseereeeesesereeere eee 3S El Cédigo, paso a paso. 36 Lo que vamos a construlr 38 eQuE es la electricidad? ee. e cee ee cesar teen ects tte te eere eee 89 Uso de un pulsador para controlar el LED. 42 Como funciona esto? Aa Un circuito, mil comportamientos ......66. cseeereseeseeeeeeees 45 5/ Entrada y salida avanzadas . . betes 53 Prueba de otros sensores de encendido / apagado.... .. 258 Control de luz con PWM. 56 Utilice un sensor de luz en lugar de un pulsador. 62 Entrada analégica. 64 Pruebe otros sensores analégicos. 68 Comunicacién serial ........cecsecescseseevsveeeeesevetseeeteee see 168 Conduccién de cargas mas grandes (motores, limparas y similares) 70 Sensores complejos. costes 70 6/Hablando con la nube . . sete cece eee eB Planificacion. cee . cee 75 Codificacién. 76 Montaje del Circuito. ..... wees cee coven 83 ‘Aqui es cémo montarto. a4 7/ Solucién de problemas 87 Prueba de la Junta. 38 Prueba de su circuito de Breadboard. 89 Aisiar los problemas... essceesesesssessseeesiseesieeiseeeeseseesees 290 Problemas con el IDE. 90 Como obtener ayuda en linea 91 Apéndices .. eee reer.) ‘Apéndice A / El tablero de pan...... . 93 Apéndice B / Lectura de los Reactores y Condensadores. ...2.2+c+s+eese+1+98 Apéndice C/ La referencia répida 97 Apéndice D / Lectura de diagramas esquemiticos. 110 Prefacio Hace unos afios me dieron un reto muy interesante: ensefiar a los disefiadores el minimo en la electrénica para que pudieran construir prototipos interactivos de los objetos que estaban disefiando. Comencé a seguir un instinto subconsciente para ensefiar la electrénica de la misma manera que me ensefiaron en la escuela. Mas tarde me di cuenta de que simplemente no estaba funcionando tan bien como me gustaria, y comenz6 a recordar sentado en que se me lanz6 sin una clase, aburrido como el infierno, escuchando toda esa teor ninguna aplicacién practica pare ello, En realidad, cuando estaba en la escuela ya conocfa la electronica de una manera muy empirica: muy poca teor‘a, pero mucha experiencia practica. Empecé a pensar en el proceso por el cual aprendi la electrénica » Desmonté cualquier dispositive electrénico que pudiera poner en mis manos. » Aprendi lentamente cusles eran todos esos componentes. » Empecé a mezclar con ellos, cambiando algunas de las conexiones dentro de ellos y viendo lo que le pasé al dispositivo: normalmente algo entre una explosién y una nube de humo. » Empecé a construir algunos kits vendidos por revistas de electrénica. » Combiné dispositivos que habia hackeado, y reutilizacion de kits y otros circuitos que encontré en revistas para hacerlos hacer cosas nuevas. Como un nifio, siempre me fasciné descubrir cémo funcionan las cosas; Por lo tanto, solia separarlos. Esta pasién crecié mientras apuntaba cualquier objeto no utilizado en la casa y luego lo desmonté en pedacitos. Eventualmente, la gente me trajo todo tipo de dispositivos para diseccionar. Mis més grandes proyectos en ese momento eran un lavavaiillas y una computadora temprana que provenia de una oficina de seguros, que tenia una impresora enorme, tarjetas electrénicas, lectores de tarjetas magnéticas y muchas otras partes que resultaron muy interesantes y desafiantes para desmontar completamente. Después de bastante de esta diseccién, sabia qué componentes electrénicos eran y mas ‘© menos lo que hicieron. Ademas, mi casa estaba llena de viejas revistas electrénicas que mi padre debié haber comprado a principios de los afios setenta. Pasé horas leyendo los articulos y mirando los diagramas de circuito sin entender mucho. Este proceso de leer los articulos una y otra vez, con el beneficio del conocimiento adquirido al desmontar circuitos, creé un circulo virtuoso lento. Un gran avance llegé una Navidad, cuando mi papé me dio un kit que permitia a los adolescentes a aprender sobre la electrénica. Cada componente se alojaba en un cubo de plastico que se acoplaba magnéticamente con otros cubos, estableciendo una conexién; El simbolo electrénico fue escrito en la parte superior. Poco sabia yo que el juguete era también un hito del disefio alemén, porque Dieter Rams lo disefié en los afios 60, Con esta nueva herramienta, podrfa répidamente montar circuitos y probarlos para ver qué pasé. El ciclo de prototipado fue cada vez més corto. Después de eso, construi radios, amplificadores, circuitos que producirian ruidos horribles y sonidos agradables, sensores de lluvia y pequefios robots. He pasado mucho tiempo buscando una palabra en inglés que resumirfa esa forma de trabajar sin un plan especifico, comenzando con una idea y terminando con un resultado completamente inesperado. Finalmente, "jugueteat" vino adelante. Reconoci cémo esta palabra se ha utilizado en muchos otros campos para describir una forma de operar y retratar a las personas que emprenden un camino de exploracién. Por ejemplo, la generacién de directores franceses que dieron a luz a la "Nouvelle Vague” fueron llamados los "tinkerers", La mejor definicién de retoque que he encontrado viene de una exposicién que se llevé a cabo en el Exploratorium en San Francisco: Bricolaje es lo que sucede cuando se intenta algo que no saben cémo hacer, guiado por el capricho, fa imaginacién y la curiosidad. Cuando usted juguetea, no hay instrucciones, pero tampoco hay fracasos, no hay formas correctas 0 incorrectas de hacer las cosas. Se trata de averiguar cémo funcionan las cosas y volverlas a trabajar. vi Introduceién a Axduine Contraptions, méquinas, wildly mismatched los objetos que trabajan en armonia - esto es la materia del retoque. El bricolaje es, en su forma mds bdsica, un proceso que combina juego e investigacién. —[Link]/tinkering, Desde mis primeros experimentos sabia cudnta experiencia necesitarias para poder crear un circuito que haria lo que querias a partir de los componentes basicos. Otro gran avance llegé en el verano de 1982, cuando fui a Londres con mis padres y pasé muchas horas visitando el Museo de la Ciencia. Acababan de abrir una nueva ala dedicada a las computadoras, y siguiendo una serie de experimentos guiados, aprendi los fundamentos de la matemética binaria y la programacién. Alli me di cuenta de que en muchas aplicaciones, los ingenieros ya no estaban construyendo circuitos a partir de componentes basicos, sino que en su lugar implementaban mucha inteligencia en sus productos usando microprocesadores. El software estaba reemplazando muchas horas de disefio electrénico, y permitirfa un ciclo més corto de manipulacién. Cuando volvi empecé a ahorrar dinero, porque queria comprar una computadora y aprender a programar. Mi primer y mas importante proyecto después de eso fue usar mi nueva computadora 2X81 para controlar una maquina de soldar. Sé que no suena como un proyecto muy emocionante, pero habia una necesidad para él y era un gran desafio para mi, porque acababa de aprender cémo programar. En este punto, quedé claro que escribir lineas de cédigo requeriria menos tiempo que modificar circuitos complejos. Veinte afios més tarde, me gustaria pensar que esta experiencia me permite enseftar a la gente que ni siquiera recuerdo haber tomado ninguna clase de mateméticas y para infundirlos con el mismo entusiasmo y la capacidad de juguetear que tuve en mi juventud y tener Desde entonces, —Massimo Prefacio vii Expresiones de gratitud Este libro esta dedicado a Luisa y Alexandra En primer lugar quiero agradecer a mis socios del Equipo Arduino David Cuarteles, David Melis, Gianluca Martino, and Tom Igoe. Es una experiencia incre‘ble trabajar con ustedes. Barbara Ghella, no lo sabe pero, sin su preciado consejo, Arduino y este libro tal vez no hayan pasado nunca, Bill Verplank por haberme ensefiado mas que Computacién Fisica, Gillan Crampton-Smith por darme una oportunidad y por todo lo que he aprendio de olla Hernando Barragan por el trabajo que ha realizado en Cableado. Brian Jepson por ser un gran editor y entusiasta partidario todo el tiempo. Nancy Kotary, Brian Scott, Terry Bronson y Pati Schiendelman por convert lo que escrbi en un libro terminado, ‘Quiero agradecer a mucha més gente, pero Brian me dice que me estoy quedando sin espacio, ast que voy a ‘enumerar un pequefio nimero de personas que tengo que agradecer por muchas razones: ‘Adam Somlai-isher lat Cortellet, Alberto Pezzott, ‘Alessandro Germinasi, Alessandro Masserdott, Andrea Piccolo, ‘Anna Capen, Casey Reas, Chris Anderson, Claudio Moderni Clementina Coppin, Concetta Capecchi, Csaba Waldhauser, Dario Buzzin Dario Molinar, Dario Parravicin, Donata Piccolo, tdoardo Brambilla Elsa Canducc Fabio Violante, Fabio Zanola, Fabrizio Pignoloni, Flavio Mauri, Francesca Mocellin Francesco Monico, Giorglo Olivere, Giovanna Gard, Giovanni Battistini, Heather Martin, Jennifer Bove, Laura Dellamotta, Lorenzo Parravicini, Luca Rocco, Marco Baloni, Marco Eynard, Maria “Teresa Longoni, Massimiliano Bolondi, Matteo Rivolta, Mathias Richter, Maurizio Proa, Michael Thorpe, Natala Jordan, Ombretta Banal, Oreste Banal, Oscar Zogela, Pietro Dore, Prof. Salvion, Raffaella Ferrara, Renzo Giusti, Sana Athanas, Sara Carpentier Sigrid Wiederhecker, Stefano Mit, Ubi De Feo, Veronika Bucko. vidi Introduceién @ Arduino Cémo contactarnos Hemos verficado la informacién de este libro de a mejor manera posible, pero puede que encuentre cosas que han cambiado (incluso que hemos ‘cometide errores!), Como lector ée este libro, puede ayudarnos a mejorar {uturas ediciones envidnconos sus comentarios. Por favor, higanos saber ‘acerca de cualquier error, inexactitue, declaraciones engafosas 0 confusas y ‘erores tipogrdficas que encuentre en cualquier parte de este libro, ‘También higanos saber qué podemos hacer para que este libro sea ms Util para usted, Tomamos en serio sus comentarios ytrataremos de incorporar sugerencias razonables en futuras ediciones. Puede escribienos a Media Maker 1005 carretera de gravenstein norte Sebastopol, CA 95472 (09) 998-9938 (en los Estados Unidos o Canad) (707) 828-0515 (internacional / local) (707) 828-0108 (fax) “Maker Media es una division de O'Reilly Media dedicada enteramente ala reciente comunidad de personas ingeniosas que creen que silo puedes Imaginar, puedes hacerlo, Consistiendo en la revista MAKE, la revista CRAFT, Maker Fare, asi como la sere de libros Hacks, Make: Projects y OV Science, Maker Media fomenta la mentalidad Do-t-voursef proporcionanda Inspiracine instruccién creativa. Para mas informacién sobre Maker Media, vsitenos en linea: HACER [Link] CRAFT: [Link] Hacer Maker: www [Link] Hacks: www [Link] Para comentar el libro, envie un correo electrénico a bookauestions@[Link], Elstio web de O'Reilly para Introduccién a Arduino incluye ejemplos, erratas Yy planes para futuras ediciones. Puede encontrar esta gina en ‘[Link]/getstartedarduino, Para obtener més informacién sobre este libro y otros, consulte el sitio web de OReilly: [Link] Para obtener més informacién sobre Arduino, incuidos foros de discusion y documentacisn adicional, consute [Link] 1/ Introduccién Arduino es una plataforma de computacion fisica de cédigo abierto basada en una sencilla tarjeta de entrada / salida (E / S) y un entorno de desarrollo que implementa el lenguaje de procesamiento (www. [Link]). Arduino puede usarse para desarrollar objetos interactivos independientes o puede conectarse al software de su computadora (como Flash, Processing, VVVV 0 Max / MSP). Los tableros se pueden montar a mano o se pueden adquirir preensamblados; El IDE de cddigo abierto (Integrated Development Environment) se puede descargar gratuitamente desde [Link]. Arduino es diferente de otras plataformas en el mercado debido a estas caracteristicas: »Es un entorno multiplataforma; Puede funcionar en Windows, Macintosh y Linux. »Se basa en la programacién de procesamiento IDE, un entorno de desarrollo facil de usar utilizado por artistas y disefiadores. »Se programa a través de un cable USB, no de un puerto serie. Esta caracteristica es util, porque muchas computadoras modernas no tienen puertos serie. »Se trata de hardware y software de cédigo abierto, si lo desea, puede descargar el diagrama de circuitos, comprar todos los componentes y hacer su propio, sin pagar nada a los fabricantes de Arduino. duceién 1 » El hardware es barato, La tarjeta USB cuesta unos 20 € (actualmente, unos 35 dilares) y la sustitucién de un chip quemado en la placa es facil y cuesta no més de 5 € 0 4€. Asi que puedes permitirte cometer errores. » Hay una comunidad activa de usuarios, por lo que hay muchas personas que pueden ayudarte. » El Proyecto Arduino se desarrollé en un entorno educativo y por lo tanto es ideal para los recién llegados para que las cosas funcionen rdpidamente. Este libro esté disefiado para ayudar a los principiantes a comprender los beneficios que pueden obtener al aprender a usar la plataforma Arduino y adoptar su filosofia Audiencia deseada Este libro fue escrito para los usuarios “originales” de Arduino: disefiadores y artistas. Por lo tanto, trata de explicar las cosas de una manera que podria conducir a algunos ingenieros locos. En realidad, uno de ellos llamé a los capitulos introductorios de mi primer borrador "fluff". Ese es precisamente el punto. Seamos realistas: la mayoria de los ingenieros no son capaces de explicar lo que hacen a otro ingeniero, y mucho menos aun ser humano normal. Ahora vamos a profundizar en la pelusa. NOTA: Arduino se basa en el trabajo de tesis que Hernando Barragan hizo en la plataforma Wiring mientras estudiaba bajo Casey Reas y yo en IDII Ivrea. Después de que Arduino comenzé a ser popular, me di cuenta de cémo los experimentadores, aficionados, y los hackers de todo tipo estaban empezando a utilizarlo para crear objetos hermosos y locos. Me di cuenta de que todos ustedes son artistas y disefiadores por derecho propio, asi que este libro es para ustedes también. Arduino nacié para ensefiar a Interaction Design, una disciplina de disefio que sittia al prototipo en el centro de su metodologia. Hay muchas definiciones de Interaction Design, pero la que yo prefiero es: Interaction Design es el disefio de cualquier experiencia interacti En el mundo actual, Interaction Design se ocupa de la creacién de experiencias significativas entre nosotros (los seres humanos) y los objetos. Es una buena manera de explorar la creacién de experiencias hermosas -y quizas incluso polémicas- entre nosotros y la tecnologia. Interaction Design fomenta el disefio a través de un proceso iterativo basado en prototipos Introduccién a Arduino 2 De fidelidad cada vez mayor. Este enfoque, también parte de algunos tipos de disefio. "convencional", puede extenderse para incluir la creacién de prototipos con tecnologia; En particular, la creacién de prototipos con electrénica, El campo especifico de Disefio de Interaccién involucrado con Arduino es Computacién Fisica (0 Disefio de Interaccién Fisica) éQué es la informatica fisica Computacién fisica utiliza la electrénica para el prototipo de nuevos materiales para los disefiadores y artistas. Implica el disefio de objetos interactivos que pueden comunicarse con humanos usando. sensores y actuadores controlados por un comportamiento implementado como un software que se ejecuta dentro de un microcontrolador (una computadora pequefia en un solo chip). En el pasado, usar la electrénica significaba tener que tratar con ingenieros todo el tiempo, y construir circuitos un pequefio componente en ese momento; Estos temas evitaban que las personas creativas jugaran con el medio directamente. La mayoria de las herramientas estaban destinadas a los ingenieros y requerian un amplio. conocimiento. En los ultimos afios, los microcontroladores se han vuelto mas baratos y {féciles de usar, permitiendo la creacién de mejores herramientas. El progreso que hemos hecho con Arduino es acercar estas herramientas un paso més al novicio, permitiendo a la gente comenzar a construir cosas después de sélo dos o tres dias de un taller. Con Arduino, un disefiador o artista puede llegar a conocer los fundamentos de la electronica y los sensores muy rapidamente y puede comenzar a construir prototipos con muy poca inversi6n. Introduccién 3 2/ El Camino del Arduino La filosofia de Arduino se basa en hacer disefios en lugar de hablar sobre ellos. Es una busqueda constante de formas mas rapidas y mas potentes de construir mejores prototipos. Hemos explorado muchas técnicas de prototipado y desarrollado maneras de pensar con nuestras manos. La ingenieria clasica se basa en un proceso estricto para obtener de A a B; El Camino ‘Arduino se deleita en la posibilidad de perderse en el camino y encontrar C en su lugar: Este es el proceso de bricolaje que nos encanta-jugar con el medio de una manera abierta y encontrar lo inesperado. En esta biisqueda de maneras de construir mejores prototipos, también seleccionamos una serie de paquetes de software que permiten el proceso de manipulacién constante del software y del hardware. Las siguientes secciones presentan algunas filosofias, acontecimientos y pioneros que han inspirado el Camino del Arduino. El Camino a Arduino 5 Prototipos El prototipado esté en el corazén del Camino Arduino: hacemos cosas y construimos objetos que interactian con otros objetos, personas y redes. Nos esforzamos por encontrar una manera més sencilla y répida de prototipo en la forma mas barata posible. Muchos de los principiantes que se acercan a la electrénica por primera vez piensan que tienen que aprender a construir todo desde cero. Esto es una pérdida de energia: lo que quieres es poder confirmar que algo esté funcionando muy rdpidamente para que puedas motivarte para dar el siguiente paso 0 tal vez incluso motivar a alguien a darte mucho dinero para hacerlo. Es por eso que desarrollamos el "prototipado oportunista": épor qué gastar tiempo y energia construyendo desde cero, un proceso que requiere tiempo y conocimiento técnico profundo, cuando podemos tomar dispositivos ya hechos y hackearlos para explotar el duro trabajo realizado por grandes Empresas y buenos ingenieros? Nuestro héroe es James Dyson, quien hizo 5127 prototipos de su aspiradora antes de que estuviera satisfecho de que lo habia conseguido (www. international [Link]/jd/[Link]). Jugueteando Creemos que es esencial jugar con la tecnologia, explorando diferentes posibilidades directamente en hardware y software, a veces sin una meta muy definida, La reutilizacién de la tecnologia existente es una de las mejores maneras de manipuler. Conseguir juguetes baratos 0 equipos viejos desechados y hackearlos para hacerlos hacer algo nuevo es una de las mejores maneras de obtener grandes resultados. El Camino a Arduini Parche Siempre he sido fascinado por la modularidad y la capacidad de construir sistemas complejos mediante la conexién de dispositivos simples. Este proceso esté muy bien representado por Robert Moog y sus sintetizadores analdgicos. Los misicos construyeron sonidos, intentando combinaciones interminables "juntando” diferentes médulos con cables. Este enfoque hizo que el sintetizador parezca un viejo conmutador telefénico, pero combinado con las numerosas perillas, era la plataforma perfecta para mezclar misica sonora e innovadora. Moog lo describié como un proceso entre “testificar y descubrir", Estoy seguro de que la mayoria de los muisicos al principio no sabia lo que todos esos cientos de botones, pero lo intentaron y trataron, refinando su propio estilo sin interrupciones en el flujo. Reducir el ntimero de interrupciones en el flujo es muy importante para la creatividad: mientras mds transparente sea el proceso, mas cambios tendrén. Esta técnica ha sido traducida al mundo del software por ambientes de "programacién visual" como Max, Pure Data 0 VWWV. Estas herramientas pueden visualizarse como "cajas" para las diferentes funcionalidades que proporcionan, permitiendo al usuario construir "parches" conectando estas cajas. Estos entornos permiten al usuario experimentar con la programacién sin la interrupcién constante tipica del ciclo habitual: "tipo programa, compilacién, maldicién-hay un error, error de correccién, compilar, ejecutar". Si usted es més visual mente, le recomiendo que probarlos. 8 So Prererers 9 Q eS a So oO Oo oe goo oe 9a 9 El Camino a Arduino 9 Curvado del circuito El curvado de circuitos es una de las formas mas interesantes de manipulacién. Es el cortocircuito creativo de los dispositivos audio electrénicos de bajo voltaje, bateria-accionados como pedales del efecto de la guitarra, juguetes de los nifios, y pequefios sintetizadores para crear los nuevos instrumentos musicales y los generadores sanos. El coraz6n de este proceso es el "arte del azar". Comenzé en 1966 cuando Reed Ghazala, por casualidad, cortocircuité un amplificador de juguete contra un objeto de metal en su cajén de escritorio, lo que resulta en una corriente de sonidos inusuales. Lo que mas me gusta de los curvadores de circuitos es su capacidad de crear los dispositivos més locos, alejéndose con la tecnologia sin necesariamente entender lo que estén haciendo en el lado tedrico. SNIFFIN' GLUE. + OTHER Rock ‘nt’ Rout = FOR Punks 1@ ore wnsee ee Tals 1S A CHORD ims 1S ANOtAay Thin 15.4 THIRD Now Foam 8 Bavp Es un poco como el fanzine Sniffin ‘Glue mostrado aqui: durante la era del punk, conocer tres acordes en una guitarra fue suficiente para comenzar una banda. No dejes que los expertos en un campo te digan que nunca serds uno de ellos. Ignorarlos y sorprenderlos. El Camino a Teclado Hacks Los teclados de computadora siguen siendo la principal forma de interactuar con una computadora después de més de 60 afios. Alex Pentland, director académico del MIT Media Laboratory, coment6 una vez: "Disculpe la expresién, pero los Urinarios de los hombres son mas inteligentes que las computadoras. Las computadoras estén aisladas de lo que esté a su alrededor " Como tinkerers, podemos implementar nuevas formas de interactuar con el software sustituyendo las claves por dispositivos capaces de detectar el entorno. Desmontar un teclado de computadora revela un dispositivo muy simple (y barato). El corazén de ella es una tabla pequefia. Normalmente es un circuito oloroso verde © marrén con dos conjuntos de contactos va a dos capas de plastico que sostienen las conexiones entre las diferentes teclas. Siretira el circuito y utiliza un cable para conectar dos contactos, ver aparecer una letra en la pantalla del ordenador. Si sales a comprar un detector de deteccién de movimiento y lo conecta a tu teclado, verés que se presiona una tecla cada vez que alguien camina delante de la computadora. Asigne esto a su software favorito, y usted ha hecho su computadora tan elegante como un urinario. Aprender acerca de la pirateria de teclado es un componente clave de creacién de prototipos y computacién fisica. Citado en Sara Reese Hedberg, "MIT Media Lab de la busqueda de computadoras perceptivas," Sistemas Inteligentes y sus aplicaciones, IEEE, julio / agosto 1998. E1 Camino a Arduino 13 Nos encanta Junk! La gente tira lejos mucha tecnologia actualmente: viejas impresoras, computadoras, maquinas extrafias de la oficina, equipo técnico, e incluso muchos de materia militar. Siempre ha habido un gran mercado para esta tecnologia sobrante, especialmente entre los jévenes y / 0 los hackers mas pobres y los que estén recién comenzando. Este mercado se hace evidente en Ivrea, donde desarrollamos Arduino. La ciudad era la sede de la empresa Olivetti. Habian estado haciendo computadoras desde los afios sesenta; A mediados de los noventa, arrojaron todo en las chatarrerias de la zona. Estos estan llenos de piezas de computadora, componentes electrénicos y dispositivos extrafios de todo tipo. Pasamos innumerables horas alli, comprando todo tipo de artefactos por muy poco dinero y pirateando nuestros prototipos. Cuando se puede comprar un millar de altavoces por muy poco dinero, que esta obligado a llegar a una idea al final. Acumular basura y pasar por ella antes de empezar a construir algo desde cero. Juguetes de Hacking Los juguetes son una fantastica fuente de tecnologfa barata para hackear y reutilizar, como lo demuestra la préctica de la flexidn de circuitos antes mencionada. Con la afluencia actual de miles de juguetes de alta tecnologia muy baratos de China, puede crear ideas répidas con unos pocos gatos ruidosos y un par de espadas ligeras. He estado haciendo esto por algunos afios para que mis estudiantes comprendan que la tecnologia no es aterradora o dificil de acercarse. Uno de mis recursos favoritos es el folleto "Low Tech Sensors and Actuators" de Usman Haque y Adam Somlai-Fischer ([Link]). Creo que han descrito perfectamente esta técnica en ese manual, y lo he estado usando desde entonces. Colaboracién La colaboracién entre los usuarios es uno de los principios clave en el mundo Arduino-a través del foro en [Link], personas de diferentes partes de! mundo se ayudan mutuamente a aprender sobre la plataforma. El equipo de Arduino alienta a las personas a colaborar a nivel local, asi como ayudarles a crear ‘grupos de usuarios en cada ciudad que visiten. También creamos un Wiki llamado Playground” ([Link]/playground) donde los usuarios documentan sus descubrimientos. Es tan asombroso ver cudnto conocimiento estas personas vierten en la Web para que todos lo usen. Esta cultura de compartir y ayudarnos mutuamente es una de las cosas que mas me enorgullece de Arduino, 3/ La Plataforma Arduino Arduino se compone de dos partes principales: el tablero de Arduino, que es la pieza de hardware en la que trabajas cuando construyes tus objetos; Y el Arduino IDE, el software que ejecuta en su computadora. Utilice el IDE para crear un boceto (un pequefio programa de computadora) que cargue en la tarjeta Arduino. El boceto le dice al consejo qué hacer. No hace mucho tiempo, trabajar en hardware significaba construir circuitos desde cero, usando cientos de componentes diferentes con nombres extrafios como resistencias, condensadores, inductores, transistores, etc. Cada circuito fue "cableado” para hacer una aplicacién especifica, y hacer cambios necesarios para cortar cables, conexiones de soldadura, y més. Con la aparicién de tecnologias digitales y microprocesadores, estas funciones, que una vez se implementaron con cables, fueron reemplazadas por programas de software. El software es més facil de modificar que el hardware. Con algunas pulsaciones de teclas, puede cambiar radicalmente la légica de un dispositive y probar dos o tres versiones en la misma cantidad de tiempo que le llevaria a soldar un par de resistencias. El hardware de Arduino Eltablero de Arduino es un pequefio tablero del microcontrolador, que es un pequefio Circuito (el tablero) que contiene una computadora entera en un pequefio. microprocesador (el microcontrolador). Este equipo es por lo menos mil veces menos. potente que el MacBook que estoy usando para escribir esto, pero es mucho mas barato y muy ttil para construir dispositivos interesantes. Mira el tablero de Arduino: verés un chip negro con 28 "piernas” - ese chip es el ATmega68, el corazén de tu tablero. La Plata rma Arduino 19 Nosotros (el equipo de Arduino) hemos colocado en esta placa todos los componentes que son necesarios para que este microcontrolador funcione correctamente y para comunicarse con su computadora. Hay muchas versiones de este tablero; El que usaremos a lo largo de este libro es el Arduino Duemilanove, que es el mas sencillo de usar y el mejor para aprender. Sin embargo, estas instrucciones se aplican a versiones anteriores del tablero, incluyendo el més reciente Arduino Diecimila y el Arduino NG més antiguo. La Figura 3-1 muestra el Arduino Duemilanove; La Figura 3-2 muestra el Arduino NG. En esas ilustraciones, ves la placa Arduino. Al principio, todos esos conectores podrian ser un poco confusos. Aqui esta una explicacién de lo que hace cada elemento del tabler 14 pines digitales de 1/0 (pines 0-13) Estas pueden ser entradas o salidas, que se especifica mediante el croquis que se crea en el IDE, 6 Pines de Entrada analégicos (pines 0-5) Estos pines de entrada analégicos dedicados toman valores analégicos (es decir, lecturas de tensién de un sensor) y los convierten en un ntimero entre 0 y 1023. 6 Pines de Salida analdgica (pines 3, 5, 6, 9, 10y 11) Estos son en realidad seis de los pines digitales que se pueden reprogramar para la salida analégica utilizando el boceto que se crea en el IDE La placa puede ser alimentada desde el puerto USB de su computadora, la mayoria de los cargadores USB, 0 un adaptador de CA (recomendado de 9 voltios, punta del cafién de 2,1 mm, centro positivo). Sino hay ninguna fuente de alimentacién enchufada en el enchufe, la energia vendrd de la tarjeta del USB, pero tan pronto como usted tapa una fuente de alimentacién, la tarjeta la utilizard autométicamente. NOTA: Si esté utilizando el Arduino-NG antiguo 0 Arduino Diecimila, deberd configurafite de seleccién de potencia (denominado PWR_SEL en la placa) para especificar la alimentacién EXT (externa) 0 USB. Este puente se puede encontrar entre el enchufe para el adaptador de CA y el puerto USB. x Duemilanove,, ess a 3 Perr TOTTI 3 a Figura 3-1, El Ardulno Duenilanove 5uGnd90 912845 Figura 3-2, Bi Arduino NG La Plataforma Arduino 21 El Software (IDE) ELIDE (Integrated Development Environment) es un programa especial que se ejecuta en su computadora y que le permite escribir bocetos para la placa Arduino en un lenguaje sencillo basado en el lenguaje Processing ([Link]). La magia ocurre cuando se presiona el botén que carga el boceto a la pizarra: el cédigo que se ha escrito se traduce al lenguaje C (que generalmente es muy dificil para un principiante) y se pasa al compilador avr-gcc , Una importante pieza de software de cédigo abierto que hace la traduccién final al lenguaje entendido por el microcontrolador. Este Ultimo paso es muy importante, porque es donde Arduino hace su vida més simple ocultando lejos tanto como sea posible de las complejidades de la programacién de microcontroladores, Elcciclo de programacién de Arduino es basicamente el siguiente: » Conecte su tarjeta en un puerto USB de su computadora, » Escriba un bosquejo que traeré el tablero a la vida » Cargue este boceto en la placa a través de la conexién USB y espere un par de segundos para que la tarjeta se reinicie. » La tabla ejecuta el boceto que escribid, NOTA: La instalacién de Arduino en Linux es algo complicada en el momento de escribir este articulo. Consulte [Link]/playground/Learning/Linux para obtener instrucciones completas. Instalacién de Arduino en el equipo Para programar la placa Arduino, primero debe descargar el entorno de desarrollo (IDE) desde aqui: [Link]/en/Main/Software. Elija la versién correcta para su sistema operativo. Descargue el archivo y haga doble clic en él para descomprimirlo; Esto creard una carpeta llamada arduino- [version], como arduino-0012. Arrastra esa carpeta a donde quieras que sea: tu escritorio, tu carpeta / Aplicaciones (en un Mac) 0 tu carpeta C: | Archivos de programa (en Windows). Ahora, siempre que desee ejecutar el IDE de ‘Arduino, abrird la carpeta arduino y haga doble clic en el icono de Arduino. Pero no hagas esto todavia; Hay un paso més para realizar. NOTA: Si tiene problemas para ejecutar el IDE de Arduino, consulte el Capitulo 7, Solucién de problema: Ahora debe instalar los controladores que permiten que su computadora hable con su tarjeta a través del puerto USB. Instalacién de controladores: Macintosh Busque la carpeta Drivers dentro de la carpeta orduino-0012 y haga doble clic en el archivo llamado FTDIUSBSerialDriver_x_x_x.dmg (x_x_x ser reemplazado por el niimero de versién del controlador, por ejemplo FTDIUSBSerialDriver_ v2_2_9 [Link]). Haga doble clic en el archivo dmg para montarlo. NOTA: Si estd utilizando una Mac basada en Intel, como MacBook, MacBook Pro, MacBook Air, Mac Pro o Intel Mini-Mac o iMac, asegurese de instalar el controlador con “Intel” en su nombre, como En FTDIUSBSerialDriver_v2_2_9_Intel.dmg. Sino esta indo una Mac basada en Intel, instale la que no tenga "Intel" en su nombre. A continuacién, instale el software del paquete FTDIUSBSerialDriver haciendo doble clic en él, Siga las instrucciones proporcionadas por el instalador y escriba la contrasefia de un usuario administrativo si se le solicita. Al final de este proceso, reinicie el equipo para asegurarse de que los controladores estén correctamente cargados. Ahora conecte la tarjeta en su computadora. La luz PWR de la tarjeta debe encenderse y el LED amarillo con la etiqueta "L" deberia comenzar a parpadear. Sino es asi, consulte el Capitulo 7, Solucién de problemas. Instalacién de controladores: Windows Enchufe la tarjeta Arduino en la computadora; Cuando aparezca la ventana Asistente para hardware nuevo encontrado, Windows intentard primero encontrar el controlador en el sitio de Windows Update. Windows XP le preguntaré si desea comprobar Windows Update; Si no desea utilizar ‘Windows Update, seleccione la opcién "No, no en este momento” y haga clic en Siguiente. En la siguiente pantalla, elija "Instalar desde una lista o ubicacién especifica" y haga clic en Siguiente 2 Arduino 23 Marque la casilla "Incluir esta ubicacién en la busqueda", haga clic en Examinar, seleccione la carpeta donde instalé Arduino y seleccione la carpeta Drivers \ FTDI USB Drivers como ubicacién. Haga clic en Aceptar y en Siguiente. Windows Vista primero intentara encontrar el controlador en Windows Update; Si esto falla, puede indicarle que busque en la carpeta Drivers \ FTDI Drivers USB. Pasaré por este procedimiento dos veces, porque el equipo primero instala el controlador de bajo nivel, luego instala un cédigo que hace que la tarjeta se vea como un puerto serie en el equipo. Una vez instalados los controladores, puede iniciar el IDE de Arduino y comenzar a utilizar Arduino, A continuacién, debe determinar qué puerto serie esta asignado a su tarjeta Arduino: necesitard esa informacién para programarla més tarde. Las instrucciones para obtener esta informacién se encuentran en las siguientes secciones. Identificacién de puertos: Macintosh En el ment Herramientas del IDE de Arduino, seleccione "Puerto serie" y seleccione el puerto que comienza con /dev/[Link]-; Este es el nombre que utiliza su computadora para referirse a la placa Arduino. La Figura 3-3 muestra la lista de puertos Hel ‘utoFormat 37 Copy for Forum Archive Seaton Board i 2 7/ Bearole OL Bi lnKing LED ‘/dev/[Link]-A7007xQ8 PALIT TE ‘ev tty SerialPort-1 ‘/devjcu SerialPort-1 ‘dev tty Jep95-DataTransfer-1 ‘dev cu Jep9S-ataTransfer-1 ‘/ev/[Link]-Moder ‘[Link]-Moder ‘ev/[Link]-POA-Syne Emi c Paes ine io Burn Bootloader > void satunt) pieode(LeD, ouTeUTs old Lo900) digitatieise(Len, HoH); dainut2) digitatarise(Le0, Lo dalag(12)s Figura 2-3 3 serie del IDE de Arduino La Plataforma Arduino 25 Identificacion del Puerto: Windows En Windows, el proceso es un poco mas complicado, al menos al principio. Abra el ‘Administrador de dispositivos haciendo clic en el ment inicio, haga clic con el botén secundario en Equipo (Vista) 0 Mi PC (XP) y seleccione Propiedades. En Windows XP, haga clic en Hardware y elija Administrador de dispositivos. En Vista, haga clic en ‘Administrador de dispositivos (aparece en la lista de tareas a la izquierda de la ventana). Busque el dispositive Arduino en la lista bajo "Puertos (COM & LPT)". El Arduino apareceré como un puerto serie USB y tendré un nombre como COM3, como se muestra en la Figura 3-4 [ 2: Device Manager Sie peeeaaaeaamia @9|/5|/O/bm|e/ ems 2 BESON- VMWARE "Batre sl Computer ty Disk dives A Display odopters Puerto serie en el IDE de Arduino. Ahora, el entorno de desarrollo de Arduino puede hablar con la placa Arduino y programario. La Plataforma Arduino 27 4/ Realmente empezando con Arduino Ahora aprendera como crear y programar un dispositivo interactivo. Anatomia de un dispositivo interactivo Todos los objetos que construiremos usando Arduino seguirdn un patrén muy simple que llamaremos “Interactive Device". E! dispositive interactivo es un circuito electrénico que es capaz de detectar el ambiente utilizando sensores (componentes electrénicos que convierten las mediciones del mundo real en sefiales eléctricas). El dispositive procesa la informacién que recibe de los sensores con un comportamiento que se implementa como software. El dispositivo sera capaz de interactuar con el mundo utilizando actuadores, componentes electrénicos que pueden convertir una sefial eléctrica en una accién fisica. / percepeién ow. (mre ) era 4 El dispositive interactive La Plataforma Arduino 29 Sensores y Actuadores Los sensores y actuadores son componentes electrénicos que permiten que una pieza de electrénica interactie con el mundo. Como el microcontrolador es una computadora muy simple, slo puede procesar sefiales eléctricas (un poco como los impulsos eléctricos que se envian entre las neuronas de nuestro cerebro). Para que detecte luz, temperatura u otras cantidades fisicas, necesita algo que pueda convertirlas en electricidad. En nuestro cuerpo, por ejemplo, el ojo convierte la luz en sefiales que se envian al cerebro usando los nervios. En electrénica, podemos utilizar un dispositivo simple llamado una resistencia dependiente de la luz (un LDR o fotorresistor) que puede medir la cantidad de luz que lo golpea y reportarlo como una sefial que puede ser entendida por el microcontrolador. Una vez que los sensores han sido lefdos, el dispositivo tiene la informacién necesaria para decidir como reaccionar. El proceso de toma de decisiones es manejado por el microcontrolador, y la reaccién es realizada por actuadores. En nuestros cuerpos, por ejemplo, los misculos reciben sefiales eléctricas del cerebro y las convierten en un movimiento. En el mundo electrénico, estas funciones podrian ser realizadas por un motor eléctrico 0 un motor eléctrico, En las siguientes secciones, aprenderd a leer sensores de diferentes tipos y controlar diferentes tipos de actuadores. Parpadeando un LED El boceto de parpadeo de LED es el primer programa que debe ejecutar para comprobar sisu tarjeta Arduino funciona y esta configurada correctamente. También suele ser el primer ejercicio de programacién que alguien hace cuando aprende a programar un microcontrolador. Un diodo emisor de luz (LED) es un pequefio componente electrénico que es un poco como una bombilla, pero es més eficiente y requiere voltajes mas bajos para operar. Su tarjeta Arduino viene con un LED preinstalado. Esté marcado con "L". También puede agregar su propio LED-conectarlo como se muestra en la Figura 4-2. K indica el catodo (negativo), 0 el plomo mas corto; A indica el 4nodo (positivo), 0 el plomo mas largo. Una vez que el LED esté conectado, necesita decirle a Arduino qué hacer. Esto se hace a través de cédigo, es decir, una lista de instrucciones que le damos al microcontrolador ara que haga lo que queremos. Figura 4-2 Conexion de un LED a Arduino En su computadora, abra la carpeta donde copié el IDE de Arduino. Haga doble clic en el icono de Arduino para iniciarlo. Seleccione Archivo> Nuevo y se le pedira que elija un nombre de carpeta de boceto: aqui se almacenaré su boceto Arduino. Asigne un nombre a Blinking_LED y haga clic en Aceptar. A continuacién, escriba el siguiente texto (Ejemplo 01) en el editor de bocetos de Arduino (la ventana principal del IDE de Arduino). También puede descargarlo desde [Link]/ getstartedarduino. Deberd aparecer como se muestra en la Figura 4-3. Verificar Cargar para 1/0 la tarjeta 7/ Exanple 81 : Blinking LEI define LED 13 // LED connected to 7/ digital pin 13 oid setun() { pinllodeCLED, OUTPUT): / sets the digitel —> Hf iin om alitgie , oid loop) q Gigitalinite(LED, HIGH); // turns the LED on de lay(1888) ; 77 waits for a second igitotllniteCLED, LOH), Carne the LED off ‘ay( 188): If eaite for a second + Li sa posquejo va ac Figura 4-3 E1 ZDE de Arduino con el primer dibujo cargado Ahora que el cédigo estd en su IDE, debe verificar que es correcto. Presione el botén "Verificar” (Ia Figura 4-3 muestra su ubicacién); Si todo esté correcto, aparecerd el mensaje "Done compilacién" en la parte inferior del IDE de Arduino. Este mensaje significa que el IDE de Arduino ha traducido su boceto en un programa ejecutable que puede ejecutar la placa, un poco como un archivo .exe en Windows 0 un archivo .app en una Mac. En este momento, puede cargarlo en la placa: presione el botdn Cargar en la tarjeta de VO (consulte la Figura 4-3). Esto restableceré la placa, obligandola a detener lo que esta haciendo y escuchar las instrucciones procedentes del puerto USB. E! IDE de Arduino envia el boceto actual al tablero, que lo almacenard en su memoria y lo ejecutaré eventualmente. La Plataforma Arduino 33 Vera que aparecen algunos mensajes en el area negra en la parte inferior de la ventana y, justo encima de esa zona, aparecerd el mensaje "Finalizar la carga" para que sepa que el proceso se ha completado correctamente. Hay dos LEDs, marcados RX y TX, en el tablero; Estos parpadean cada vez que un byte es enviado o recibido por el tablero. Durante el proceso de carga, siguen parpadeando. Sino ve el parpadeo de los LEDs, o si aparece un mensaje de error en lugar de “Finalizar la carga", hay un problema de comunicacién entre su computadora y ‘Arduino. Aseguirese de haber seleccionado el puerto serie correcto (consulte el Capitulo 3) en el mend Herramientas> Puerto serie, Ademés, compruebe el ment Herramientas> Panel para confirmar que el modelo correcto de Arduino esta seleccionado alli Si todavia tiene problemas, consulte el Capitulo 7, Solucién de problemas. Una vez que el cédigo esté en tu tablero de Arduino, permanecerd alli hasta que pongas otro dibujo en él. El boceto sobrevivird sila tarjeta se reinicia o se apaga, un poco como los datos en el disco duro de su computadora. Suponiendo que el dibujo haya sido cargado correctamente, vera que el LED "L" se enciende por un segundo y después se apaga durante un segundo. Si instalé un LED separado como se muestra en la Figura 4-2, ese LED parpadeard también. Lo que acaba de escribir y ejecutar es un "programa de computador”, 0 esbozo, como se liaman los programas de Arduino. Arduino, como he mencionado antes, es una computadora pequefia, y se puede programar para hacer lo que quieras. Esto se hace usando un lenguaje de programacién para escribir una serie de instrucciones en el IDE de Arduino, que lo convierte en un ejecutable para su placa Arduino. Te mostraré luego cémo entender el boceto. En primer lugar, el Arduino ejecuta el cédigo de arriba a abajo, por lo que la primera linea en la parte superior es la primera lectura; A continuacién, se mueve hacia abajo, un poco como la forma en la cabeza de reproduccién de un reproductor de video como QuickTime Player o Windows Media Player se mueve de izquierda a derecha que muestra dénde en la pelicula que esta. Pasame el Parmesano Observe la presencia de corchetes, que se utilizan para agrupar lineas de codigo. Estos son particularmente iitiles cuando se desea dar un nombre a un grupo de instrucciones. Si estés en la cena y le preguntas a alguien: "Por favor, pasame el queso parmesano", esto inicia una serie de acciones que se resumen en la pequefia frase que acabas de decir. Como somos humanos, todo viene naturalmente, pero todas las pequefias acciones individuales necesarias para hacer esto deben ser explicadas al Arduino, porque no es tan poderoso como nuestro cerebro. Asi que para agrupar una serie de instrucciones, se pega un fantes de su cédigo y un) después. Puede ver que hay dos bloques de cédigo que se definen de esta manera aqui. Ante cada uno de ellos hay un extrafio mandamiento: void setup() Esta linea da un nombre a un bloque de cédigo. Si escribieras una lista de instrucciones que ensefien a Arduino cémo pasar el parmesano, escribirias void passTheParmesan () al principio de un bloque, y este bloque se convertiria en una instruccién que puedes llamar desde cualquier parte del cédigo de Arduino, Estos bloques se llaman funciones. Si después de esto escribes passTheParmesan () en cualquier parte de tu cédigo, ‘Arduino ejecutard esas instrucciones y continuaré donde lo dejé. Ard 0 no es para Nifios (Quitters) Arduino espera que existan dos funciones: una llamada setup () y otra llamada loop (). setup () es donde pone todo el cédigo que desea ejecutar una vez al principio de su programa y loop () contiene el niicleo de su programa, que se ejecuta una y otra vez Esto se hace porque Arduino no es como su computadora normal: no puede ejecutar varios programas al mismo tiempo y los programas no pueden salir. Cuando se enciende la tarjeta, el cédigo se ejecuta; Cuando quieras parar, simplemente apdgalo. Reales Gitanos (Tinkeres) Escriben Comentarios Cualquier texto que empiece por // es ignorado por Arduino. Estas lineas son comentarios, que son notas que dejas en el programa por ti mismo, para que puedas recordar lo que hiciste cuando lo escribiste, o para alguien mas, para que puedan entender tu cédigo. Es muy comin (lo sé porque lo hago todo el tiempo) escribir un pedazo de cédigo, subirlo al tablero, y decir "Okay-yo nunca voy a tener que tocar a este chupén de nuevo!” Sélo para Tenga en cuenta seis meses después que necesita actualizar el codigo, © corregir un error. En este punto, se abre el programa, y sino ha incluido ningiin comentario en el programa original, usted pensaré: "Wow, iqué desastre! Nuevo (si tiene otro boceto abierto, puede guardarlo primero). Cuando Arduino le pide que nombre su nueva carpeta de boceto, escriba PushButtonControl. Escriba el cédigo del ejemplo 02 en Arduino (o descérguelo desde [Link]/getstartedarduino y péguelo en el IDE de Arduino). Si todo es correcto, el LED se encenderé al presionar el boténn. éComo funciona esto? He introducido dos nuevos conceptos con este programa de ejemplo: funciones que devuelven el resultado de su trabajo y la instruccién if. La sentencia if es posiblemente la instruccién més importante en un lenguaje de programacién, ya que permite que la computadora (y recuerde, el Arduino es un pequefio ordenador) para tomar decisiones. Después de la palabra clave if, hay que escribir una "pregunta" dentro de paréntesis, y sila "respuesta", o resultado, es verdadera, se ejecutard el primer bloque de cédigo; De lo contrario, se ejecutard el en lugar de =. El primero se utiliza cuando se comparan dos entidades, y se devuelve TRUE 0 bloque de cédigo después de otro. Tenga en cuenta que he usado el simbolo FALSE; Este ultimo asigna un valor a una variable. Asegurese de que utiliza el correcto, en cuyo caso su programa nunca funcionard. Lo sé, porque después de 25 afios de programacién, todavia cometo ese porque es muy facil cometer ese error y usar sél error. Mantener el dedo en el botén durante el tiempo que necesita luz no es practico. ‘Aunque te haria pensar en la cantidad de energia que estas desperdiciando cuando te alejas de una lmpara que te quedaste en, tenemos que averiguar como hacer que el botén de encendido "palo", Un circuito, mil comportamientos La gran ventaja de la electronica digital y programable sobre la electrénica clasica es ahora evidente: te mostraré cémo implementar muchos "comportamientos" diferentes usando el mismo circuito electrénico que en la seccidn anterior, simplemente cambiando el software. Como he mencionado antes, no es muy préctico tener que mantener el dedo en el botén para encender la luz. Por lo tanto, debemos implementar alguna forma de "memoria", en forma de un mecanismo de software que recordaré cuando hayamos presionado el botén y mantendré la luz encendida incluso después de haberla liberado. Para hacer esto, vamos a utilizar lo que se llama una variable. (Ya hemos usado uno, pero no lo he explicado.) Una variable es un lugar en la memoria de Arduino donde puedes almacenar datos. Piense en él como una de esas notas adhesivas que utiliza para recordarse algo, como un niimero de teléfono: usted toma uno, usted escribe "Luisa 02 555 1212" en él, y se pega a su monitor de la computadora o su refrigerador. En el lenguaje Arduino, es igualmente sencillo: sélo decide qué tipo de datos desea almacenar (un numero 0 un texto, por ejemplo), dale un nombre y cuando lo dese, puede almacenar los datos 0 recuperarlos . Por ejemplo: int val = 0; int significa que su variable almacenaré un niimero entero, val es el nombre de la variable, y = Ole asigna un valor inicial de cero. Una variable, como su nombre indica, se puede modificar en cualquier parte de su cédigo, para que més adelante en su programa, podria escri val = 112; Que reasigna un nuevo valor, 112, a su variable. NOTA: ¢Ha notado que en Arduino, todas las instrucciones, con una excepcién (#define), termina con un punto y coma? Esto se hace para que el compilador (la parte de Arduino que convierte su boceto en un programa que el microcontrolador puede ejecutar) sabe que su declaracién ha terminado y una nueva est comenzando. Recuerde usarlo todo el tiempo, excluyendo cualquier linea que comience con #define. Los #tdefine son reemplazados por el compilador antes de que el cédigo se traduce en un ejecutable de Arduino. En el programa siguiente, val se utiliza para almacenar el resultado de digitalRead(); Lo que Arduino obtenge de la entrada termina en la variable y permanecerd alli hasta que otra linea de cédigo la cambie. Observe que las variables utilizan un tipo de memoria llamada RAM. Es bastante répido, pero cuando se apaga la placa, se pierden todos los datos almacenados en la memoria RAM (lo que significa que cada variable se restablece a su valor inicial cuando la placa se enciende de nuevo). Sus propios programas se almacenan en memoria flash -es el mismo tipo utilizado por su teléfono mévil para almacenar niimeros de teléfono- que conserva su contenido incluso cuando la tarjeta est apagada Ahora vamos a usar otra variable para recordar si el LED tiene que permanecer encendido o apagado después de soltar el botén. El ejemplo 03A es un primer intento de lograr: 11 Bjemplo 034: Encender el LED cuando se presiona el botda #1 y mantenerlo encendido después de que se libere fMdefine LED 13 Vel pin para el LED #Hdefine BUTTON 7 // el pin de entrada donde lpulsador estéconectado ‘val se utilizar para slmecenarel estado del pin de entrada int state ED eneendido //0= LED spagado mientras void setup0 ( pinMode(LED, OUTPUT); 1! decir Arduino LED es una salida ppinMode(BUTTON, INPUT); //y BUTTON es una entrada ) void loop0) { val = digitalRead(BUTTON); leer el valor de entrada y almacenarlo 1 compruebe sila entrada es ALTA (botén pulsado) Vy cambiar el estado if val = HIGH) { state =1 state; AigitalWrte(LED, HIGH); ura LED ON else digialWrie(LED, LOW); ) ) Ahora prueba este cédigo. Usted notara que funciona. . . algo. Usted encontraré que la luz cambia tan répidamente que usted no puede fijarla confiablemente encendido o apagado con una prensa del botén. Veamos las partes interesantes del cédigo: state es una variable que almacena 0 0 1 para recordar si el LED est encendido 0 apagado. Después de soltar el botén, lo inicializamos a 0 (LED apagado). HIGH), cambiamos el estado de 0 a 1, 0 viceversa. Hacemos esto usando un pequefio truco, ya que el Ms tarde, leemos el estado actual del botén, y si se presiona (val estado puede ser solo 10 0. E! truco que uso involucra una pequefia expresién matemitica basada en la idea de que 1-Oes 1y1-1es0: state 1 state; La linea puede no tener mucho sentido en matematicas, pero si en la programacién. El simbolo = significa "asignar el resultado de lo que esta detrés de mi al nombre de la variable antes de mi"; en este caso, el nuevo valor de estado se asigna al valor de 1 menos el valor antiguo del estado. Mas adelante en el programa, puede ver que usamos el estado para averiguar si el LED debe estar encendido 0 apagado. Como mencioné, esto conduce a resultados algo escamosos. Los resultados son escamosos debido a la forma en que leemos el botén. Arduino es muy répido; Ejecuta sus propias instrucciones internas a una tasa de 16 millones por segundo, podria estar ejecutando unas pocas millones de lineas de cédigo por segundo. Asi que esto significa que mientras tu dedo est presionando el botén, Arduino podria estar leyendo la posicién del botén unos miles de veces y cambiando de estado en consecuencia. Asi que los resultados terminan siendo impredecibles; Podria estar apagado cuando usted lo quisiera encendido, o viceversa. Como incluso un reloj roto es correcto dos veces al dia, el programa puede mostrar el comportamiento correcto de vez en cuando, pero la mayor parte del tiempo va a estar mal. ECémo arreglamos esto? Bueno, necesitamos detectar el momento exacto en que se presiona el botén, ese es el tinico momento que tenemos que cambiar de estado. La forma en que me gusta hacerlo es almacenar el valor de val antes de leer un nuevo; Esto me permite comparar la posicién actual del botén con el anterior y cambiar el estado sélo cuando el botén se convierte en ALTO después de ser LOW. El ejemplo 038 contiene el cédigo para hacerlo: Example 03B: Turn on LED when the button is pressed ‘1nd keep it on after it is released // Now with a new and improved formula ‘Mefine LED 13. the pin forthe LED ‘define BUTTON 7 the input pin where the ! pushbutton is connected int val=0; val wil be used to store the state ofthe inpur pin {nt old_val = 0; this variable stores the previous 1 value of val” int sate=0; //0=LED offand 1 = LED on void setup0 ¢ pinMode(LED, OUTPUT); tell Arduino LED isan output_pinMode(BUTTON, INPUD); // and BUTTON is an input ) void loop(){ vval= digitalRead(BUTTON); //read input value and store it yum, fresh / check i'there was transition if (val = HIGH) && LOW) state=1-states } (old_val ‘old_val~ val; val is now old, let's store it if (state= 1) ¢ igitalWrite(LED, HIGH); / tum LED ON } else { igitalWrite(LED, LOW); ) Pruébelo: estamos casi alll! Usted puede haber notado que este acercamiento no es enteramente perfecto, debido a otro problema con los interruptores mecénicos. Los pulsadores son dispositivos muy simples: dos pedazos de metal separados por un resorte. Cuando presiona el botén, los dos contactos se unen y la electricidad puede fluir. Esto suena bien y simple, pero en la vida real la conexién no es tan perfecta, especialmente cuando el botén no estd completamente presionado, y genera algunas sefiales espurias llamadas rebote. Cuando el pulsador est rebotando, el Arduino ve una secuencia muy répida de sefiales de encendido y apagado. Hay muchas técnicas desarrolladas para hacer de-rebote, pero en este pedazo simple del cédigo he notado que es generalmente bastante para agregar Un retraso 10 - a 50 milisegundos cuando el cédigo detecta una transicién. El ejemplo 03C es el cédigo final: 5/ Entrada y salida avanzadas Lo que acabamos de aprender en el Capitulo 4 son las operaciones mas elementales que podemos hacer en Arduino: controlar la salida digital y leer la entrada digital. Si Arduino fuera algun tipo de lenguaje humano, éstas serian dos letras de su alfabeto. Teniendo en cuenta que hay sdlo cinco letras en este alfabeto, se puede ver cuanto mas trabajo que tenemos que hacer antes de que podamos escribir Arduino poesia. Prueba de otros sensores de encendido / apagado Ahora que ha aprendido a utilizar un pulsador, debe saber que hay muchos otros sensores muy bdsicos que funcionan de acuerdo con el mismo principio: Interruptores Al igual que un pulsador, pero no cambia automdticamente el estado cuando se suelta Termostatos Un interruptor que se abre cuando la temperatura alcanza un valor establecido Interruptores magnéticos (también conocidos como "relés de lémina") Tiene dos contactos que se juntan cuando estén cerca de un iman; Utilizado por las alarmas antirrobo para detectar cuando se abre una ventana Interruptores de alfombra Pequefias esteras que se pueden colocar debajo de una alfombra o un felpudo para detectar la presencia de un ser humano (0 gato pesado) Interruptores de inclinacién Un componente electrénico simple que contiene dos contactos y una pequefia bola de metal (o una gota de mercurio, pero no recomiendo usarlos) Un ejemplo de un interruptor de inclinacién se llama un sensor de inclinacién. La figura S-1 muestra el interior de un modelo tipico. Cuando el sensor esta en su posicién vertical, la bola puentea los dos contactos, y esto funciona como si hubiera presionado un botén. Cuando inclina este sensor, la pelota se mueve y el contacto se abre, lo cual es como si hubiese soltado un pulsador. Utilizando este componente simple, puede implementar, por ejemplo, interfaces gestuales que reaccionan cuando un objeto se mueve o se sacude. nterior de un sensor de inclinacién Otro sensor que quizds quiera probar es el sensor de infrarrojos que se encuentra en las alarmas antirrobo (también conocido como sensor infrarrojo pasivo o sensor PIR, vea la Figura 5-2). Este pequefio dispositivo se activa cuando un ser humano (u otro ser vivo) se mueve dentro de su proximidad. Es una forma sencilla de detectar movimiento. 5-2 Sens! Ahora debe experimentar mirando todos los dispositivos posibles que tienen dos contactos que se cierran, como el termostato que fija la temperatura de la habitacién (use una vieja que ya no esté conectada), o simplemente colocando dos contactos uno al lado del otro y dejando caer agua sobre ellos. Por ejemplo, usando el ejemplo final del Capitulo 4 y un sensor PIR, usted podria hacer que su lémpara respondiera a la presencia de seres humanos, o podria usar un interruptor de inclinacién para construir uno que se apague cuando est inclinado en un lado. Control de luz con PWM Con el conocimiento que usted ha ganado hasta ahora, podria construir una lampara interactiva que puede ser controlada y no sélo con un aburrido interruptor de encendido / apagado, pero tal vez de una manera que es un poco mas elegante. Una de las limitaciones de los ejemplos de LED parpadeantes que hemos utilizado hasta ahora es que sélo se puede encender y apagar la luz. Una lampara interactiva de fantasia necesita ser regulable. Para resolver este problema, podemos usar un pequefio truco que hace posible muchas cosas como ‘TVo cine: la persistencia de la vision. Como he sugerido después del primer ejemplo en el capitulo 4, si cambia los niimeros en la funcién de retardo hasta que no vea el LED parpadeando mas, notard que el LED parece atenuado al 50% de su brillo normal. Ahora cambie los niimeros para que el LED esté encendido es un cuarto del tiempo que esté apagado. Ejecute el boceto y vera que el brillo es aproximadamente el 25%. Esta técnica se llama modulacién de ancho de pulso (PWM), una manera elegante de decir que si parpadea el LED lo suficientemente répido, no lo ve parpadear mas, pero puede cambiar su brillo cambiando la relacién entre el tiempo de encendido El tiempo de apagado. La Figura 5-3 muestra cémo funciona esto, Esta técnica también funciona con dispositivos que no sean un LED. Por ejemplo, puede cambiar la velocidad de un motor de la misma manera Mientras experimenta, verd que parpadear el LED poniendo retrasos en su cédigo es un poco incémodo, porque tan pronto como quiera leer un sensor o enviar datos en el puerto serie, el LED parpadeara mientras espera que termine Lectura del sensor. Por suerte, el procesador utilizado por la placa Arduino tiene un pedazo de hardware que puede parpadear muy eficientemente tres LED mientras su boceto hace otra cosa. Este hardware esta implementado en los pines 9, 10 y 11, que pueden ser controlados por la instruccién analogWrite (). ON OFF OFF 25% 75% 3 Por ejemplo, escribir analogWrite(9,128) Ajustara el brillo de un LED conectado al pin 9 al 50%. €Por qué 128? AnalogWrite () espera un nimero entre 0 y 255 como argumento, donde 255 significa brillo completo y 0 significa apagado. Nota: Tener tres canales es muy bueno, porque si usted compra LeDs rojo, verde yazul, usted puede mezclar sus luces y hacer la luz de cualquier color que te gustal Vamos a probarlo. Construye el circuito que ves en la Figura 5-4. Tenga en cuenta que los LED estén polarizados: el pasador largo (positivo) debe ir a la derecha y el pasador corto (negativo) a la izquierda, Ademas, la mayorfa de los LED tienen un. lado negativo aplanado, como se muestra en la figura. \ SA Oo «8 a la eval E OO Bess szeas A continuacién, cree un nuevo boceto en Arduino y utilice el Ejemplo 04 (también puede descargar ejemplos de cédigo de [Link]/getstartedarduino): 1/ Example 04: Fade an LED in and out like on ‘1a sleeping Apple computer fidefine LED 9//the pin forthe LED 0; /Wellluse this to count up and down, void setup0 ¢ pinMode(LED, OUTPUT); tell Arduino LED is an output } void loop 0¢ for (= 0;1< 255; {U!loop from 0 o 254 (fade in) analogWrite(LED, ; 1! set the LED brightness delay(10);/ Wait 10ms because analogWrite His instantaneous and we would '/mot see any change) for (i= 25551 > 0; =) {loop from 255 t0 1 (fade out) analogWrite(LED, i); //set the LED brightness delay(10}; Wait 10ms_) Ahora usted tiene una copia de una caracteristica de fantasia de una computadora portatil (tal vez es un poco de un desperdicio para utilizar Arduino para algo tan simple). Vamos a usar este conocimiento para mejorar nuestra limpara. Afiada el circuito que usamos para leer un botén (en el Capitulo 4) a esta tabla de pruebas. Vea si puede hacer esto sin mirar la siguiente pagina, porque quiero que comience a pensar en el hecho de que cada circuito elemental que muestro aqui es un "bloque de construccién" para hacer proyectos més grandes y mas grandes. Si necesita mirar hacia el futuro, no se preocupe; Lo més importante es que pases un tiempo pensando en cémo podria verse. Para crear este circuito, tendré que combinar el circuito recién construido (mostrado en la Figura 5-4) con el circuito de pulsador mostrado en la Figura 4-6, Silo desea, puede simplemente construir ambos circuitos en diferentes partes de la placa de pruebas; Tienes un montén de espacio. Sin embargo, una de las ventajas de la placa de pruebas (véase el apéndice A) es que hay un par de rieles que se extienden horizontalmente a través de la parte inferior y superior. Uno esta marcado rojo (para positivo) y el otro azul o negro (para el suelo). Estos rieles se utilizan para distribuir la energ(a y la tierra a donde se necesita. En el caso del circuito que necesita construir para este ejemplo, tiene dos componentes (ambos resistores) que deben conectarse al pin GND (tierra) del Arduino. Debido a que el Arduino tiene dos pines GND, simplemente podria conectar estos dos circuitos exactamente como se muestra en cada una de las dos figuras; Sélo enganchar a los dos hasta el Arduino al mismo tiempo. O bien, podria conectar un cable del carril de tierra de la placa de panificacién a uno de los pines GND del Arduino y, a continuacién, tomar los cables que estén conectados a GND en las figuras y conectarlos al carril de tierra de la placa de paneles. Sino esta listo para probar esto, no se preocupe: simplemente conecte ambos Circuitos a su Arduino como se muestra en las Figuras 4-6 y 5-4. Verd un ejemplo que usa los carriles de tabla de pruebas de tierra y positivo en el Capitulo 6. inte ejemplo, si solo tenemos un pulsador, écémo controlamos el brillo de una lémpara? Vamos a aprender otra técnica de disefio de interaccién: detectar cuanto tiempo se ha presionado un botén. Para hacer esto, necesito actualizar el ejemplo 03C del capitulo 4 para agregar atenuacién. La idea es construir una "interfaz" en la que una accién de prensa y liberacién encienda y apague la luz, y una accién de presionar y mantener cambia el brillo. Echemos un vistazo al bosquejo: 1 Example 05: Turn on LED when the button is pressed 1 and keep it on after itis released // including simple de-bouncing, 1 Ifthe button is held, brightness changes. ‘define LED 9 {/ the pin for the LED #define BUTTON 7 1 input pin of the pushbutton int val = 0; 1 stores the state ofthe input pin in old_val = 0;1/ stores the previous value of "val" at state=0;,//0=LED off while 1=LED on int rightaess= 128; 1! Stores the brightness value unsigned long startTime = 0; / when did we begin pressing? void setup0 ¢ pinMode(LED, OUTPUT); tell Arduino LED is an output_pinMode(BUTTON, INPUT); // and BUTTON isan input } analogWrito(LED, brightness); / tum LED ON at the Heurrent brightness level} else { analogWrite(LED, 0); //turn LED OFF Ahora inténtalo. Como puede ver, nuestro modelo de interaccién estd tomando forma, Si presiona el botén y lo suelta inmediatamente, se enciende o apaga la lampara. Si mantiene pulsado el bot6n, el brillo cambia; Sélo deje ir cuando haya alcanzado el brillo deseado. Ahora vamos a aprender a usar algunos sensores més interesantes. Utilice un sensor de luz en lugar del pulsador Ahora vamos a intentar un experimento interesante. Tome un sensor de luz, como el que se muestra en la figura 5-5. Usted puede obtener un paquete de cinco de estos de RadioShack (niimero de parte 276-1657). Resistencia dependiente de 1a luz (LDR) En la oscuridad, la resistencia de una resistencia dependiente de la luz (LOR) es bastante alta. Cuando usted brilla algo de luz en ella, la resistencia répidamente cae y se convierte en un conductor razonablemente bueno de la electricidad. Por lo tanto, es una especie de interruptor activado por luz. Construya el circuito que viene con el Ejemplo 02 (vea "Uso de un botén pulsador para controlar el LED" en el Capitulo 4), luego cargue el cédigo del Ejemplo 02 en su Arduino. Ahora conecte el LDR en la placa de pan en luger del botén. Usted notaré que si Usted cubre el LOR con sus manos, el LED se apaga. Descubre el LDR, y la luz contintia. Acabas de construir tu primer sensor LED impulsado por sensores. Esto es importante porque, por primera vez en este libro, estamos utilizando un componente electrénico que no es un simple dispositivo mecénico: es un sensor real rico. Entrada analdogica Como aprendié en la seccién anterior, Arduino es capaz de detectar si hay un voltaje aplicado a uno de sus pines e informarlo a través de la funcién digitalRead() . Este tipo de respuesta esté bien en muchas aplicaciones, pero el sensor de luz que acabamos de usar es capaz de decirnos no sélo si hay luz, sino también cudnta luz hay. Esta es la diferencia entre un sensor de encendido / apagado (que nos dice si hay algo) y un sensor analégico, cuyo valor cambia continuamente. Para leer este tipo de sensor, necesitamos un tipo de pin diferente. En la parte inferior derecha de la placa Arduino, verds seis pasadores marcados con "Analog In"; Estos son pernos especiales que pueden decirnos no sélo si hay un voltaje aplicado a ellos, pero sies asi, también su valor. Usando la funcién analogRead() , podemos leer el voltaje aplicado a uno de los pines. Esta funcién devuelve un niimero entre 0 y 1023, que representa voltajes entre 0 y 5 voltios. Por ejemplo, si hay una tensién de 2,5 V aplicada al nimero de pin 0, analogRead (0) devuelve 512, Si ahora construye el circuito que ve en la Figura 5-6, usando una resistencia de 10k, y ejecute el cédigo listado en el Ejemplo 06A, verd el LED integrado (también podria insertar su propio LED en los pines 13 y GND como Que se muestra en "Parpadeando un LED" en el Capitulo 4) parpadeando a una velocidad que depende de la cantidad de luz que golpea el sensor. sappy 08 2 atzersoe GERbE Gsécisea wecsssza O egico Example O6A: Blink LED at a rate specified by the Ii value of the analogue input ‘Hdefine LED 13 // the pin forthe LED int val 1 variable used to store the value «coming from the sensor void setup) { pinMode([Link], OUTPUT); // LED is s an OUTPUT / Note: Analogue pins are 1 automatically set as inputs } void foop0) { logRead 0); ! read the valu from Vv the digital Write13, HIGH; // um the LED on Aelay(val); stop the program for some time AigitalWrite(13, LOW): /tum the LED off delay(val); stop the program for some time Ahora, pruebe el Ejemplo 06B: pero antes de hacerlo, tendré que modificar su Circuito, Eche un vistazo a la Figura 5-4 y engancha el LED hasta el pin 9 como se muestra. Debido a que ya tienes algunas cosas en la tabla de pruebas, necesitards encontrar un punto en la placa de pruebas donde el LED, los cables y la resistencia no se superpongan con el circuito LOR. ‘7 Example O6B: Set the brightness of LED to 1a brightness specified by the value of the analogue input define LED 9 // the pin forthe LED I vatiable used to store the value coming from the

También podría gustarte