Читать книгу: «Arduino. Trucos y secretos.», страница 2

Шрифт:

4. Cargar un sketch con Arduino Web Editor

Después de haber escrito el sketch online, en Arduino Web Editor, pulsa «Verify» y, después, «Upload», igual que en el IDE de Arduino.

Al detalle

El procedimiento de carga de un sketch con Arduino Web Editor no es muy distinto al procedimiento clásico. Para utilizar Arduino Web Editor, debes registrarte en el sitio web e instalar el plugin en el ordenador (consulta el truco núm. 1).

Para cargar un sketch en Arduino Web Editor:

1.Entra en Arduino Web Editor (https://create.arduino.cc/editor) con tus datos de inicio de sesión y tu contraseña.

2.Crea tu primer prototipo y conéctalo a Arduino.

3.Escribe el sketch online.

4.Conecta Arduino a tu ordenador.

5.Comprueba que se encuentre seleccionada tu placa y el puerto serie correcto (Figura 1.7) mediante el menú desplegable situado al inicio del sketch.

6.Seguidamente, pulsa el botón «Verify» (muestra un signo con forma de «V» y está situado justo debajo del título del sketch).

7.Pulsa «Upload», el botón situado junto a «Verify», para transferir el programa desde los servidores de Arduino a tu placa (Figura 1.8).

8.Tras unos instantes, el firmware será transferido y, en la parte inferior de la ventana, debería aparecer el texto «Success: Done Uploading» (Figura 1.9).


Figura 1.7 – Antes de cargar el sketch con Arduino Web Editor, selecciona la placa y el puerto serie que hay que utilizar.


Figura 1.8 – Los botones «Verify» y «Upload» se encuentran justo debajo del título del sketch.


Figura 1.9 – Cuando finaliza la carga, en la parte inferior de la ventana, aparecerá el mensaje: «Success: Done Uploading».

5. Simular Arduino con TinkerCAD Circuits

Es posible montar y simular un circuito electrónico con Arduino utilizando TinkerCAD Circuits (http://www.tinkercad.com/), un software online que surgió, en un principio, para el modelado 3D pero que, desde hace poco tiempo, también incluye un módulo de diseño y simulación electrónica. Para poder utilizar TinkerCAD Circuits es preciso registrarse y funciona directamente desde el navegador.

Al detalle

¿Existe un simulador para Arduino? Mucha gente se hace esta pregunta y, de hecho, hace unos años, había algún software, aunque las distintas soluciones existentes presentaban todas limitaciones o algún que otro defecto para ser consideradas útiles. Hace poco, Autodesk ha preparado un módulo online para realizar y simular cualquier tipo de circuito electrónico.

Los simuladores existen desde hace mucho tiempo, aunque suelen ser programas difíciles de usar. Autodesk ha conseguido crear un programa integrado dentro de TinkerCAD, un conocido CAD online, muy sencillo de usar y bastante fiable. El simulador de Autodesk se denomina TinkerCAD Circuits y permite no solo simular circuitos analógicos, formados por LED, resistencias, condensadores y transistores, e integrados, sino también añadir Arduino, programarlo y depurarlo. Una auténtica maravilla.

Para utilizar TinkerCAD Circuits, es obligatorio registrarse gratuitamente en TinkerCAD (http://www.tinkercad.com/) introduciendo tu correo electrónico y una contraseña segura. También es posible activar un proceso de inicio de sesión en dos pasos con el envío de un código numérico para el acceso. Una vez registrado, ya se puede acceder a TonkerCAD. Para entrar en la sección Circuits, hay que pulsar sobre el enlace situado en la barra de herramientas de la izquierda. En el escritorio verás todos tus circuitos, con una previsualización y el título. Para crear un nuevo circuito, pulsa en «Create new Circuit». Los circuitos pueden ser privados o públicos. Para modificar la visibilidad, pulsa sobre el icono que muestra un engranaje en una esquina de la imagen de la previsualización y elige la opción «properties». Si decides hacer público un circuito, asegúrate de completar todas las informaciones necesarias y de introducir etiquetas y una descripción adecuada. Al situar el puntero del ratón sobre la previsualización aparece el texto «Tinker this»: pulsa sobre él para modificar el circuito.


Figura 1.10 – El escritorio de TinkerCAD Circuits.

Tanto el diseño como la modificación de un circuito son muy sencillos y rápidos. La configuración del área de trabajo es muy parecida a la de Fritzing. Los componentes se agrupan en la columna de la izquierda, dentro de un panel que cuenta con filtros y un campo de búsqueda. Para crear un circuito, empieza a arrastrar elementos hasta el área principal. Si te falta algo, intenta buscarlo. Por ejemplo, puedes pedir una bread- board escribiendo «breadboard» en el campo de búsqueda. Las conexiones eléctricas se trazan pulsando sobre un terminal libre y desplazando el ratón. El algoritmo de trazado de los cables es muy flexible y permite trazar líneas ordenadas y con curvas precisas.


Figura 1.11 – TinkerCAD permite crear circuitos electrónicos, así como utilizar Arduino.

Insertando en el área de trabajo una placa Arduino (hasta el momento solo está disponible Arduino Uno), podrás editar el código e, incluso, probarlo. Para acceder al código, hay que pulsar el botón «Code» situado en la barra de herramientas superior. Aparecerá un nuevo panel a la derecha, en el cual podrás empezar a escribir el código para Arduino. Cuando veas por primera vez el panel para escribir el código te sorprenderá: el código se encuentra definido por bloques, como en Scratch. ¡Incluso los más pequeños pueden empezar a experimentar con Arduino! Para cambiar a la vista «clásica» del sketch, abre el menú desplegable situado sobre el panel que contiene los bloques y elige «Code».

Prueba a escribir el código para que un LED parpadee:

void setup() { pinMode(13, OUTPUT);

}

void loop() {

digitalWrite(13, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(13, LOW);

delay(1000); // Wait for 1000 millisecond(s)

}

Comprueba que el código sea correcto y, después, pulsa «Start Simulation» para iniciar la simulación. Tras unos instantes, si no hay errores, ¡el LED de Arduino empezará a parpadear! Sencillo, ¿no?


Figura 1.12 – Para acceder al código de Arduino hay que pulsar el botón «Code».

El simulador también permite depurar paso a paso el código (debug). Insertando breakpoint, es decir, puntos de parada donde la ejecución del programa se detendrá, podrás analizar los valores memorizados en las variables y entender mejor lo que ocurre. Cuando el programa está en depuración, puedes hacerlo avanzar de breakpoint a break- point o bien línea por línea. Para activar el modo debug basta con pulsar sobre el botón que muestra el dibujo de una cucaracha estilizada. Los breakpoint se insertan simplemente pulsando al inicio de la línea.


Figura 1.13 – TinkerCAD Circuits incluye también el Serial Monitor y el debug.


Figura 1.14 – Incluso los más pequeños pueden escribir código para Arduino utilizando la programación por bloques estilo Scratch.

6. Programar Arduino por bloques con Bitbloq

Bitbloq es un entorno de programación online, por bloques, para Arduino. Para utilizarlo, hay que acceder desde Chrome a la siguiente dirección web: http://bitbloq.bq.com.

Al detalle

Bitbloq 2 es un lenguaje de programación por bloques que se puede utilizar para diseñar proyectos para Arduino. Se utiliza online y puede programar directamente las placas Arduino Uno mediante un plugin que debe instalarse en el ordenador. La forma de los bloques es muy parecida a la de Scratch y de TinkerCAD Circuits. A diferencia de este último, los circuitos y los proyectos no pueden ser simulados, sino solo creados. Para probarlos, es preciso cargarlos en una placa real, que puede ser un Arduino Uno, un Arduino Mega o algunos kits robóticos propuestos por Bitbloq. Las placas y el hardware son limitados y solo se pueden utilizar los componentes incluidos en los kits. No encontrarás bread- boards, resistencias ni transistores. Para programar con Bitbloq debes instalar el navegador Chrome y es recomendable registrarse, si bien se puede utilizar también como invitado.

El área de trabajo está dividida en tres columnas principales:

•A la izquierda puedes ver un selector para activar las vistas «hardware», «software» y «project info».

•En el centro, el área principal, donde se diseñan los circuitos y los bloques de código.

•A la derecha, un panel con las piezas de hardware o los distintos tipos de bloques (según el modo de trabajo activo).

Para programar Arduino con Bitbloq:

1.Conecta una placa Arduino Uno al ordenador con un cable USB.

2.Abre Bitbloq 2 (http://bitbloq.bq.com) desde el navegador Chrome.

3.Entra introduciendo los datos de inicio de sesión y la contraseña, o bien trabaja como invitado.

4.Si has iniciado sesión, crea un nuevo proyecto.

5.Pulsa sobre la pestaña «Boards» y arrastra una placa Arduino Uno al área de trabajo (Figura 1.15).


Figura 1.15 – El área principal de trabajo de Bitbloq: arrastra una placa Arduino Uno para empezar a diseñar el código.

6.Añade los componentes de hardware necesarios arrastrándolos hasta el área de trabajo y conectándolos entre sí.

7.Pasa a la vista «Software» y crea un sketch arrastrando los bloques desde la columna lateral.

8.Pulsa en «Probar» (el botón con forma de «V» situado sobre el menú/barra de herramientas superior) y espera a que el programa se compile correctamente.

9.Pulsa sobre el botón «Subir» (muestra un símbolo en forma de flecha y está situado sobre el menú/barra de herramientas superior) y aparecerá una ventana que solicitará la descarga de la aplicación Web2Board. Selecciona el sistema operativo correcto e instala el plugin. Es posible que tengas que reiniciar el ordenador. Esta operación es necesaria solo la primera vez que se utiliza Bitbloq.

10.Tras este reinicio, vuelve a abrir Bitbloq 2, abre de nuevo el proyecto y pulsa una vez más sobre el botón «Cargar».

11.Cuando termine la carga, aparecerá un mensaje en la pantalla que informa de que todo ha ido bien: «Programa cargado con éxito».

Verás que las conexiones eléctricas están simplificadas. Para conectar un LED a Arduino, se indica un único cable; esto es así porque se prevé el uso de placas sencillas y kits robóticos que no necesitan un montaje complejo de los circuitos.

La sección de programación por bloques se divide en tres partes: una zona para definir variables globales (funciones y clases con visibilidad global), una zona Setup y una zona Loop.

Los bloques están agrupados en la columna de la derecha y organizados según su funcionalidad. Para añadir un bloque al sketch, basta con arrastrarlo hasta una de las tres zonas de trabajo, exactamente dentro del rectángulo «Drag a block here to start your program».

Los bloques insertados en la zona Setup se ejecutan al inicio del programa y se utilizan para determinar el comportamiento de los pines y de otras acciones que deben ejecutarse solo una vez al inicio del programa. Los bloques insertados en la zona Loop se repiten continuamente.

Si sientes curiosidad por ver cómo se crea el sketch, puedes pasar de la vista de bloques a la de código pulsando sobre «Blocks» o «Code».

Para hacer que un LED parpadee, primero debes conectar un LED a la placa (Figura 1.16) y, después, pasar a la sección «Software» para componer los bloques (Figura 1.17).


Figura 1.16 – Añade los componentes electrónicos arrastrándolos desde el panel lateral.


Figura 1.17 – En la sección Software puedes crear un sketch arrastrando los bloques desde el panel lateral.

No es necesario que especifiques el pin utilizado en la sección Setup. Para realizar el blink, arrastra un bloque «Switch on» desde el área «Components» (de color rojo), después, un bloque «Delay» desde la sección «Control» (color azul), un bloque «switch off» y otro «Delay» (Figura 1.18). Al mismo tiempo que el sketch gráfico, Bitbloq genera el correspondiente código, visible en la sección «Code» (Figura 1.19).

Completa el proyecto añadiendo un nombre y una descripción en la sección «Project Info».


Figura 1.18 – El código de un simple blink.


Figura 1.19 – Si sientes curiosidad, puedes echar un vistazo al código generado por Bitbloq.

1 El condicional es obligatorio dada la heterogénea variedad de configuraciones de hardware y las versiones de Windows.


Programar Arduino

Para crear prototipos, es preciso escribir código. En esta sección, encontrarás soluciones a los casos más habituales que pueden surgir al programar Arduino: trabajar con listas, matrices, gestionar bucles, crear funciones y objetos, generar números aleatorios y desarrollar operaciones lógicas.

Arduino fue creado para ser un sistema simple y de fácil acceso incluso para gente sin experiencia. Nació como plataforma de desarrollo y prototipado donde lo normal es experimentar. El equipo de Massimo Banzi ha hecho todo lo posible para reducir cualquier dificultad. Uno de los aspectos más complicados se encuentra en la escritura del código. No todos son capaces de hacerlo y, por desgracia, las tecnologías modernas no invitan a aventurarse con la programación, ¡aunque todos tengamos en nuestras manos un smartphone y, con él, un pequeño ordenador! Antes, los ordenadores estaban hechos para ser programados y se vendían con un manual de programación, al cual tarde o temprano se accedía para echar un vistazo o para realizar algún que otro experimento y aprender a programar.

Programar un microcontrolador requiere conocer el lenguaje C/C++ y, en ocasiones, incluso código máquina, todavía más complicado. La programación de Arduino se ha simplificado notablemente añadiendo librerías que hacen que la aplicación de todas las operaciones fundamentales sea más sencilla. Para configurar un pin como entrada o salida no se debe modificar ningún registro: basta con llamar al pinMode(). Además de estas dificultades, los principiantes se encuentran con el hecho de tener que escribir un programa. La programación requiere el análisis del problema por resolver y la elaboración de una solución. En esta sección encontrarás una serie de trucos para afrontar algunos de los problemas de programación más «comunes» que pueden surgir al crear prototipos con Arduino.

7. Crear un sketch vacío

Para crear un sketch vacío, accede a la opción de menú File > Nuevo o bien utiliza el atajo de teclado Ctrl + N (en Mac, Cmd + N). Entre los ejemplos, verás la estructura del sketch vacío: File > Ejemplos > 01.Basics > BareMinimum. Un sketch siempre debe tener las dos secciones denominadas setup() y loop().

Al detalle

Cada vez que desees empezar un nuevo proyecto, deberás abrir un nuevo sketch. ¡Así de sencillo! Inicia Arduino IDE y pulsa las teclas Ctrl + N (Cmd + N en Mac) para abrir una ventana nueva que contiene la estructura de un nuevo sketch. Normalmente, no será necesario que escribas la estructura de un sketch desde cero. También puedes encontrar la estructura básica del sketch de Arduino entre los ejemplos, siguiendo la ruta de menú File > Ejemplos > 01.Basics > BareMinimum.

El sketch contiene dos secciones denominadas setup() y loop(). La sección setup() contiene las instrucciones de inicialización de la placa, que se ejecutan cuando esta se enciende; en la parte loop() verás las instrucciones que se repetirán hasta el infinito. Las secciones están delimitadas entre llaves. Este sería el código mínimo para crear un sketch:

void setup() {

//aquí iría el código de inicialización

}

void loop() {

//aquí iría el código que se repite

}

En el teclado no aparece el símbolo de la llave. Para escribirla, deberás pulsar una combinación de teclas: Alt Gr + Shift + [ y Alt Gr + Shift + ]. En Mac las teclas que debes pulsar son: Alt + Shift + [ y Alt Gr + Shift + ].

El código puede tener comentarios, es decir, notas que Arduino ignorará pero que sirven para insertar información de uso en el programa o la descripción de su funcionamiento. Los comentarios en Arduino se muestran de color gris. Si un comentario ocupa una sola línea, va precedido de una doble barra //. Un comentario que ocupa varias líneas empieza con /* y termina con */. Todo el texto incluido entre los dos delimitadores será ignorado.

A continuación, como ejemplo, puedes ver el comentario de varias líneas situado al inicio del ejemplo Blink:

/*

Blink

Turns on an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control. On the Uno and

Leonardo, it is attached to digital pin 13. If you΄re unsure what

pin the on-board LED is connected to on your Arduino model, check

the documentation at http://arduino.cc

This example code is in the public domain.

modified 8 May 2014

by Scott Fitzgerald

*/

Un poco más adelante, puedes ver un comentario de una sola línea:

// the setup function runs once when you press reset or power the board

Inserta siempre muchos comentarios en tus sketch: te ayudarán a recordar cómo funciona. Te aseguro que, sin comentarios, al cabo de un tiempo, incluso el código que ahora te parece sencillísimo te parecerá complicado.

8. Utilizar una variable

Una variable es un espacio de la memoria de Arduino para contener datos. Para crear una variable, en primer lugar debes escribir el tipo de datos que contendrá, seguido del nombre que desees. Una variable puede estar «vacía» o sin asignar, o puede contener un valor inicial, que se puede especificar escribiendo un signo igual seguido del valor inicial.

El nombre de una variable puede estar formado por mayúsculas y minúsculas, números y signos especiales, como «_» o «-». El nombre de la variable debe empezar por una letra y no puede contener espacios.

Una variable entera sin asignar sería:

int temperatura;

Una variable entera de tipo long con valor inicial sería:

long presión = 12345;

Una declaración múltiple de variables sería:

int x, y;

Una declaración múltiple de variables con asignación sería:

float m = 1.2, n = 3.4;

Al detalle

Los programas almacenan datos dentro de las celdas de memoria. ¿Cómo se inserta un dato en una celda de memoria? Dicho así, parece incluso intimidatorio, aunque el modo de hacerlo es muy sencillo: se utilizan variables. Una variable es como un pequeño cajón donde se guardan informaciones. Son cajones «tipificados», es decir, que pueden contener un tipo muy concreto de dato. Un cajón (una variable) tiene un nombre que debe respetar unas normas: no puede empezar por números o por caracteres especiales (por ejemplo *, +, -, etc.). Habitualmente se pueden utilizar de forma indiferente mayúsculas y minúsculas.

Nombres de variables válidos serían:

temperatura

i

parametro123

Nivel_de_gasolina

VOLUMEN

Nombres de variables no permitidos serían:

12gama

nivel del gas

*pipa

Para utilizar una variable, solo tienes que escribir su nombre. Cuando Arduino encuentre alguna, irá a buscarla en su memoria y la sustituirá por el valor correcto. Veamos un ejemplo sencillo, muy conocido:

int led = 13;

void setup(){

pinMode(led, OUTPUT);

}

void loop() {

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

En esta versión del sketch blink se utiliza una variable para memorizar el número del pin al cual se encuentra conectado el LED que debe parpadear. Y esto es así porque es posible que hoy quieras que parpadee el pin 13, pero mañana, el pin 2. La variable led, situada al inicio del sketch, contiene el número del pin que quieres que parpadee, el número 13. Cuando Arduino ejecute el sketch, creará una variable de nombre led que contiene memorizado el número 13. Dentro del setup(), al encontrar el pinMode(), en lugar de un número verá led e irá a buscar en su memoria la variable led para leer el valor memorizado, 13, que utilizará para configurar el pin. En el loop(), cuando Arduino se encuentre con digitalWrite(), volverá a encontrarse con led, que sustituirá por el valor memorizado: 13. La ventaja de utilizar una variable es que, en el caso de que desees modificar el pin al cual se encuentra conectado el LED, ¡solo tendrás que realizar un cambio al inicio del sketch!

Dentro de un sketch no puede haber dos declaraciones de variables con el mismo nombre. Esta regla, sin embargo, no tiene en cuenta el scope de las variables. Cada variable tiene su propio ámbito o su propio alcance o visibilidad (scope). Una variable definida al inicio de un sketch, fuera de loop() y setup() tiene el alcance máximo, porque es visible en todas partes y, por tanto, puede ser utilizada dentro de loop(), de setup() y de cualquier otro bloque de código que exista.

int x = 0;

void setup(){

x = 10;

}

void loop() {

x = x + 2;

}

En este sketch, la variable x ha sido definida al inicio del sketch, fuera de loop() y de setup() y, por tanto, es visible en todas partes. Se puede utilizar tanto dentro de loop() como de setup(), sin que surjan errores de compilación. Piensa en el sketch como si fuera una habitación que contiene dos habitaciones más denominadas loop() y setup(). En cambio, si se define una variable dentro de loop() o de setup(), esta tendrá visibilidad solo dentro del bloque de código en el cual ha sido definida. Una variable creada dentro de setup() no será visible dentro de loop().

void setup(){

char cmd = ΄a΄;

}

void loop() {

cmd = ΄s΄;

}

Si tratas de compilar este ejemplo, se producirá un error, porque la variable cmd, definida dentro de setup(), no es visible también dentro de loop(). Una variable muy utilizada y a menudo redefinida es i, que se utiliza tradicionalmente para crear contadores:

void setup(){

}

void loop() {

for (int i = 0; i < 10; i++){

//código que hace algo…

}

for (int i = 0; i < 200; i++){

//código que hace otras cosas…

}

}

En este sketch, la variable i ha sido redefinida dos veces dentro de los dos bucles for. Si compilas el sketch no se producirá ningún error porque ambas variables se encuentran dentro del scope del bucle for. Es como si el bucle for fuera una especia de habitación dentro de la habitación del loop(): de este modo, no existe ningún conflicto.

Una vez elegido el nombre, deberás definir qué tipo de información podrá contener la variable. Una variable creada para almacenar números enteros podrá contener solo números sin coma, positivos o negativos: 0, 1, 2, -1…

Para definir una variable en C/C++ deberás escribir lo siguiente:

int nivel_gasolina = 10;

En primer lugar, debes indicar el tipo de número que podrá contener la variable, que, en este caso, es int, es decir, números enteros. Seguidamente, asigna a la variable el valor 10, utilizando el signo igual. Si lo deseas, puedes crear una variable sin preasignar ningún valor:

int nivel_agua;

El compilador asignará un valor predeterminado que podría ser igual a cero, pero siempre es mejor no confiar en ello y asignar a las variables un valor inicial conocido (simplemente para no llevarse una sorpresa). Es posible inicializar más de una variable a la vez:

float x,y,x;

y asignarles, si se desea, su valor inicial:

float x=0.1, y=10.2, z=-5.6;

Además del tipo int, que engloba valores desde –32.768 hasta 32.767, existen también long y byte. Un byte es un entero pequeño que puede contener valores que van del 0 al 255. En cambio, el tipo long contiene números muy altos que van del –2.147.483.648 al 2.147.483.647. También se pueden utilizar números sin signo, en cuyo caso tenemos:

•Unsigned char - de 0 a 255 y equivale al tipo byte.

•Unsigned int - de 0 a 65.535.

•Unsigned long – de 0 a 4.294.967.295.

¿Se pueden utilizar números con coma? Sí, pero no es recomendable en los programas escritos para Arduino porque consumen mucha memoria. Para definir un número con coma, se utiliza la palabra clave float seguida del nombre de la variable y, si procede, del valor que se desea asignar. Para indicar la coma, recuerda que debes utilizar el punto (.), como en el sistema anglosajón.

float tension_sensor = 1.12;

Los números float requieren cuatro bytes y asumen valores del 3,4028235 ⋅ 10+38 al –3,4028235 ⋅ 10+38. En lenguaje C, si se necesita una mayor precisión, se pueden utilizar los números con coma de tipo double, pero en Arduino Uno, double y float son equivalentes.

1 948,48 ₽
Жанры и теги
Возрастное ограничение:
0+
Объем:
569 стр. 249 иллюстраций
ISBN:
9788426727756
Издатель:
Правообладатель:
Bookwire
Формат скачивания:
epub, fb2, fb3, ios.epub, mobi, pdf, txt, zip

С этой книгой читают

Эксклюзив
Черновик
4,7
127
Хит продаж
Черновик
4,9
474