{"id":5962,"date":"2022-05-23T18:32:12","date_gmt":"2022-05-23T16:32:12","guid":{"rendered":"https:\/\/josedelgado.net\/?page_id=5962"},"modified":"2022-05-23T18:32:39","modified_gmt":"2022-05-23T16:32:39","slug":"cab-8-lenguaje-arduino-funciones","status":"publish","type":"page","link":"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/","title":{"rendered":"CAB 8. Lenguaje Arduino. Funciones"},"content":{"rendered":"\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u00cdndice de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#81_Introduccion\" >8.1 Introducci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#82_Funciones_Especificas_del_Lenguaje_Arduino\" >8.2 Funciones Espec\u00edficas del Lenguaje Arduino<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#83_Funciones_de_Entrada_y_Salida\" >8.3 Funciones de Entrada y Salida<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#831_Funciones_Conectores_Digitales\" >8.3.1 Funciones Conectores Digitales<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#8311_Funcion_pinMode\" >8.3.1.1 Funci\u00f3n pinMode()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#8312_Funcion_digitalWrite\" >8.3.1.2 Funci\u00f3n digitalWrite()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#8313_Funcion_digitalRead\" >8.3.1.3 Funci\u00f3n digitalRead()<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#832_Funciones_Conectores_Analogicos\" >8.3.2 Funciones Conectores Anal\u00f3gicos<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#8321_Funcion_analogRead\" >8.3.2.1 Funci\u00f3n analogRead()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#8322_Funcion_analogWrite\" >8.3.2.2 Funci\u00f3n analogWrite()<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#84_Funciones_de_Control_del_Tiempo\" >8.4 Funciones de Control del Tiempo<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#841_Funcion_delay\" >8.4.1 Funci\u00f3n delay()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#842_Funcion_delayMicroseconds\" >8.4.2 Funci\u00f3n delayMicroseconds()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#843_Funcion_millis\" >8.4.3 Funci\u00f3n millis()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#844_Funcion_micros\" >8.4.4. Funci\u00f3n micros()<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#85_Funciones_de_Generacion_de_Numeros_Aleatorios\" >8.5 Funciones de Generaci\u00f3n de N\u00fameros Aleatorios<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#851_Funcion_randomSeed\" >8.5.1 Funci\u00f3n randomSeed()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#852_Funcion_random\" >8.5.2 Funci\u00f3n random()<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#86_Funciones_Manipulacion_Bits_Control_Interrupciones\" >8.6 Funciones Manipulaci\u00f3n Bits, Control Interrupciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#87_Continuacion%E2%80%A6\" >8.7 Continuaci\u00f3n&#8230;<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"81_Introduccion\"><\/span><strong>8.1 Introducci\u00f3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una funci\u00f3n es un conjunto de instrucciones agrupadas que generalmente realizan una tarea concreta y particular.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las funciones nos permiten organizar el c\u00f3digo haci\u00e9ndolo m\u00e1s legible, sostenible, reutilizable, mejorando su mantenimiento y la participaci\u00f3n de varios programadores en un mismo proyecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La mejor forma de imaginar que es una funci\u00f3n es pensar en una caja negra que a partir de unos par\u00e1metros de entrada devuelve un resultado o realiza una serie de tareas agrupadas con un fin com\u00fan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de una funci\u00f3n es la siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tipo_dato nombre_funci\u00f3n(tipo_parametro_1 nombre_par\u00e1metro_1) {\n   \/\/ Conjunto de instrucciones de la funci\u00f3n\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En una funci\u00f3n, por lo tanto podemos distinguir<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em><strong>tipo_dato<\/strong><\/em>, es el tipo de datos que devuelve la funci\u00f3n como resultado. Si la funci\u00f3n no devuelve ning\u00fan valor este tipo de datos ser\u00e1 <em>void<\/em><\/li><li><em><strong>nombre_funci\u00f3n<\/strong><\/em>,  es el nombre con el que nos referiremos a la funci\u00f3n<\/li><li><em><strong>tipo_parametro_1<\/strong><\/em>, es el tipo de datos del <em>nombre_par\u00e1metro_1<\/em> de la funci\u00f3n<\/li><li><em><strong>nombre_par\u00e1metro_1<\/strong><\/em>, es el nombre de la variable <em>nombre_par\u00e1metro_1<\/em> que hemos pasado como primer argumento de entrada a la funci\u00f3n<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Los par\u00e1metros o argumentos de entrada de una funci\u00f3n pueden ser varios o no tener ninguno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso de tener varios par\u00e1metros de entrada deben estar separados por comas entre s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo de la definici\u00f3n de una funci\u00f3n que devuelve un valor entero y que tiene dos par\u00e1metros de entrada<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de definici\u00f3n de una funci\u00f3n que devuelve un valor entero y que tiene dos par\u00e1metros de entrada\n\/\/ La funci\u00f3n devuelve el mayor de los dos n\u00fameros pasados como argumentos de entrada a la funci\u00f3n\n\nint calcular_mayor_dos_numeros (int a, int b) {\n   int mayor_numero;  \/\/ Variable local a la funci\u00f3n\n   if (a &gt; b) {\n      mayor_numero = a;\n   }\n   else {\n      mayor_numero = b;\n   }\n   return mayor_numero;   \/\/ La funci\u00f3n devuelve como salida el valor contenido en la variable mayor_numero\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para llamar a una funci\u00f3n en el c\u00f3digo de un <em>Sketch <\/em>bastar\u00e1 con poner el nombre de la funci\u00f3n pasando los par\u00e1metros de entrada que contenga y asignar el resultado a una variable en el caso de devolver un valor diferente de <em>void<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo de llamada a la funci\u00f3n del ejemplo anterior<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int d = 100;\nint e = 50;\n\nint may_num = calcular_mayor_dos_numeros (d, e);\n\n\/\/ Esta funci\u00f3n devolver\u00eda en la variable may_num el valor 100<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando llamamos a una funci\u00f3n en nuestro programa en el <strong>puntoA<\/strong> el control salta a la funci\u00f3n, la ejecuta y posteriormente el flujo de ejecuci\u00f3n continua con la siguiente instrucci\u00f3n desde el <strong>puntoA<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podremos definir tantas funciones como consideremos necesarias para nuestro programa y utilizarlas cuando corresponda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n resultan muy \u00fatiles las funciones que vienen definidas directamente en el lenguaje Arduino y que veremos en un apartado a continuaci\u00f3n, pues podremos utilizarlas directamente sin conocer su c\u00f3digo y sin la necesidad de programarlo. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00f3lo necesitaremos conocer el tipo de dato de salida y los par\u00e1metros de entrada junto a sus tipos de datos para poder utilizarlas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"82_Funciones_Especificas_del_Lenguaje_Arduino\"><\/span><strong>8.2 Funciones Espec\u00edficas del Lenguaje Arduino<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como hemos indicado anteriormente, existe una serie de funciones que ya vienen directamente definidas en el lenguaje Arduino y que para su uso no es necesario incluir ninguna libreria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n vamos a ver algunas de las funciones propias del lenguaje Arduino y que son las m\u00e1s utilizadas en la programaci\u00f3n de <em>Sketchs<\/em>, agrupadas por su funcionalidad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"83_Funciones_de_Entrada_y_Salida\"><\/span><strong>8.3 Funciones de Entrada y Salida<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Estas funciones son las encargadas de la gesti\u00f3n de los conectores o pines de las tarjetas Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estos conectores, como ya sabemos, pueden ser Anal\u00f3gicos o Digitales, siendo su control completamente diferente.  Veremos a continuaci\u00f3n funciones para ambos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"831_Funciones_Conectores_Digitales\"><\/span><strong>8.3.1 Funciones Conectores Digitales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas funciones para la gesti\u00f3n y control de los pines o conectores digitales de la placa Arduino son<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8311_Funcion_pinMode\"><\/span><strong>8.3.1.1 Funci\u00f3n pinMode()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Los conectores o pines digitales pueden funcionar en Modo Lectura o Modo Escritura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n nos permite configurar el modo de funcionamiento de cada conector digital que vayamos a utilizar en nuestro <em>Sketch<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se suele llamar en la funci\u00f3n de configuraci\u00f3n<em> setup()<\/em> del <em>Sketch<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pinMode(n\u00famero_pin, modo_funcionamiento);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Donde<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>n\u00famero_pin<\/em>, en Arduino UNO, por ejemplo, ser\u00edan los puertos etiquetados en la propia tarjeta y que van del 0 al 13.<\/li><li><em>modo_funcionamiento<\/em>, se utilizan las constantes INPUT y OUTPUT definidas en el propio lenguaje. INPUT para lectura (por defecto todos los conectores digitales est\u00e1n configurados con esta opci\u00f3n), OUTPUT para escritura.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo de funcionamiento<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de pinMode()\n\nvoid setup(){\n   pinMode (11, OUTPUT);   \/\/ Configuramos el pin o conector n\u00famero 11 en modo escritura\n   pinMode (12, INPUT);    \/\/ Configuramos el pin o conector n\u00famero 12 en modo lectura\n}<\/code><\/pre>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Cabe resaltar, que los conectores anal\u00f3gicos tambi\u00e9n pueden utilizarse como conectores de entrada \/ salida digital. Pero en este caso y en una tarjeta Arduino UNO, por ejemplo, mientras que a los pines digitales nos referimos directamente con su n\u00famero de conector (0 al 13) en el caso de los pines anal\u00f3gicos en la funci\u00f3n <em>pinMode()<\/em> se identificar\u00e1n como A0, A1, A2, A3, A4 y A5.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8312_Funcion_digitalWrite\"><\/span><strong>8.3.1.2 Funci\u00f3n digitalWrite()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurados los pines o conectores podemos escribir o leer por ellos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n nos permite escribir un valor en un pin configurado en modo escritura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>digitalWrite(n\u00famero_pin, valor_escribir);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Donde<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>n\u00famero_pin<\/em>, el numero de conector que vamos a utilizar<\/li><li><em>valor_escribir<\/em>, el valor que vamos a enviar por ese pin. Este valor puede ser uno de los dos definidos en el lenguaje Arduino, que son las constantes LOW o HIGH.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8313_Funcion_digitalRead\"><\/span><strong>8.3.1.3 Funci\u00f3n digitalRead()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Es similar a la funci\u00f3n anterior pero para la lectura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es decir, nos permite leer un valor por un pin o conector configurado en modo lectura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>byte valor_leido;\nvalor_leido = digitalRead(n\u00famero_pin);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n veremos un ejemplo de uso de estas tres funciones<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo uso funciones de Entrada \/ Salida con Conectores Digitales\n\nvoid setup(){\n   pinMode (11, OUTPUT);   \/\/ Configuramos el pin o conector n\u00famero 11 en modo escritura\n   pinMode (12, INPUT);    \/\/ Configuramos el pin o conector n\u00famero 12 en modo lectura\n}\n\nvoid loop(){\n   digitalWrite(11, HIGH);  \/\/ Escribimos HIGH en el pin 11\n\n   byte valor_lectura;\n   valor_lectura = digitalRead(12);   \/\/ Leemos el valor del pin 12 y lo almacenamos en la variable valor_lectura\n\n   break;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"832_Funciones_Conectores_Analogicos\"><\/span><strong>8.3.2 Funciones Conectores Anal\u00f3gicos<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los conectores o pines anal\u00f3gicos tienen una funci\u00f3n similar pero un comportamiento diferente a sus hom\u00f3logos los pines digitales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mientras que los conectores digitales admiten solo valores LOW o HIGH, los conectores anal\u00f3gicos pueden gestionar un rango m\u00e1s amplio de valores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las placas Arduino permiten medir o mejor dicho convertir cantidades anal\u00f3gicas de tensi\u00f3n en valores num\u00e9ricos enteros.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se\u00f1alar que estos valores oscilan entre el <strong>valor 0<\/strong> para una tensi\u00f3n el\u00e9ctrica nula hasta el <strong>valor 1023<\/strong> que equivale al m\u00e1ximo de tensi\u00f3n el\u00e9ctrica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n veremos algunas funciones que nos permiten operar con los pines o conectores anal\u00f3gicos de la placa Arduino<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8321_Funcion_analogRead\"><\/span><strong>8.3.2.1 Funci\u00f3n analogRead()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n permite leer un valor de un conector o pin anal\u00f3gico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este valor de tensi\u00f3n el\u00e9ctrica, la tarjeta Arduino lo convierte en un valor digital de tipo entero.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">En este caso no necesitamos preceder con la letra A al n\u00famero de pin o conector como si ocurr\u00eda en la funci\u00f3n <em>pinMode()<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int valor_leido;\nvalor_leido = analogRead(n\u00famero_pin);     \/\/ n\u00famero_pin en Arduino UNO ser\u00eda un valor entre 0 y 5<\/code><\/pre>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Hay que tener en cuenta que en el caso de la lectura de un pin anal\u00f3gico que no es instant\u00e1neo. Necesita 0,0001 segundos para su lectura. Es decir, solo se puede leer 10.000 veces en cada segundo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8322_Funcion_analogWrite\"><\/span><strong>8.3.2.2 Funci\u00f3n analogWrite()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n requiere una explicaci\u00f3n algo m\u00e1s compleja que las anteriores, pues realmente no existe ninguna funci\u00f3n en Arduino que nos permite generar una se\u00f1al anal\u00f3gica propiamente dicha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin entrar en tecnicismos y de forma esquem\u00e1tica diremos que<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Una tarjeta Arduino es capaz de generar se\u00f1ales PWM (<em>Pulse Width Modulation<\/em>), es decir, Modulaci\u00f3n de Ancho de Pulso<\/li><li>Esta t\u00e9cnica PWM permite reproducir se\u00f1ales anal\u00f3gicas a partir de se\u00f1ales digitales<\/li><li>Las se\u00f1ales PWM solo se pueden reproducir en algunos pines de las tarjetas Arduino. Por ejemplo, en Arduino UNO est\u00e1n marcados los conectores 3, 5, 6, 9, 10 y 11 como puede verse en dicha placa<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La sintaxis de esta funci\u00f3n es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>analogWrite(n\u00famero_pin, valor_escribir);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El par\u00e1metro <em>valor_escribir <\/em>es un entero del tipo byte que puede tomar valores desde 0 (tensi\u00f3n de 0v) hasta 255 (100% de tensi\u00f3n, es decir 5v).  Define el porcentaje m\u00e1ximo de tensi\u00f3n que queremos aplicar al conector <em>n\u00famero_pin<\/em>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"84_Funciones_de_Control_del_Tiempo\"><\/span><strong>8.4 Funciones de Control del Tiempo<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el lenguaje Arduino, existen funciones encargadas de la gesti\u00f3n y administraci\u00f3n del tiempo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Son funciones espec\u00edficas utilizadas en el entorno de programaci\u00f3n del microcontrolador Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas de ellas son<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"841_Funcion_delay\"><\/span><strong>8.4.1 Funci\u00f3n delay()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n nos permite introducir una pausa en nuestro <em>Sketch<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>delay(pausa_milisegundos);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El argumento <em>pausa_milisegundos<\/em> define el tiempo en milisegundos que queremos detener la ejecuci\u00f3n del programa antes de pasar a ejecutar la siguiente instrucci\u00f3n. Es un valor de tipo <em>unsigned long<\/em>, que por lo tanto, nos permite un tiempo en la pausa que puede ser bastante largo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"842_Funcion_delayMicroseconds\"><\/span><strong>8.4.2 Funci\u00f3n delayMicroseconds()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es una funci\u00f3n muy similar a la anterior, pero en este caso el tiempo de la pausa en lugar de milisegundos lo expresamos en microsegundos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>delayMicroseconds(pausa_microsegundos)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El argumento pausa_microsegundos es el tiempo en microsegundos que queremos pausar la ejecuci\u00f3n del programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recordar que 1 microsegundo equivale a 1\/1000 milisegundos.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">La funci\u00f3n que se utiliza de forma m\u00e1s habitual es <em>delay()<\/em>, pero hay que tener en cuenta las dos pues dependiendo de la casu\u00edstica concreta del algoritmo podemos necesitar utilizar cualquiera de las dos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"843_Funcion_millis\"><\/span><strong>8.4.3 Funci\u00f3n millis()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n nos permite contar el tiempo en milisegundos desde que se ha iniciado el <em>Sketch<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tiempo medido es devuelto en un entero de tipo <em>unsigned long<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned long tiempo_transcurrido;\ntiempo_transcurrido = millis();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"844_Funcion_micros\"><\/span><strong>8.4.4. Funci\u00f3n micros()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n es id\u00e9ntica a la anterior, pero el tiempo medido en este caso es en microsegundos en lugar de milisegundos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tiempo medido tambi\u00e9n se almacena en un entero de tipo <em>unsigned long<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unsigned long tiempo_transcurrido;\ntiempo_transcurrido = micros();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"85_Funciones_de_Generacion_de_Numeros_Aleatorios\"><\/span><strong>8.5 Funciones de Generaci\u00f3n de N\u00fameros Aleatorios<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los n\u00fameros aleatorios est\u00e1n \u00edntimamente ligados a la inform\u00e1tica y programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como podr\u00e1s comprobar en la pr\u00e1ctica resultan \u00fatiles y necesarios en muchas situaciones para la resoluci\u00f3n de numerosos problemas algor\u00edtmicos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero, tambi\u00e9n debes saber que la realidad es que inform\u00e1ticamente no es posible la generaci\u00f3n PURA de n\u00fameros aleatorios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando ejecutamos una funci\u00f3n para la generaci\u00f3n de n\u00fameros aleatorios dar\u00e1 como resultado una secuencia no finita de n\u00fameros aleatorios&#8230; <strong>\u00bfEntonces d\u00f3nde est\u00e1 el problema?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para dicha generaci\u00f3n de n\u00fameros aleatorios , el m\u00e9todo que suele utilizarse consiste en la generaci\u00f3n de n\u00fameros <em>pseudo-aleatorios<\/em> a partir de un valor que se denomina<em> <strong>semilla<\/strong><\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>El problema est\u00e1<\/strong> en que en realidad lo que sucede es que dos secuencias de n\u00fameros  <em>pseudo-aleatorios<\/em> que se basan en la misma <em>semilla <\/em>ser\u00e1n id\u00e9nticas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo tanto, para la obtenci\u00f3n de una secuencia de &#8220;<strong>n\u00fameros lo m\u00e1s aleatorios posibles<\/strong>&#8221; debemos utilizar semillas diferentes. Para que sean aleatorias estas semillas deben ser <strong>no controlables y no reproducibles<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>En el lenguaje Arduino, el m\u00e9todo m\u00e1s usual es utilizar como <em>semilla <\/em>la lectura del valor de un conector o pin anal\u00f3gico en el que no hay nada conectado, mediante la funci\u00f3n analogRead().<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es debido a que un pin que no tiene nada conectado se ve afectado en sus valores por las perturbaciones del entorno, con lo cual la lectura del mismo dar\u00e1 como resultado valores &#8220;suficientemente aleatorios&#8221;, pues realmente lo que estamos leyendo es un valor de ruido que ser\u00e1 diferente en cada instante.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"851_Funcion_randomSeed\"><\/span><strong>8.5.1 Funci\u00f3n randomSeed()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n permite inicializar una secuencia de n\u00fameros <em>pseudo-aleatorios<\/em> a partir de una semilla pasada como argumento de entrada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis es la siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>randomSeed(semilla);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El argumento <em>semilla <\/em>debe ser un n\u00famero de tipo <em>long <\/em>o tipo <em>int<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"852_Funcion_random\"><\/span><strong>8.5.2 Funci\u00f3n random()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con esta funci\u00f3n obtenemos el siguiente n\u00famero de la secuencia de n\u00fameros <em>pseudo-aleatorios <\/em>obtenida con la funci\u00f3n anterior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis puede ser de dos formas diferentes, tal y como vemos a continuaci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>random (valor_min, valor max);\n\nrandom (valor_max) ;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Los n\u00fameros obtenidos con esta funci\u00f3n siempre estar\u00e1n contenidos entre dos valores, uno m\u00ednimo y otro m\u00e1ximo, que son los que definimos en la llamada a la funci\u00f3n con los argumentos de entrada <em>valor_min<\/em> y <em>valor_max<\/em>, respectivamente. En este caso los valores estar\u00e1n entre <em>valor_min<\/em> y <em>valor_max-1<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando no pasamos el <em>valor_min<\/em> el ordenador elige como m\u00ednimo el 0, con lo cual en este caso los valores estar\u00e1n entre <em>0<\/em> y <em>valor_max-1<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n veremos un ejemplo que clarifica el uso estas funciones para la generaci\u00f3n de n\u00fameros aleatorios<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo de Generaci\u00f3n de N\u00fameros Aleatorios\n\/\/ Estos los mostramos por el Monitor Serie de Arduino\n\nlong num_aleatorio;   \/\/ Definimos variable para valor N\u00famero Aleatorio con el tipo long\n\nvoid setup() {\n  Serial.begin(9600);   \/\/ Configuramos la velocida del Monitor Serie a 9600 baudios\n  \n  randomSeed(analogRead(0));   \/\/ Inicializamos el Generador de N\u00fameros Aleatorios tomando como valor de semilla\n                               \/\/ el valor de ruido del puerto anal\u00f3gico 0 de la tarjeta Arduino\n}\n\nvoid loop() {\n  Serial.print(\"N\u00famero Aleatorio (0..499): \");\n  num_aleatorio = random(500);   \/\/ Obtendremos un valor entre 0 y 499\n  Serial.println(num_aleatorio);   \n\n  Serial.print(\"N\u00famero Aleatorio (50..99): \");\n  num_aleatorio = random(50, 100);   \/\/ Obtendremos un valor entre 50 y 99\n  Serial.println(num_aleatorio);\n\n  Serial.println(\"--------------------------------------\");\n  \n  delay (1000);  \/\/ Haccemos una pausa de 1 seg antes de ejecutar de nuevo el Bucle\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En la siguiente imagen podemos ver un ejemplo de la ejecuci\u00f3n del Sketch anterior.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"462\" src=\"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\" alt=\"\" class=\"wp-image-5963\" srcset=\"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg 684w, https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios-300x203.jpg 300w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/a><figcaption> Figura CAB8.1 Ejemplo N\u00fameros Aleatorios Monitor Serie de Arduino<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"86_Funciones_Manipulacion_Bits_Control_Interrupciones\"><\/span><strong>8.6 Funciones Manipulaci\u00f3n Bits, Control Interrupciones<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Existen m\u00e1s funciones definidas en el lenguaje Arduino, pero su explicaci\u00f3n considero que no corresponde a un Nivel B\u00e1sico de programaci\u00f3n del lenguaje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo debemos saber que existen funciones que nos permiten manipular bits, controlar las interrupciones &#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas funciones se ver\u00e1n con detalle en el siguiente curso &#8230; <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"87_Continuacion%E2%80%A6\"><\/span><strong>8.7 Continuaci\u00f3n&#8230;<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00f3ximamente&#8230;<\/p>\n\n\n\n<p class=\"has-text-align-center has-huge-font-size wp-block-paragraph\"><strong>Curso de Arduino &#8211; Nivel Medio (CAM)<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-right has-global-color-8-color has-text-color has-large-font-size wp-block-paragraph\"><strong>\u00a1\u00a1\u00a1 No te lo pierdas !!!<\/strong><\/p>\n\n\n\n<section class=\"wp-block-uagb-columns uagb-columns__wrap uagb-columns__background-undefined uagb-columns__stack-mobile uagb-columns__valign-undefined uagb-columns__gap-10 alignundefined uagb-block-5f6c4247\"><div class=\"uagb-columns__overlay\"><\/div><div class=\"uagb-columns__inner-wrap uagb-columns__columns-2\">\n<div class=\"wp-block-uagb-column uagb-column__wrap uagb-column__background-undefined uagb-block-63a8abb2\"><div class=\"uagb-column__overlay\"><\/div><div class=\"uagb-column__inner-wrap\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"https:\/\/josedelgado.net\/cab-7-lenguaje-arduino-estructuras-de-control\/\"> Anterior &lt;&#8211;  CAB 7. Lenguaje Arduino. Estructuras de Control  <\/a><\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-column uagb-column__wrap uagb-column__background-undefined uagb-block-d25dca42\"><div class=\"uagb-column__overlay\"><\/div><div class=\"uagb-column__inner-wrap\">\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\"><\/div>\n<\/div><\/div>\n<\/div><\/section>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>8.1 Introducci\u00f3n Una funci\u00f3n es un conjunto de instrucciones agrupadas que generalmente realizan una tarea concreta y particular. Las funciones nos permiten organizar el c\u00f3digo haci\u00e9ndolo m\u00e1s legible, sostenible, reutilizable, mejorando su mantenimiento y la participaci\u00f3n de varios programadores en un mismo proyecto. La mejor forma de imaginar que es una funci\u00f3n es pensar en una caja negra que a partir de unos par\u00e1metros de entrada devuelve un resultado o realiza una serie de tareas agrupadas con un fin com\u00fan. La sintaxis de una funci\u00f3n es la siguiente En una funci\u00f3n, por lo tanto podemos distinguir tipo_dato, es el tipo &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"CAB 8. Lenguaje Arduino. Funciones\" class=\"read-more button\" href=\"https:\/\/josedelgado.net\/va\/cab-8-lenguaje-arduino-funciones\/#more-5962\" aria-label=\"Read more about CAB 8. Lenguaje Arduino. Funciones\">Leer m\u00e1s \/ Llegir m\u00e9s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","_exactmetrics_skip_tracking":false,"footnotes":""},"class_list":["post-5962","page","type-page","status-publish"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"va","enabled_languages":["es","va"],"languages":{"es":{"title":true,"content":true,"excerpt":false},"va":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado\" \/>\n<meta property=\"og:url\" content=\"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/\" \/>\n<meta property=\"og:site_name\" content=\"Jos\u00e9 Delgado\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-23T16:32:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@soyjosedelgado\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/\",\"name\":\"CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/josedelgado.net\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\",\"datePublished\":\"2022-05-23T16:32:12+00:00\",\"dateModified\":\"2022-05-23T16:32:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/#breadcrumb\"},\"inLanguage\":\"va-VA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"va-VA\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/#primaryimage\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\",\"contentUrl\":\"https:\\\/\\\/josedelgado.net\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-8-lenguaje-arduino-funciones\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/josedelgado.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CAB 8. Lenguaje Arduino. Funciones\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#website\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/\",\"name\":\"Jos\u00e9 Delgado\",\"description\":\"Web Personal\",\"publisher\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#\\\/schema\\\/person\\\/d43605ef0d5681c1b27a4ba1fede1cf4\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/josedelgado.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"va-VA\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#\\\/schema\\\/person\\\/d43605ef0d5681c1b27a4ba1fede1cf4\",\"name\":\"Jose Delgado\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"va-VA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\",\"caption\":\"Jose Delgado\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g\"},\"description\":\"Ingeniero Superior en Inform\u00e1tica de Gesti\u00f3n, UPV 1988-1993 M\u00e1ster en Direcci\u00f3n Comercial y Marketing, Fundesem 2005 M\u00e1ster en Peritaje Inform\u00e1tico e Inform\u00e1tica Forense, EuroInnova 2018 M\u00e1ster en Marketing y Estrategia de Comunicaci\u00f3n Digital, Fundesem 2019 M\u00e1ster en Formaci\u00f3n del Profesorado de Educaci\u00f3n de Secundaria Especialidad de Tecnolog\u00eda,\u00a0UAX\u00a02023\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/josedelgado\\\/\",\"https:\\\/\\\/x.com\\\/soyjosedelgado\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/","og_locale":"en_US","og_type":"article","og_title":"CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado","og_url":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/","og_site_name":"Jos\u00e9 Delgado","article_modified_time":"2022-05-23T16:32:39+00:00","og_image":[{"url":"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@soyjosedelgado","twitter_misc":{"Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/","url":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/","name":"CAB 8. Lenguaje Arduino. Funciones - Jos\u00e9 Delgado","isPartOf":{"@id":"https:\/\/josedelgado.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/#primaryimage"},"image":{"@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/#primaryimage"},"thumbnailUrl":"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg","datePublished":"2022-05-23T16:32:12+00:00","dateModified":"2022-05-23T16:32:39+00:00","breadcrumb":{"@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/#breadcrumb"},"inLanguage":"va-VA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/"]}]},{"@type":"ImageObject","inLanguage":"va-VA","@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/#primaryimage","url":"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg","contentUrl":"https:\/\/josedelgado.net\/wp-content\/uploads\/2022\/05\/josedelgado_cab8_monitor_serie_arduino_numeros_aleatorios.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/josedelgado.net\/cab-8-lenguaje-arduino-funciones\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/josedelgado.net\/"},{"@type":"ListItem","position":2,"name":"CAB 8. Lenguaje Arduino. Funciones"}]},{"@type":"WebSite","@id":"https:\/\/josedelgado.net\/#website","url":"https:\/\/josedelgado.net\/","name":"Jos\u00e9 Delgado","description":"Web Personal","publisher":{"@id":"https:\/\/josedelgado.net\/#\/schema\/person\/d43605ef0d5681c1b27a4ba1fede1cf4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/josedelgado.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"va-VA"},{"@type":["Person","Organization"],"@id":"https:\/\/josedelgado.net\/#\/schema\/person\/d43605ef0d5681c1b27a4ba1fede1cf4","name":"Jose Delgado","image":{"@type":"ImageObject","inLanguage":"va-VA","@id":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g","caption":"Jose Delgado"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/24a3e726d4af70848eac3efea42f5b3c496c93b62fb83e7a88636e3cde86b617?s=96&d=mm&r=g"},"description":"Ingeniero Superior en Inform\u00e1tica de Gesti\u00f3n, UPV 1988-1993 M\u00e1ster en Direcci\u00f3n Comercial y Marketing, Fundesem 2005 M\u00e1ster en Peritaje Inform\u00e1tico e Inform\u00e1tica Forense, EuroInnova 2018 M\u00e1ster en Marketing y Estrategia de Comunicaci\u00f3n Digital, Fundesem 2019 M\u00e1ster en Formaci\u00f3n del Profesorado de Educaci\u00f3n de Secundaria Especialidad de Tecnolog\u00eda,\u00a0UAX\u00a02023","sameAs":["https:\/\/www.linkedin.com\/in\/josedelgado\/","https:\/\/x.com\/soyjosedelgado"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Jose Delgado","author_link":"https:\/\/josedelgado.net\/va\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"8.1 Introducci\u00f3n Una funci\u00f3n es un conjunto de instrucciones agrupadas que generalmente realizan una tarea concreta y particular. Las funciones nos permiten organizar el c\u00f3digo haci\u00e9ndolo m\u00e1s legible, sostenible, reutilizable, mejorando su mantenimiento y la participaci\u00f3n de varios programadores en un mismo proyecto. La mejor forma de imaginar que es una funci\u00f3n es pensar en&hellip;","_links":{"self":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/comments?post=5962"}],"version-history":[{"count":2,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5962\/revisions"}],"predecessor-version":[{"id":5965,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5962\/revisions\/5965"}],"wp:attachment":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/media?parent=5962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}