{"id":5954,"date":"2022-05-23T18:20:47","date_gmt":"2022-05-23T16:20:47","guid":{"rendered":"https:\/\/josedelgado.net\/?page_id=5954"},"modified":"2022-09-19T12:45:37","modified_gmt":"2022-09-19T10:45:37","slug":"cab-6-lenguaje-arduino-variables-y-constantes","status":"publish","type":"page","link":"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/","title":{"rendered":"CAB 6. Lenguaje Arduino. Variables y Constantes"},"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-6-lenguaje-arduino-variables-y-constantes\/#61_Introduccion\" >6.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-6-lenguaje-arduino-variables-y-constantes\/#62_Declaracion_Asignacion_e_Inicializacion_de_Variables\" >6.2 Declaraci\u00f3n, Asignaci\u00f3n e Inicializaci\u00f3n de Variables<\/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-6-lenguaje-arduino-variables-y-constantes\/#63_Variables_Locales_y_Globales\" >6.3 Variables Locales y Globales<\/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-6-lenguaje-arduino-variables-y-constantes\/#631_Variables_Locales\" >6.3.1 Variables Locales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#632_Variables_Globales\" >6.3.2 Variables Globales<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#64_Tipos_de_Variables\" >6.4 Tipos de Variables<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#641_Tipo_void\" >6.4.1 Tipo void<\/a><\/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-6-lenguaje-arduino-variables-y-constantes\/#642_Tipo_byte\" >6.4.2 Tipo byte<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#643_Tipo_int\" >6.4.3 Tipo int<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#644_Tipo_unsigned_int\" >6.4.4 Tipo unsigned int<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#645_Tipo_long\" >6.4.5 Tipo long<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#646_Tipo_unsigned_long\" >6.4.6 Tipo unsigned long<\/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-6-lenguaje-arduino-variables-y-constantes\/#647_Tipo_float\" >6.4.7 Tipo float<\/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-6-lenguaje-arduino-variables-y-constantes\/#648_Tipo_boolean\" >6.4.8 Tipo boolean<\/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-6-lenguaje-arduino-variables-y-constantes\/#649_Tipo_char\" >6.4.9 Tipo char<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#6410_Tipo_string\" >6.4.10 Tipo string<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#65_Modificadores\" >6.5 Modificadores<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#651_Modificador_static\" >6.5.1 Modificador static<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#652_Modificador_volatile\" >6.5.2 Modificador volatile<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#653_Modificador_const\" >6.5.3 Modificador const<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#66_Constantes\" >6.6 Constantes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#67_Constantes_Especiales\" >6.7 Constantes Especiales<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#68_Operaciones_con_Variables\" >6.8 Operaciones con Variables<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#681_Operaciones_Matematicas\" >6.8.1 Operaciones Matem\u00e1ticas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#682_Operaciones_Logicas\" >6.8.2 Operaciones L\u00f3gicas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#683_Operaciones_Trigonometricas\" >6.8.3 Operaciones Trigonom\u00e9tricas<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"61_Introduccion\"><\/span><strong>6.1 Introducci\u00f3n<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una <strong>variable <\/strong>es un objeto, o m\u00e1s estrictamente, un espacio reservado de memoria donde guardamos un valor determinado con el que podemos operar durante la ejecuci\u00f3n de un programa o <em>sketch<\/em> mediante un nombre o etiqueta que asignamos a dicho objeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Detallando la definici\u00f3n anterior, tenemos que una variable<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Tiene un espacio de memoria reservado<\/li><li>Posee un nombre o etiqueta para operar con ella<\/li><li>Almacena un valor que podemos modificar y consultar<\/li><li>Adem\u00e1s ese valor es modificable durante la ejecuci\u00f3n del programa<\/li><li>Debe ser de un tipo de datos soportado por el lenguaje Arduino<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Respecto al nombre o etiqueta de la variable se deben cumplir unas <strong>normas<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Tiene que empezar por una letra (may\u00fascula o min\u00fascula) o el car\u00e1cter &#8220;_&#8221;<\/li><li>El resto del nombre adem\u00e1s puede contener caracteres num\u00e9ricos<\/li><li>No debe contener espacios<\/li><li>No puede ser el mismo que una palabra reservada del lenguaje<\/li><li>Como recomendaciones<ul><li>No debe ser excesivamente largo<\/li><li>Debe ser descriptivo de tal forma que mejore la legibilidad del c\u00f3digo.<\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">El lenguaje Arduino diferencia entre may\u00fasculas y min\u00fasculas en el nombre de las variables, por lo tanto no ser\u00e1 la misma variable, por ejemplo <em>codigo_pin<\/em> que <em>Codigo_pin<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"62_Declaracion_Asignacion_e_Inicializacion_de_Variables\"><\/span><strong>6.2 Declaraci\u00f3n, Asignaci\u00f3n e Inicializaci\u00f3n de Variables<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La <strong>declaraci\u00f3n <\/strong>de una variable supone su creaci\u00f3n o m\u00e1s po\u00e9ticamente su nacimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta fase se asigna el tipo de la misma. Veremos los tipos posibles en un punto posterior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante la declaraci\u00f3n, adem\u00e1s es cuando se asigna un espacio de memoria concreto reservado para dicha variable. Este espacio vendr\u00e1 definido por el tipo de la misma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La<strong> sintaxis de la declaraci\u00f3n<\/strong> de una variable es <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>tipo nombre_de_la_variable<\/strong>;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos ejemplos ser\u00edan<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string nombre_dispositivo;\n\nint led_PIN;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que tenemos declarada una variable ya podemos operar con ella, o lo que es lo mismo realizar una <strong>asignaci\u00f3n<\/strong>, cuya sintaxis ser\u00eda<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>nombre_de_la_variable <\/strong><\/em><strong>= <\/strong><em><strong>X<\/strong><\/em><strong>;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con esta operaci\u00f3n asignar\u00edamos el valor <em>X<\/em> a la variable <em>nombre_de_la_variable<\/em>. Ambos valores deben ser del mismo tipo para no generar un error en el programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo de declaraci\u00f3n y posterior asignaci\u00f3n ser\u00eda<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int led_PIN;      \/\/ Declaramos la variable led_PIN del tipo int (entero)\n\nled_PIN = 9;      \/\/ Asignamos el valor 9 a la variable led_PIN<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando asignamos por primera vez un valor a una variable decimos que la hemos inicializado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es decir, la operaci\u00f3n de <strong>inicializar <\/strong>una variable es asignar el primer valor a una variable despu\u00e9s de haberla declarado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el ejemplo anterior, al asignar el valor 9 a la variable <em>led_PIN <\/em>declarada justo anteriormente y al ser la primera vez que le asignamos un valor, este ser\u00eda su valor de inicializaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es necesario, para evitar errores de compilaci\u00f3n y comportamientos inesperados en la ejecuci\u00f3n del <em>sketch<\/em>, asignar un valor a toda variable declarada. Es decir, es necesario inicializar una variable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por agilidad ambas operaciones se pueden realizar conjuntamente en el lenguaje Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el ejemplo siguiente har\u00edamos la declaraci\u00f3n e inicializaci\u00f3n de la variable en la misma l\u00ednea<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int led_PIN = 9;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, durante la ejecuci\u00f3n del programa podemos <strong>modificar el valor de las variables<\/strong>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el ejemplo siguiente declaramos y asignamos la variable a con un valor 1. En el programa modificamos su valor increment\u00e1ndolo en 1.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int a = 1;     \/\/ Declaramos la variable con el tipo int (entero) y la inicializamos con el valor 1\n\n\/\/ Programa\na = a +1;        \/\/ Incrementamos el valor de a en 1. En este caso, a tendr\u00eda ahora el valor 2.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"63_Variables_Locales_y_Globales\"><\/span><strong>6.3 Variables Locales y Globales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dependiendo del \u00e1mbito de actuaci\u00f3n de una variable esta puede ser Local o Global.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"631_Variables_Locales\"><\/span><strong>6.3.1 Variables Locales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Son las definidas dentro de un bloque o funci\u00f3n concreta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso decimos que el alcance o \u00e1mbito de actuaci\u00f3n de la variable es Local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando definimos una variable dentro del c\u00f3digo de una funci\u00f3n podremos utilizarla dentro de esa funci\u00f3n, pero no fuera de ella, pues nos dar\u00eda un error ya que no estar\u00eda definida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su uso es Local, por eso est\u00e1 restringido solo a la funci\u00f3n donde ha sido declarada.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"632_Variables_Globales\"><\/span><strong>6.3.2 Variables Globales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Son las definidas fuera de cualquier bloque o funci\u00f3n. Generalmente, por legibilidad del c\u00f3digo, en la parte de la cabecera del <em>sketch<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso el alcance o \u00e1mbito de actuaci\u00f3n de la variable es Global.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una variable Global es visible y puede ser utilizada en cualquier lugar del <em>sketch<\/em>, ya sea dentro o fuera de funciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La experiencia y los buenos h\u00e1bitos de programaci\u00f3n nos ense\u00f1ar\u00e1n que debemos definir las m\u00ednimas variables globales necesarias y cuando sea estrictamente necesario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Siempre que podamos debemos definir una variable Local si solo vamos a utilizarla en el \u00e1mbito de esa funci\u00f3n concreta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las variables globales que modificamos dentro y fuera de funciones, cuando el <em>sketch <\/em>crece y se hace extenso son m\u00e1s dif\u00edciles de controlar y pueden provocar errores de funcionamiento que no de compilaci\u00f3n, que como veremos son los m\u00e1s dif\u00edciles de encontrar y resolver.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"64_Tipos_de_Variables\"><\/span><strong>6.4 Tipos de Variables<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El lenguaje Arduino implementa varios tipos de variables y deberemos elegir el que m\u00e1s se adapte al uso y caracter\u00edsticas de los datos que necesitemos representar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como ya hemos mencionado, una variable ocupa un espacio reservado de memoria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Debemos escoger el tipo de una variable atendiendo al criterio de &#8220;m\u00ednimo gasto de memoria&#8221; necesario para el almacenamiento de los posibles valores que pueda tener la misma durante la ejecuci\u00f3n de nuestro <em>sketch, <\/em>eligiendo el tipo m\u00e1s adecuado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n vamos a ver los principales tipos de variables utilizados en lenguaje Arduino.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"641_Tipo_void\"><\/span><strong>6.4.1 Tipo void<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este tipo es un tanto especial pues podemos considerarlo como el <strong>tipo nulo<\/strong> y su uso suele estar restringido a la declaraci\u00f3n de funciones cuando queremos indicar que dicha funci\u00f3n no devolver\u00e1 ning\u00fan valor al finalizar su ejecuci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obviamente, como no tenemos que almacenar ning\u00fan valor, en este caso no se asigna memoria.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo void\n\nvoid setup () {\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"642_Tipo_byte\"><\/span><strong>6.4.2 Tipo byte<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es el tipo que nos permite utilizar el n\u00famero entero m\u00e1s peque\u00f1o en el lenguaje Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se puede utilizar un n\u00famero entero positivo entre 0 y 255.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliza un espacio en memoria de 1 byte, es decir, 8 bits.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo byte\n\nbyte a = 112;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"643_Tipo_int\"><\/span><strong>6.4.3 Tipo int<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es el tipo entero m\u00e1s utilizado en la programaci\u00f3n con Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permite representar n\u00fameros en el rango -32.768 a +32.767.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ocupa en memoria 2 bytes, osea 16 bits.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo int\n\nint a = -1556;\n\nint b = 28000;\n\nint c = 0;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"644_Tipo_unsigned_int\"><\/span><strong>6.4.4 Tipo unsigned int<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es como el tipo int pero positivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permite valores entre 0 a +65.535.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es similar al tipo <em>int <\/em>en ocupaci\u00f3n de memoria ya que tambi\u00e9n utiliza 2 bytes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo unsigned int\n\nunsigned int a = 48.375;\n\nunsigned int b = 0;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"645_Tipo_long\"><\/span><strong>6.4.5 Tipo long<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es un tipo que representa enteros m\u00e1s grandes que el tipo <em>int<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permite valores entre -2.147.483.648 a +2.147.483.647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo tanto utiliza 4 bytes, es decir, 32 bits de memora RAM.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo long\n\nlong a = 345678;\n\nlong b = -456876;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"646_Tipo_unsigned_long\"><\/span><strong>6.4.6 Tipo unsigned long<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es similar al tipo <em>long <\/em>pero solo con valores positivos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pueden ser n\u00fameros comprendidos entre 0 hasta 4.294.967.295.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De igual modo que <em>long<\/em>, utiliza 32 bits de memoria.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo unsigned long\n\nunsigned long a = 3333456;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"647_Tipo_float\"><\/span><strong>6.4.7 Tipo float<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Permite operar con datos en punto flotante, es decir, nos permite representar valores num\u00e9ricos decimales con precisi\u00f3n de 6 a 7 decimales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos utilizar valores entre -3.4028235E+38 hasta 3.4028235E+38.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Emplea 32 bits de RAM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es un tipo de variable lenta para operar, por lo tanto deberemos utilizarlo lo m\u00ednimo posible y cuando sea estrictamente necesario.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo float\n\nfloat a = 3.14159;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"648_Tipo_boolean\"><\/span><strong>6.4.8 Tipo boolean<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es el tipo de datos que menor uso de memoria, solo 1 bit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permite representar valores buleanos, de VERDADERO y FALSO, aunque su codificaci\u00f3n en memoria ser\u00e1 1 para VERDADERO y 0 para FALSO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muy utilizado en estructuras condicionales dentro de bucles, como ya veremos en el siguiente cap\u00edtulo del curso.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo boolean\n\nboolean terminar = false;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"649_Tipo_char\"><\/span><strong>6.4.9 Tipo char<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Permite representar un car\u00e1cter alfanum\u00e9rico, por eso suele ser conocido como tipo <em>car\u00e1cter<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Internamente se almacena con un valor entre -128 y +127.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se codifica seg\u00fan la tabla ASCII.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos utilizar el propio car\u00e1cter alfanum\u00e9rico entre ap\u00f3strofes o mediante su c\u00f3digo ASCII, como podemos ver en el ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo char\n\nchar letra_a = 'A';\n\nchar ASCII_letra_a = 65;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"6410_Tipo_string\"><\/span><strong>6.4.10 Tipo string<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es el tipo denominado c<em>adena de caracteres<\/em> y permite almacenar un conjunto de caracteres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este tipo de datos se puede representar como<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Tabla de caracteres y se denota por <em>string<\/em> (todas las letras en min\u00fasculas).<\/li><li>Clase <em>String <\/em>(con may\u00fasculas la letra <em>S<\/em>).<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Es un tipo especial que nos permite diversas operaciones. Por ello, lo veremos con m\u00e1s profundidad en un cap\u00edtulo posterior.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ejemplo tipo string\n\nstring dia_semana = \"Lunes\";<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"65_Modificadores\"><\/span><strong>6.5 Modificadores<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando realizamos la declaraci\u00f3n de las variables, podemos anteponer ciertos <strong>modificadores<\/strong> o <strong>cualificadores <\/strong>(<em>qualifier<\/em>), que son palabras reservadas del lenguaje Arduino, que cualifican o modifican el comportamiento de las mismas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estos modificadores son<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"651_Modificador_static\"><\/span><strong>6.5.1 Modificador static<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando anteponemos el modificador <em>static <\/em>en la declaraci\u00f3n de la variable:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Indicamos que esta variable es solo visible en la funci\u00f3n en la que esta declarada, es decir, tiene \u00e1mbito local <\/li><li>Que su valor deber perdurar o persistir entre diferentes llamadas a dicha funci\u00f3n<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo de declaraci\u00f3n de una variable con el modificador <em>static <\/em>ser\u00eda<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static int codigo_color = 255;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso anterior, si se tratara de una variable de una funci\u00f3n, la primera vez que llamamos a la funci\u00f3n se declara e inicializa la variable <em>codigo_color<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En las siguientes llamadas a dicha funci\u00f3n no se inicializar\u00e1 de nuevo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s el valor se conservar\u00e1 con el \u00faltimo valor que ten\u00eda dicha variable cuando finaliz\u00f3 la funci\u00f3n en nuestra anterior llamada a la misma.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"652_Modificador_volatile\"><\/span><strong>6.5.2 Modificador volatile<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este modificador, realmente es una directiva del compilador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es propio del lenguaje Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con este modificador indicamos a Arduino que el compilador cargue la variable de la memoria RAM en lugar de los registros del microprocesador, que son ubicaciones de memoria temporal en las que se almacenan y manipulan las variables del programa consiguiendo de esta forma m\u00e1s velocidad en la ejecuci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es decir, realmente le estamos indicando a Arduino que no queremos optimizar el uso de la variable o que en ciertas condiciones espec\u00edficas el valor de la variable almacenada en los registros puede ser incorrecto. Son situaciones especiales, que veremos con m\u00e1s detalle m\u00e1s adelante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo de declaraci\u00f3n de una variable con el modificador <em>volatile <\/em>es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>volatile int estado = 3;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"653_Modificador_const\"><\/span><strong>6.5.3 Modificador const<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Al anteponer el modificador <em>const <\/em>convertimos la variable en una constante y por lo tanto ya no podremos modificar el valor de la misma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de intentar modificar una variable modificada o cualificada con <em>const <\/em>recibiremos un error de compilaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo de una variable con el modificador <em>const <\/em>ser\u00eda<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const float pi = 3.14;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"66_Constantes\"><\/span><strong>6.6 Constantes<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Las <strong>constantes <\/strong>son lo contrario a las variables, en el sentido de que <strong>cuando asignamos un valor a una constante ya no puede modificarse durante la ejecuci\u00f3n del <em>sketch<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las constantes se suelen utilizar para fines diversos en la programaci\u00f3n de Arduino, pero los dos objetivos principales son:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Agilizar la programaci\u00f3n<\/li><li>Mejorar la legibilidad del c\u00f3digo<\/li><\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veremos mejor el uso y la utilidad de las constante con un ejemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si conectamos un led al pin 10 de Arduino, podr\u00edamos referirnos a lo largo del <em>sketck <\/em>siempre con el n\u00famero 10 para identificar el pin con el que estamos operando con el led.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo resulta m\u00e1s legible definir<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const int led_pin = 10;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">en la cabecera del programa y as\u00ed podemos referirnos con este nombre a lo largo del c\u00f3digo sin tener que recordar cual era el n\u00famero para operar con el led.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes ver un ejemplo, mas detallado, de su uso y funcionamiento en el <a href=\"https:\/\/josedelgado.net\/semaforo-arduino-con-pulsador\/\">Art\u00edculo<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo de dicho Proyecto lo ponemos a continuaci\u00f3n, a modo de ejemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como puedes observar el uso de las constantes definidas al principio del <em>Sketch <\/em>clarifica la lectura del c\u00f3digo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ -------------------------------------------------------------\n\/\/  Proyecto:   PB2 - Sem\u00e1foro Arduino con Pulsador\n\/\/  Autor:      LabRob (Jose Delgado)\n\/\/  Fecha:      Octubre 2019\n\/\/  Explicacion:\n\/\/              Enceder secuencialmente un led rojo, led\n\/\/              amarillo y led verde conforme presionemos\n\/\/              un pulsador.              \n\/\/ -------------------------------------------------------------\n \n\/\/ ================================================\n\/\/ Declaraciones, Constantes, Variables ...\n\/\/ ================================================\nconst int led_rojo_PIN = 9;       \/\/ Asignamos a la constante led_rojo_PIN el valor 9\nconst int led_amarillo_PIN = 10;  \/\/ Asignamos a la constante led_amarillo_PIN el valor 10\nconst int led_verde_PIN = 11;     \/\/ Asignamos a la constante led_verde_PIN el valor 11\n \nconst int pulsador_PIN = 2;       \/\/ Asignamos a la constante pulsador_PIN el valor 4\n \nint led_encendido = 0;            \/\/ 0 Led Encendido --&gt; Ninguno\n                                  \/\/ 1 Led Encendido --&gt; Rojo\n                                  \/\/ 2 Led Encendido --&gt; Amarillo\n                                  \/\/ 3 Led Encendido --&gt; Verde\n \n\/\/ ================================================\n\/\/ Modulo Inicializacion y Configuracion\n\/\/ ================================================\nvoid setup()\n{\n  pinMode(led_rojo_PIN , OUTPUT);     \/\/ Definimos el PIN del Led Rojo como SALIDA\n  pinMode(led_amarillo_PIN , OUTPUT); \/\/ Definimos el PIN del Led Amarillo como SALIDA\n  pinMode(led_verde_PIN , OUTPUT);    \/\/ Definimos el PIN del Led Verde como SALIDA\n \n  digitalWrite(led_rojo_PIN, LOW);    \/\/ Inicialmente apagamos todos los leds\n  digitalWrite(led_amarillo_PIN, LOW);\n  digitalWrite(led_verde_PIN, LOW);\n   \n  pinMode(pulsador_PIN, INPUT);       \/\/ Definimos el PIN del Pulsador como ENTRADA\n}\n \n\/\/ ================================================\n\/\/ Bucle Programa\n\/\/ ================================================                 \nvoid loop()\n{\n  while (digitalRead(pulsador_PIN) == LOW);  \/\/ No hacemos nada mientras no se presiona el Pulsador\n   \n  \/\/ Hemos llegado aqui porque se ha presionado el Pulsador\n  \/\/ Asignamos el Led que le toca encenderse de forma secuencial y c\u00edclica\n  \/\/ Si el Led encendido es el Verde (3) pasamos a encender el Rojo (1)\n  if (led_encendido == 3){\n    led_encendido = 1;\n  }\n  else{\n    led_encendido = led_encendido + 1;\n  }\n \n  \/\/ Encendemos el Led Rojo y apagamos el Amarillo y el Verde\n  if (led_encendido == 1) {\n    digitalWrite(led_rojo_PIN, HIGH);  \n    digitalWrite(led_amarillo_PIN, LOW);\n    digitalWrite(led_verde_PIN, LOW);   \n  }\n \n  \/\/ Encendemos el Led Amarillo y apagamos el Rojo y el Verde\n  if (led_encendido == 2) {\n    digitalWrite(led_rojo_PIN, LOW);   \n    digitalWrite(led_amarillo_PIN, HIGH);\n    digitalWrite(led_verde_PIN, LOW);  \n  }\n \n  \/\/ Encendemos el Led Verde y apagamos el Rojo y el Amarillo\n  if (led_encendido == 3) {\n    digitalWrite(led_rojo_PIN, LOW);   \n    digitalWrite(led_amarillo_PIN, LOW);\n    digitalWrite(led_verde_PIN, HIGH);  \n  }\n   \n  while (digitalRead(pulsador_PIN) == HIGH);   \/\/ Si el Pulsador sigue presionado no continuamos\n                                               \/\/ Cuando el Pulsador no est\u00e1 presionado seguimos con el Bucle Pincipal\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Resulta mucho m\u00e1s f\u00e1cil y el c\u00f3digo es m\u00e1s legible al referirnos en el programa con el nombre <em>led_amarillo_PIN<\/em> que recordar que el PIN de la placa Arduino que hemos asignado al led amarillo es el n\u00famero 10.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con la pr\u00e1ctica, descubrir\u00e1s lo \u00fatiles que resultan las constantes en la programaci\u00f3n.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">Cabe destacar, que como hemos visto con anterioridad, una constante podremos definirla tanto con la palabra reservada del lenguaje Arduino <em>#define<\/em> como con la instrucci\u00f3n <em>const<\/em>.  En general, es m\u00e1s habitual el uso de <em>const <\/em>para definir las constantes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"67_Constantes_Especiales\"><\/span><strong>6.7 Constantes Especiales<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el lenguaje Arduino podemos encontrar algunas constantes que ya est\u00e1n definidas y que son espec\u00edficas del lenguaje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas constantes suelen utilizarse para configurar y controlar los pines o conectores de entrada y salida de las tarjetas Arduino.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HIGH , LOW<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se utilizan con los conectores digitales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permiten representar los valores que pueden adquirir estos conectores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si el conector est\u00e1 en modo lectura<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>HIGH representa un valor de tensi\u00f3n superior a 3v<\/li><li>LOW un valor inferior a 1,5v<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si el conector est\u00e1 en modo escritura<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>HIGH significa que el microcontrolador debe proporcionar un valor de 5v<\/li><li>LOW que debe asignar 0v<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OUTPUT , INPUT<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas constantes permiten determinar y configurar el modo en el que debe funcionar un conector.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con OUTPUT le indicamos que funcione en modo lectura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mientras que con INPUT el conector estar\u00e1 configurado en modo escritura.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"68_Operaciones_con_Variables\"><\/span><strong>6.8 Operaciones con Variables<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n vamos a ver brevemente las principales operaciones que podemos realizar con las variables, agrupadas en tres tipos<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Operaciones Matem\u00e1ticas<\/li><li>Operaciones L\u00f3gicas<\/li><li>Operaciones Trigonom\u00e9tricas<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"681_Operaciones_Matematicas\"><\/span><strong>6.8.1 Operaciones Matem\u00e1ticas<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Son las m\u00e1s habituales y empleadas en la programaci\u00f3n.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Suma<\/strong>, se suma el valor de <em>a<\/em> m\u00e1s el valor de <em>b<\/em>.  Su sintaxis es   <strong><em>a + b<\/em><\/strong><\/li><li><strong>Resta<\/strong>, se resta el valor de <em>a<\/em> menos el valor de <em>b<\/em>. Su sintaxis es   <strong><em>a &#8211; b<\/em><\/strong><\/li><li><strong>Divisi\u00f3n<\/strong>, se divide el valor de <em>a<\/em> entre el valor de<em> b<\/em>. Su sintaxis es   <strong><em>a \/ b<\/em><\/strong><\/li><li><strong>Multiplicaci\u00f3n<\/strong>, se multiplica el valor de <em>a<\/em> por el valor de <em>b<\/em>. Su sintaxis es  <strong><em> a * b<\/em><\/strong><\/li><li><strong>Asignaci\u00f3n<\/strong>, se asigna el valor de la variable <em>b<\/em> a la variable <em>a<\/em>. Su sintaxis es  <strong> <em>a = b<\/em><\/strong><\/li><li><strong>Valor absoluto<\/strong>, devuelve la parte positiva de un n\u00famero <em>a<\/em>. Su sintaxis es   <strong><em>int valor_absoluto = abs(a)<\/em><\/strong><\/li><li><strong>M\u00f3dulo<\/strong>, devuelve el resto de una divisi\u00f3n entera entre <em>a<\/em> y <em>b<\/em>. Su sintaxis es   <em><strong>int modulo = a % b<\/strong><\/em><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"682_Operaciones_Logicas\"><\/span><strong>6.8.2 Operaciones L\u00f3gicas<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Son operaciones entre expresiones l\u00f3gicas, que son la esencia del lenguaje inform\u00e1tico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una expresi\u00f3n l\u00f3gica es una expresi\u00f3n que tiene uno de los dos valores posibles: verdadero o falso, es decir, 1 o 0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una operaci\u00f3n l\u00f3gica dar\u00e1 como resultado una expresi\u00f3n l\u00f3gica.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Operaci\u00f3n L\u00f3gica Y,<\/strong> realiza la operaci\u00f3n l\u00f3gica Y entre dos expresiones l\u00f3gicas <em>A , B<\/em>. Su sintaxis es   <strong><em>A &amp;&amp; B<\/em><\/strong><\/li><li><strong>Operaci\u00f3n L\u00f3gica O<\/strong>,  realiza la operaci\u00f3n l\u00f3gica O entre dos expresiones l\u00f3gicas <em>A , B<\/em>. Su sintaxis es   <strong><em>A || B<\/em><\/strong> <\/li><li><strong>Operaci\u00f3n L\u00f3gica Comparaci\u00f3n,<\/strong> realiza la operaci\u00f3n l\u00f3gica de Comparaci\u00f3n o Igualdad entre dos expresiones l\u00f3gicas<em> A , B<\/em>. Su sintaxis es   <strong><em>A == B<\/em><\/strong> <\/li><\/ul>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">La operaci\u00f3n l\u00f3gica de comparaci\u00f3n o igualdad es una de la m\u00e1s utilizada en los programas, sobre todo en las condiciones en las estructuras de control.<\/p>\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#f0f0f0\">No debemos confundir la operaci\u00f3n de asignaci\u00f3n <strong>=<\/strong>  y la operaci\u00f3n l\u00f3gica de comparaci\u00f3n o igualdad <strong>==<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"683_Operaciones_Trigonometricas\"><\/span><strong>6.8.3 Operaciones Trigonom\u00e9tricas<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Estas operaciones permiten realizar c\u00e1lculos de \u00e1ngulos y orientaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Son muy utilizadas en rob\u00f3tica.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Coseno<\/strong>. Calcula el coseno de un <em>\u00e1ngulo <\/em>en radianes. Su sintaxis es   <strong><em>float X = cos (\u00e1ngulo)<\/em><\/strong><\/li><li><strong>Seno<\/strong>. Calcula el seno de un <em>\u00e1ngulo <\/em>en radianes. Su sintaxis es  <em><strong> float X = sin(\u00e1ngulo)<\/strong><\/em><\/li><li><strong>Tangente<\/strong>. Calcula la tangente de un <em>\u00e1ngulo <\/em>en radianes. Su sintaxis es   <strong><em>double X = tan(\u00e1ngulo)<\/em><\/strong><\/li><\/ul>\n\n\n\n<section class=\"wp-block-uagb-columns uagb-columns__wrap uagb-columns__stack-mobile uagb-columns__valign- uagb-columns__gap-10 align uagb-block-4f54b5fd uagb-columns__columns-2 uagb-columns__max_width-theme\"><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-6446e1b8\"><div class=\"uagb-column__overlay\"><\/div>\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-5-lenguaje-arduino-aspectos-generales\/\"> Anterior &lt;&#8211; CAB 5. Lenguaje Arduino. Aspectos Generales<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-column uagb-column__wrap uagb-column__background-undefined uagb-block-bb379125\"><div class=\"uagb-column__overlay\"><\/div>\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\/\"> Siguiente &#8211;&gt;  CAB 7. Lenguaje Arduino. Estructuras de Control<\/a><\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>6.1 Introducci\u00f3n Una variable es un objeto, o m\u00e1s estrictamente, un espacio reservado de memoria donde guardamos un valor determinado con el que podemos operar durante la ejecuci\u00f3n de un programa o sketch mediante un nombre o etiqueta que asignamos a dicho objeto. Detallando la definici\u00f3n anterior, tenemos que una variable Tiene un espacio de memoria reservado Posee un nombre o etiqueta para operar con ella Almacena un valor que podemos modificar y consultar Adem\u00e1s ese valor es modificable durante la ejecuci\u00f3n del programa Debe ser de un tipo de datos soportado por el lenguaje Arduino Respecto al nombre o &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"CAB 6. Lenguaje Arduino. Variables y Constantes\" class=\"read-more button\" href=\"https:\/\/josedelgado.net\/va\/cab-6-lenguaje-arduino-variables-y-constantes\/#more-5954\" aria-label=\"Read more about CAB 6. Lenguaje Arduino. Variables y Constantes\">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-5954","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 6. Lenguaje Arduino. Variables y Constantes - 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-6-lenguaje-arduino-variables-y-constantes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CAB 6. Lenguaje Arduino. Variables y Constantes - Jos\u00e9 Delgado\" \/>\n<meta property=\"og:url\" content=\"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/\" \/>\n<meta property=\"og:site_name\" content=\"Jos\u00e9 Delgado\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T10:45:37+00:00\" \/>\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=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-6-lenguaje-arduino-variables-y-constantes\\\/\",\"url\":\"https:\\\/\\\/josedelgado.net\\\/cab-6-lenguaje-arduino-variables-y-constantes\\\/\",\"name\":\"CAB 6. Lenguaje Arduino. Variables y Constantes - Jos\u00e9 Delgado\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/#website\"},\"datePublished\":\"2022-05-23T16:20:47+00:00\",\"dateModified\":\"2022-09-19T10:45:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-6-lenguaje-arduino-variables-y-constantes\\\/#breadcrumb\"},\"inLanguage\":\"va-VA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/josedelgado.net\\\/cab-6-lenguaje-arduino-variables-y-constantes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/josedelgado.net\\\/cab-6-lenguaje-arduino-variables-y-constantes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/josedelgado.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CAB 6. Lenguaje Arduino. Variables y Constantes\"}]},{\"@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 6. Lenguaje Arduino. Variables y Constantes - 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-6-lenguaje-arduino-variables-y-constantes\/","og_locale":"en_US","og_type":"article","og_title":"CAB 6. Lenguaje Arduino. Variables y Constantes - Jos\u00e9 Delgado","og_url":"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/","og_site_name":"Jos\u00e9 Delgado","article_modified_time":"2022-09-19T10:45:37+00:00","twitter_card":"summary_large_image","twitter_site":"@soyjosedelgado","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/","url":"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/","name":"CAB 6. Lenguaje Arduino. Variables y Constantes - Jos\u00e9 Delgado","isPartOf":{"@id":"https:\/\/josedelgado.net\/#website"},"datePublished":"2022-05-23T16:20:47+00:00","dateModified":"2022-09-19T10:45:37+00:00","breadcrumb":{"@id":"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/#breadcrumb"},"inLanguage":"va-VA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/josedelgado.net\/cab-6-lenguaje-arduino-variables-y-constantes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/josedelgado.net\/"},{"@type":"ListItem","position":2,"name":"CAB 6. Lenguaje Arduino. Variables y Constantes"}]},{"@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":"6.1 Introducci\u00f3n Una variable es un objeto, o m\u00e1s estrictamente, un espacio reservado de memoria donde guardamos un valor determinado con el que podemos operar durante la ejecuci\u00f3n de un programa o sketch mediante un nombre o etiqueta que asignamos a dicho objeto. Detallando la definici\u00f3n anterior, tenemos que una variable Tiene un espacio de&hellip;","_links":{"self":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5954","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=5954"}],"version-history":[{"count":4,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5954\/revisions"}],"predecessor-version":[{"id":6744,"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/pages\/5954\/revisions\/6744"}],"wp:attachment":[{"href":"https:\/\/josedelgado.net\/va\/wp-json\/wp\/v2\/media?parent=5954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}