Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Este libro ha sido escrito por Michael Margolis y Brian Jepson con Nick Weldin para ayudarte a explorar las cosas asombrosas que puedes hacer con Arduino.

Arduino es una familia de microcontroladores (ordenadores diminutos) y un entorno de creación de software que te facilita la creación de programas (llamados bocetos) que pueden interactuar con el mundo físico. Los objetos que fabriques con Arduino pueden sentir y responder al tacto, el sonido, la posición, el calor y la luz. Este tipo de tecnología, a menudo denominada informática física, se utiliza en todo tipo de cosas, desde teléfonos inteligentes a sistemas electrónicos de automóviles. Arduino hace posible que cualquier persona interesada -incluso sin experiencia en programación o electrónica- utilice esta tecnología rica y compleja.

A quién va dirigido este libro

Este libro está dirigido a los lectores interesados en utilizar la tecnología informática para interactuar con el entorno. Es para personas que quieren encontrar rápidamente la solución a problemas de hardware y software. Las recetas proporcionan la información que necesitas para realizar una amplia gama de tareas. También contiene detalles que te ayudarán a personalizar las soluciones para satisfacer tus necesidades específicas. No hay espacio suficiente en este libro para cubrir el trasfondo teórico general, por lo que se proporcionan enlaces a referencias externas a lo largo del libro. Consulta "Lo que quedó fuera" para ver algunas referencias generales para quienes no tengan experiencia en programación o electrónica.

Si no tienes experiencia en programación -quizá tienes una gran idea para un proyecto interactivo pero no tienes las habilidades para desarrollarlo- este libro te ayudará a aprender a escribir código que funcione, utilizando ejemplos que cubren más de 200 tareas comunes. Los principiantes absolutos tal vez deseen consultar un libro para principiantes como Getting Started with Arduino (Make Community), de Massimo Banzi y Michael Shiloh.

Si tienes cierta experiencia en programación pero eres nuevo en Arduino, el libro te ayudará a ser productivo rápidamente demostrándote cómo implementar capacidades específicas de Arduino para tu proyecto.

Las personas que ya utilizan Arduino encontrarán el contenido útil para aprender rápidamente nuevas técnicas, que se explican mediante ejemplos prácticos. Esto te ayudará a embarcarte en proyectos más complejos mostrándote cómo resolver problemas y utilizar capacidades que pueden ser nuevas para ti.

Los programadores experimentados en C/C++ encontrarán ejemplos de cómo utilizar los recursos de bajo nivel del AVR (interrupciones, temporizadores, I2C, Ethernet, etc.) para crear aplicaciones utilizando el entorno Arduino.

Cómo está organizado este libro

El libro contiene información que cubre la amplia gama de capacidades de Arduino, desde conceptos básicos y tareas comunes hasta tecnología avanzada. Cada técnica se explica en una receta que te muestra cómo poner en práctica una capacidad concreta. No es necesario que leas el contenido en secuencia. Cuando una receta utiliza una técnica tratada en otra receta, se hace referencia al contenido de la otra receta en lugar de repetir los detalles en varios lugares.

Capítulo 1, "Cómo empezar"
Presenta el entorno Arduino y proporciona ayuda para instalar y poner en funcionamiento el entorno de desarrollo y el hardware Arduino. Este capítulo presenta algunas de las nuevas placas más populares. Los dos capítulos siguientes presentan el desarrollo del software Arduino.
Capítulo 2, "Programación con Arduino"
Abarca conceptos y tareas de software esenciales.
Capítulo 3, "Operaciones matemáticas"
Muestra cómo utilizar las funciones matemáticas más comunes.
Capítulo 4, "Comunicaciones serie"
Describe cómo conseguir que Arduino se conecte y comunique con tu ordenador y otros dispositivos. Serial es el método más común para la entrada y salida de Arduino, y esta capacidad se utiliza en muchas de las recetas de todo el libro.
Capítulo 5, "Entrada digital y analógica simple"
Introduce una serie de técnicas básicas de lectura de señales digitales y analógicas.
Capítulo 6, "Obtener información de los sensores"
Amplía los conceptos del capítulo anterior con recetas que explican cómo utilizar dispositivos que permiten a Arduino percibir el tacto, el sonido, la posición, el calor y la luz.
Capítulo 7, "Salida visual"
Cubre el control de la luz. Las recetas cubren el encendido de uno o varios LED y el control del brillo y el color. Este capítulo explica cómo puedes controlar gráficos de barras y pantallas LED numéricas, así como crear patrones y animaciones con matrices de LED. Además, el capítulo ofrece una introducción general a la salida digital y analógica para quienes no estén familiarizados con ella.
Capítulo 8, "Salida física"
Explica cómo puedes hacer que las cosas se muevan controlando motores con Arduino. Cubre una amplia gama de tipos de motores: solenoides, servomotores, motores de corriente continua y motores paso a paso.
Capítulo 9, "Salida de audio"
Muestra cómo generar sonido con Arduino a través de dispositivos de salida como un altavoz. Cubre la reproducción de tonos y melodías sencillos y la reproducción de archivos WAV y MIDI.
Capítulo 10, "Control remoto de dispositivos externos"
Describe técnicas que pueden utilizarse para interactuar con casi cualquier dispositivo que utilice algún tipo de mando a distancia, como televisores, equipos de audio, cámaras, puertas de garaje, electrodomésticos y juguetes. Se basa en las técnicas utilizadas en capítulos anteriores para conectar Arduino a dispositivos y módulos.
Capítulo 11, "Utilizar pantallas"
Cubre la interconexión de pantallas LCD gráficas y de texto. El capítulo muestra cómo puedes conectar estos dispositivos para mostrar texto, desplazarte o resaltar palabras, y crear símbolos y caracteres especiales.
Capítulo 12, "Utilizar la hora y las fechas"
Cubre las funciones integradas de Arduino relacionadas con el tiempo e introduce muchas técnicas adicionales para manejar los retardos temporales, la medición del tiempo y las horas y fechas del mundo real.
Capítulo 13, "Comunicación mediante I2C y SPI"
Cubre los estándares Circuito Inter Integrado (I2C) e Interfaz Periférica Serie (SPI). Estos estándares proporcionan formas sencillas de transferir información digital entre los sensores y Arduino. Este capítulo muestra cómo utilizar I2C y SPI para conectarse a dispositivos comunes. También muestra cómo conectar dos o más placas Arduino, utilizando I2C para aplicaciones multiplaca.
Capítulo 14, "Comunicación inalámbrica sencilla"
Cubre la comunicación inalámbrica con XBee, Bluetooth y otros módulos inalámbricos. Este capítulo proporciona ejemplos que van desde simples sustitutos inalámbricos de puertos serie hasta redes en malla que conectan varias placas a varios sensores.
Capítulo 15, "WiFi y Ethernet"
Describe las muchas formas en que puedes utilizar Arduino con Internet. Tiene ejemplos que demuestran cómo construir y utilizar clientes y servidores web y muestra cómo utilizar los protocolos de comunicación de Internet más comunes con Arduino. Este capítulo también incluye recetas que te ayudarán a conectar Arduino al Internet de las Cosas.
Capítulo 16, "Utilizar, modificar y crear bibliotecas"
Las bibliotecas de software de Arduino son una forma estándar de añadir funcionalidad al entorno Arduino. Este capítulo explica cómo utilizar y modificar las bibliotecas de software. También proporciona orientación sobre cómo crear tus propias bibliotecas.
Capítulo 17, "Codificación avanzada y manejo de la memoria"
Abarca técnicas avanzadas de programación, y los temas que aquí se tratan son más técnicos que los de las otras recetas de este libro, porque cubren cosas que normalmente quedan ocultas por la amigable envoltura de Arduino. Las técnicas de este capítulo pueden utilizarse para hacer que un boceto sea más eficiente: pueden ayudar a mejorar el rendimiento y a reducir el tamaño del código de tus bocetos.
Capítulo 18, "Utilizar el hardware del chip controlador"
Muestra cómo acceder y utilizar funciones de hardware que no están totalmente expuestas a través del lenguaje documentado de Arduino. Cubre el uso a bajo nivel de los registros de entrada/salida, temporizadores e interrupciones del hardware.
Apéndice A, "Componentes electrónicos"
Proporciona una visión general de los componentes utilizados a lo largo del libro.
Apéndice B, "Uso de diagramas esquemáticos y hojas de datos"
Explica cómo utilizar los diagramas esquemáticos y las hojas de datos.
Apéndice C, "Construir y conectar el circuito"
Proporciona una breve introducción al uso de una protoboard, a la conexión y uso de fuentes de alimentación externas y baterías, y al uso de condensadores para desacoplar.
Apéndice D, "Consejos para solucionar problemas de software"
Proporciona consejos para solucionar problemas de compilación y ejecución.
Apéndice E, "Consejos para solucionar problemas de hardware"
Trata problemas con circuitos electrónicos.
Apéndice F, "Pines digitales y analógicos"
Proporciona tablas que indican la funcionalidad proporcionada por los pines en las placas Arduino estándar.
Apéndice G, "ASCII y juegos de caracteres extendidos"
Proporciona tablas que muestran caracteres ASCII.

Lo que se omitió

No hay espacio en este libro para cubrir la teoría de la electrónica y la práctica, aunque se proporciona orientación para construir los circuitos utilizados en las recetas. Para más detalles, los lectores pueden consultar el material disponible en Internet o libros como los siguientes:

  • Make: Electrónica, segunda edición, por Charles Platt (Comunidad Make)

  • Introducción a la electrónica por Forrest M. Mims, III (Master Publishing)

  • Informática física por Tom Igoe (Cengage)

  • Electrónica práctica para inventores, cuarta edición, de Paul Scherz y Simon Monk (McGraw-Hill)

  • El arte de la electrónica, de Paul Horowitz y Winfield Hill (Cambridge University Press)

Este libro de cocina explica cómo escribir código para realizar tareas específicas, pero no es una introducción a la programación C o C++ (los lenguajes en los que se basa el entorno de desarrollo de Arduino). Se explican brevemente los conceptos de programación relevantes, pero no hay espacio suficiente para cubrir los detalles. Si quieres aprender más sobre C y C++, puedes consultar uno de los siguientes libros:

  • Head First C: A Brain-Friendly Guide por David Griffiths y Dawn Griffiths (O'Reilly)

  • Un libro sobre C, de Al Kelley e Ira Pohl (Addison-Wesley)

  • El lenguaje de programación C, de Brian W. Kernighan y Dennis M. Ritchie (Prentice Hall); uno de mis favoritos, aunque no es realmente un libro para principiantes, es el libro que ha enseñado a programar en C a mucha gente

  • Programación en C Experto: Deep C Secrets de Peter van der Linden (Prentice Hall); un libro avanzado aunque algo anticuado, este libro es entretenido a la vez que proporciona ideas sobre por qué C es como es

Estilo del Código (Sobre el Código)

El código utilizado a lo largo de este libro se ha adaptado para ilustrar claramente el tema tratado en cada receta. Como consecuencia, se han evitado algunos atajos de codificación habituales, sobre todo en los primeros capítulos. Los programadores de C experimentados suelen utilizar expresiones ricas pero concisas, que son eficientes pero pueden resultar un poco difíciles de leer para los principiantes. Por ejemplo, los primeros capítulos incrementan variables utilizando expresiones explícitas que son fáciles de leer para los no programadores:

    result = result + 1; // increment the count

en lugar del siguiente, utilizado habitualmente por programadores experimentados, que hace lo mismo:

   result++;  // increment using the post-increment operator

Siéntete libre de sustituirlo por el estilo que prefieras. Los principiantes deben estar seguros de que no hay ninguna ventaja en cuanto a rendimiento o tamaño del código por utilizar la forma escueta.

Algunas expresiones de programación son tan comunes que se utilizan en su forma abreviada. Por ejemplo, las expresiones de bucle se escriben así:

for(int i=0; i < 4; i++)

Esto equivale a lo siguiente

int i;
for(i=0; i < 4; i = i+1)

Consulta el Capítulo 2 para obtener más detalles sobre éstas y otras expresiones utilizadas a lo largo del libro.

Una buena práctica de programación implica asegurarse de que los valores utilizados son válidos (la basura que entra es igual a la basura que sale), comprobándolos antes de utilizarlos en los cálculos. Sin embargo, para mantener el código centrado en el tema de la receta, se ha incluido muy poco código de comprobación de errores.

Notas de la versión de la plataforma Arduino

Esta edición se ha actualizado y probado con Arduino 1.8.x. El código descargable se ha actualizado para esta edición, y se ha publicado en dos repositorios: uno para todos los Sketches de Arduino, y otro para todos los Sketches de Processing.

El sitio web de este libro, https://oreil.ly/Arduino_Cookbook_3, tiene un enlace a una página de erratas. Las erratas ofrecen a los lectores una forma de informarnos sobre erratas, errores y otros problemas del libro. Las erratas publicadas serán visibles en la página inmediatamente, y las confirmaremos después de comprobarlas. O'Reilly también puede corregir las erratas en futuras impresiones del libro y en la plataforma de aprendizaje de O'Reilly, mejorando así la experiencia del lector con bastante rapidez.

Si tienes problemas para que los ejemplos funcionen, consulta el Apéndice D, que trata de la resolución de problemas de software. El foro de Arduino es un buen lugar para publicar una pregunta si necesitas más ayuda: https://forum.arduino.cc.

Si te gusta -o no te gusta- este libro, por favor, házselo saber a la gente. Las reseñas de Amazon son una forma popular de compartir tu felicidad u otros comentarios. También puedes dejar reseñas del libro en la plataforma de aprendizaje en línea de O'Reilly.

Notas sobre la tercera edición

Han cambiado muchas cosas desde la segunda edición: proliferación de nuevas placas, mucha más potencia de procesamiento, memoria, capacidades de comunicación y factor de forma. Aunque este libro ha crecido en tamaño con cada edición, es imposible cubrir en profundidad todo lo que todos los lectores puedan desear. El objetivo de esta edición es garantizar que el contenido esté actualizado y ofrecer una visión general de las ricas capacidades puestas a disposición de la comunidad Arduino desde la edición anterior, para ayudarte a iniciarte en esta asombrosa tecnología.

Ten en cuenta que si utilizas versiones de Arduino anteriores a la que aquí se trata, aún puedes descargar el código de la segunda y la primera edición de este libro. Para descargar este código de ejemplo, visita http://examples.oreilly.com/9780596802486 y http://examples.oreilly.com/0636920022244.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código,, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para solicitar permiso a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Arduino Cookbook, Third Edition", de Michael Margolis, Brian Jepson y Nicholas Robert Weldin (O'Reilly). Copyright 2020 Michael Margolis, Nicholas Robert Weldin y Brian Jepson, 978-1-491-90352-0".

Si crees que el uso que haces de los ejemplos de código queda fuera del uso justo o del permiso aquí concedido, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias y más información sobre nuestros libros y cursos, consulta nuestrositio web .

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://www.youtube.com/oreillymedia

Agradecimientos por la segunda edición (Michael Margolis)

La contribución de Nick Weldin ha sido inestimable para completar este libro. Estaba escrito en un 90% cuando Nick se incorporó y, sin su habilidad y entusiasmo, seguiría escrito en un 90%. Su experiencia práctica dirigiendo talleres de Arduino para usuarios de todos los niveles nos permitió hacer que los consejos de este libro fueran prácticos para nuestro amplio abanico de lectores. Gracias, Nick, por tus conocimientos y tu naturaleza genial y colaboradora.

Simon St. Laurent fue el editor de O'Reilly que primero expresó su interés por este libro. Y, al final, fue él quien lo llevó a cabo. Su apoyo y su ánimo nos mantuvieron inspirados mientras nos abríamos paso entre los volúmenes de material necesarios para hacer justicia al tema.

Brian Jepson me ayudó a empezar a escribir este libro. Su vasto conocimiento de todo lo relacionado con Arduino y su preocupación y pericia para comunicar sobre tecnología en un inglés sencillo establecieron un alto nivel. Fue un guía ideal para dar forma al libro y hacer que la tecnología fuera fácilmente accesible para los lectores. También tenemos que agradecer a Brian el nuevo contenido sobre XBee del Capítulo 14.

Brian Jepson y Shawn Wallace fueron los editores técnicos de esta segunda edición y proporcionaron excelentes consejos para mejorar la precisión y claridad del contenido.

Audrey Doyle trabajó incansablemente para eliminar erratas y errores gramaticales del manuscrito inicial y desenmarañar algunas de las expresiones más enrevesadas.

Philip Lindsay colaboró en el contenido del Capítulo 15 de la primera edición. Adrian McEwen, desarrollador principal de muchas de las mejoras de Ethernet en la versión 1.0, proporcionó valiosos consejos para garantizar que este capítulo reflejara todos los cambios de dicha versión.

Mikal Hart escribió recetas sobre GPS y software en serie. Mikal era la elección natural para esto, no sólo porque escribió las bibliotecas, sino también porque es un comunicador fluido, un entusiasta de Arduino y un placer colaborar con él.

Arduino es posible gracias a la creatividad del núcleo del equipo de desarrollo de Arduino: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino y David Mellis. En nombre de todos los usuarios de Arduino, deseo expresar nuestro agradecimiento por sus esfuerzos para hacer sencilla esta fascinante tecnología y por su generosidad al hacerla gratuita.

Un agradecimiento especial a Alexandra Deschamps-Sonsino, cuyos talleres Tinker London proporcionaron una importante comprensión de las necesidades de los usuarios. Gracias también a Peter Knight, que ha proporcionado todo tipo de soluciones ingeniosas con Arduino, así como la base de varias recetas de este libro.

En nombre de todos los que han descargado bibliotecas Arduino aportadas por los usuarios, me gustaría dar las gracias a los autores que han compartido generosamente sus conocimientos.

La disponibilidad de una amplia gama de hardware es gran parte de lo que hace que Arduino sea apasionante: gracias a los proveedores por almacenar y dar soporte a una amplia gama de magníficos dispositivos. Los siguientes proveedores han sido de gran ayuda a la hora de proporcionar el hardware utilizado en el libro: SparkFun, Maker Shed, Gravitech y NKC Electronics. Otros proveedores que han sido de gran ayuda son Modern Device, Liquidware, Adafruit, MakerBot Industries, Mindkits, Oomlout y SK Pang.

A Nick le gustaría dar las gracias a todos los que participaron en Tinker London, en particular a Alexandra, Peter, Brock Craft, Daniel Soltis y a todas las personas que colaboraron en los talleres a lo largo de los años.

El agradecimiento final de Nick va dirigido a su familia, Jeanie, Emily y Finn, que accedieron a dejarle hacer esto durante sus vacaciones de verano y, por supuesto, mucho más tiempo después de lo que pensaron en un principio, y a sus padres, Frank y Eva, por educarle para desmontar cosas.

Por último, pero no por ello menos importante, expreso mi agradecimiento a las siguientes personas:

Joshua Noble por presentarme a O'Reilly. Su libro Programming Interactivity es muy recomendable para quienes estén interesados en ampliar sus conocimientos en informática interactiva.

Robert Lacy-Thompson por ofrecernos su asesoramiento al principio de la primera edición.

Mark Margolis por su apoyo y ayuda como caja de resonancia en la concepción y desarrollo del libro.

Agradezco a mis padres que me ayudaran a ver que las artes creativas y la tecnología no eran entidades distintas y que, cuando se combinan, pueden dar lugar a resultados extraordinarios.

Y por último, este libro no se habría empezado ni terminado sin el apoyo de mi mujer, Barbara Faden. Mi agradecimiento a ella por mantenerme motivado y por su atenta lectura y aportaciones al manuscrito.

Agradecimientos por la Tercera Edición (Brian Jepson)

Un sincero agradecimiento a Michael Margolis, autor principal de este libro, y a Jeff Bleiel, nuestro editor de esta edición. Confiaron en mí para dirigir este libro y presentaros esta nueva edición. Agradezco su confianza y espero que estén tan contentos como yo con los resultados. A título personal, quiero dar las gracias a mi mujer, Joan, por sus ánimos y su paciencia. Escribir un libro, especialmente uno que implica probar y construir docenas de proyectos, afecta a todos en mi vida, y agradezco la comprensión y el apoyo de todos mis amigos y familiares. Un gran agradecimiento a Chris Meringolo y Don Coleman por su revisión técnica, que me mantuvo honesto a mí y a este libro.

Get Libro de cocina Arduino, 3ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.