<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programar arduino Archives - Tutoriales de Electrónica | Matemática y Física</title>
	<atom:link href="https://www.electrontools.com/Home/WP/tag/programar-arduino/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Explicaciones teóricas y ejercicios prácticos resueltos de Matemáticas &#124; Física &#124; Electrónica de nivel secundario y universitario.</description>
	<lastBuildDate>Fri, 21 Jul 2017 12:45:33 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.electrontools.com/Home/WP/wp-content/uploads/2019/04/cropped-favicon-32x32.png</url>
	<title>Programar arduino Archives - Tutoriales de Electrónica | Matemática y Física</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Programación arduino uno</title>
		<link>https://www.electrontools.com/Home/WP/programacion-arduino-uno/</link>
					<comments>https://www.electrontools.com/Home/WP/programacion-arduino-uno/#comments</comments>
		
		<dc:creator><![CDATA[Cristian Veloso]]></dc:creator>
		<pubDate>Fri, 13 May 2016 14:30:05 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Programar arduino]]></category>
		<guid isPermaLink="false">http://www.electrontools.com/Home/WP/?p=821</guid>

					<description><![CDATA[<div><img width="321" height="321" src="https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno.jpg 321w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-150x150.jpg 150w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-300x300.jpg 300w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-250x250.jpg 250w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-174x174.jpg 174w" sizes="(max-width: 321px) 100vw, 321px" /></div><p>Programar un microcontrolador con arduino es bastante simple, esta pensado para simplificar&#8230;</p>
<p>The post <a href="https://www.electrontools.com/Home/WP/programacion-arduino-uno/">Programación arduino uno</a> appeared first on <a href="https://www.electrontools.com/Home/WP">Tutoriales de Electrónica | Matemática y Física</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div><img width="321" height="321" src="https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno.jpg 321w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-150x150.jpg 150w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-300x300.jpg 300w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-250x250.jpg 250w, https://www.electrontools.com/Home/WP/wp-content/uploads/2016/05/Como-programar-arduino-uno-174x174.jpg 174w" sizes="(max-width: 321px) 100vw, 321px" /></div><p>Programar un microcontrolador con arduino es bastante simple, esta pensado para simplificar las tareas mas complejas mediante librerías disponibles para el uso, utiliza un lenguaje de programación que esta basado en C y C++, su sintaxis es muy similar.</p>
<p>La estructura de todo programa de arduino cuenta con dos subrutinas elementales denominadas <strong>void setup()</strong> y <strong>void loop()</strong>, en ellas se encierran bloques de código donde se hacen declaraciones e instrucciones lógicas.</p>
<pre style="margin-left: 15px; margin-right: 15px; background-color: #eeeeee; border: 1px solid #cccccc; box-sizing: border-box; color: #006699; font-family: monospace, monospace; font-size: 13px; overflow: auto; padding: 10px;"><span style="color: #00979c;">void</span> <span style="color: #5e6d03;">setup</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
  <span style="color: #434f54;">// put your setup code here, to run once:</span>

<span style="color: #000000;">}</span>

<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">loop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
  <span style="color: #434f54;">// put your main code here, to run repeatedly:</span>

<span style="color: #000000;">}</span>

</pre>
<p>&nbsp;</p>
<p>La subrutina <strong>setup()</strong> es la encargada de recoger la configuración y parametrizaciones estáticas del programa mientras que  <strong>loop()</strong> es la que contienen las sentencias lógicas del programa.</p>
<h2>Funcion setup()</h2>
<p>Se invoca una sola vez al comienzo del programa, en ella se setean el funcionamiento de los pines, si serán de entrada o salida y que pines se utilizaran en el proyecto y muchas mas cuestiones.</p>
<pre style="margin-left: 15px; margin-right: 15px; background-color: #eeeeee; border: 1px solid #cccccc; box-sizing: border-box; color: #006699; font-family: monospace, monospace; font-size: 13px; overflow: auto; padding: 10px;"><span style="color: #00979c;">void</span> <span style="color: #5e6d03;">setup</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
  <span style="color: #434f54;">// set the digital pin as output:</span>
  <span style="color: #d35400;">pinMode</span><span style="color: #000000;">(</span><span style="color: #000000;">ledPin</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">OUTPUT</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>
<span style="color: #000000;">}</span>

</pre>
<p>&nbsp;</p>
<h2>Funcion loop()</h2>
<p>Luego de ser invocada la función <strong>setup()</strong> se ejecuta la función <strong>loop()</strong>, en forma cíclica conteniendo toda la lógica del programa en ejecución, todo las acciones deben ser programadas dentro de esta función.</p>
<p>Por ejemplo el código que mostramos debajo pone un pin en uno durante un segundo, luego lo pone en cero durante otro segundo y se vuelve a repetir infinitas veces, el código forma parte de la sección de ejemplos del compilador de arduino</p>
<pre style="margin-left: 15px; margin-right: 15px; background-color: #eeeeee; border: 1px solid #cccccc; box-sizing: border-box; color: #006699; font-family: monospace, monospace; font-size: 13px; overflow: auto; padding: 10px;"><span style="color: #434f54;">// the loop function runs over and over again forever</span>
<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">loop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
  <span style="color: #d35400;">digitalWrite</span><span style="color: #000000;">(</span><span style="color: #000000;">13</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">HIGH</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>   <span style="color: #434f54;">// turn the LED on (HIGH is the voltage level)</span>
  <span style="color: #d35400;">delay</span><span style="color: #000000;">(</span><span style="color: #000000;">1000</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>              <span style="color: #434f54;">// wait for a second</span>
  <span style="color: #d35400;">digitalWrite</span><span style="color: #000000;">(</span><span style="color: #000000;">13</span><span style="color: #434f54;">,</span> <span style="color: #00979c;">LOW</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>    <span style="color: #434f54;">// turn the LED off by making the voltage LOW</span>
  <span style="color: #d35400;">delay</span><span style="color: #000000;">(</span><span style="color: #000000;">1000</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>              <span style="color: #434f54;">// wait for a second</span>
<span style="color: #000000;">}</span>

</pre>
<h2>Controles de flujo y saltos condicionales</h2>
<p>Como todo lenguaje de programación, existen saltos condicionales que se pueden utilizar según sea el objetivo que se necesita cumplir, no es el objetivo de este articulo comentar para que sirve cada uno, asumimos que el lector tiene un grado de conocimientos mínimos de lenguajes de programación. Al igual que en C o C++ tenemos disponibles para nuestro uso los siguientes saltos condicionales o controles de flujo.</p>
<ul>
<li>If/Else</li>
<li>For</li>
<li>While</li>
<li>Do While</li>
</ul>
<p>Cambien existen otros saltos condicionales conocidos como interrupciones, pueden ser interrupciones externas debido al suceso de algún evento externo, esto es muy común y utilizado en rebotica. Estudiar el uso de las interrupciones es un tema extenso que no vamos a comentar en este articulo.</p>
<h2>Funciones básicas arduino</h2>
<p>Como dijimos, arduino cuenta con una infinidad de librerías y funciones disponibles para nuestro uso, pero hay que conocer algunas que no podemos pasar por alto y necesitamos conocer como punta pie inicial en este maravilloso mundo.</p>
<h3><strong>Función delay()</strong></h3>
<p>Es una función destinada a generar retardos, solo sirve para eso, en el ejemplo anterior la utilizamos para conseguir un retardo de un segundo hasta producir el nuevo evento.</p>
<p>Esta función es muy útil pero no es recomendable utilizarla en algunas situaciones,  si el proyecto que estamos encarando tiene un complejidad elevada o manejamos interrupciones en nuestro programa, yo recomiendo no utilizar, esta función al ser utilizada mueve unos registros internos del microprocesador que son comunes a otras funcionalidades del programa, lo que puede ocurrir es que esperemos que se comporte de una manera y haga algo totalmente diferente.</p>
<p>Comento algunos de los motivos para no utilizar la función delay.</p>
<ul>
<li>No puedes hacer otra cosa mientras se esta ejecutando.</li>
<li>Es incompatible con las interrupciones.</li>
<li>Aumenta el consumo del proyecto.</li>
<li>No se pueden detectar eventos externos (interrupciones) e internos (interrupciones por timer)</li>
</ul>
<h3><strong>Función millis()</strong></h3>
<p>Esta función tiene un valor de retorno, nos devuelve el tiempo en mili segundos que transcurrido desde el inicio de programa hasta que se ejecuto la función, generalmente sera un valor grande dependiendo del tiempo entre una ejecución y la próxima.</p>
<p>La ventaja de esta función es que nos permite obtener los mismos resultados que con la función delay pero podemos hacer cualquier otra cosa mientras ese evento aun no sea disparado.</p>
<p>La desventaja de utilizar esta función es que nos complica un poco la lógica del programa pero trae grandes ventajas si la sabemos utilizar.</p>
<ul>
<li>Es compatible con las interrupciones.</li>
<li>Podemos hacer otra cosa mientras esperamos que un evento ocurra.</li>
<li>No generamos carga innecesaria a nuestro procesador.</li>
</ul>
<p>Abajo comparto un código de ejemplo de como se debería utilizar.</p>
<pre style="margin-left: 15px; margin-right: 15px; background-color: #eeeeee; border: 1px solid #cccccc; box-sizing: border-box; color: #006699; font-family: monospace, monospace; font-size: 13px; overflow: auto; padding: 10px;"><span style="color: #00979c;">unsigned</span> <span style="color: #00979c;">long</span> <span style="color: #000000;">tiempo</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span>
 
<span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;"> Se declara una variable que almacenará el último valor de tiempo en el que se</span>
<span style="color: #95a5a6;"> ejecutó la instrucción (delay).</span>
<span style="color: #95a5a6;">*/</span>
 
<span style="color: #00979c;">unsigned</span> <span style="color: #00979c;">long</span> <span style="color: #000000;">t_actualizado</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">0</span><span style="color: #000000;">;</span>
 
<span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;"> Se declara una variable que almacenará el tiempo que se desea que dure el delay.</span>
<span style="color: #95a5a6;"> unsigned long t_delay = 20;</span>
<span style="color: #95a5a6;">*/</span>
 
<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">setup</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">{</span>
 
<span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;">  Se configura el setup</span>
<span style="color: #95a5a6;">*/</span>
<span style="color: #000000;">}</span>
 
<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">loop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
 
<span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;"> Se almacena el tiempo que ha transcurrido desde que se encendió el Arduino.</span>
<span style="color: #95a5a6;">*/</span>
  <span style="color: #000000;">tiempo</span> <span style="color: #434f54;">=</span> <span style="color: #d35400;">millis</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>
  
<span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;">  Si ese tiempo es mayor que el intervalo de deseado (equivalente al tiempo</span>
<span style="color: #95a5a6;">  de delay) se actualiza el intervalo y se ejecutan las instruciones relacionadas.</span>
<span style="color: #95a5a6;">  La idea detrás de este algoritmo consiste en pensar que si han transcurrido</span>
<span style="color: #95a5a6;">  20ms y se desea un delay de 30ms cada vez, cuando se superen esos 30ms la</span>
<span style="color: #95a5a6;">  variable con la que se compara pasa a ser 60ms. Una vez se alcanzan los 60ms</span>
<span style="color: #95a5a6;">  pasa a ser 90ms y así sucesivamente.</span>
<span style="color: #95a5a6;">*/</span>
      
  <span style="color: #5e6d03;">if</span><span style="color: #000000;">(</span> <span style="color: #000000;">tiempo</span> <span style="color: #434f54;">&gt;</span> <span style="color: #000000;">t_actualizado</span> <span style="color: #434f54;">+</span> <span style="color: #000000;">t_delay</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
  
 <span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;">  Se actualiza el tiempo que ha de transcurrir para el próximo delay.</span>
<span style="color: #95a5a6;"> */</span>
 
    <span style="color: #000000;">t_actualizado</span> <span style="color: #434f54;">=</span> <span style="color: #000000;">tiempo</span><span style="color: #000000;">;</span>
    
 <span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;">  Se define el conjunto de instruciones que se desea que se realicen cada vez</span>
<span style="color: #95a5a6;">  que transcurra el tiempo establecido anteriormente (mover un motor, cambiar</span>
<span style="color: #95a5a6;">  de estado un LED, enviar datos...).</span>
<span style="color: #95a5a6;">  */</span>
  <span style="color: #000000;">}</span>
 
  <span style="color: #95a5a6;">/*</span>
<span style="color: #95a5a6;">    Se ejecutan el resto de instrucciones del programa.</span>
<span style="color: #95a5a6;">  */</span>
 
<span style="color: #000000;">}</span>

</pre>
<h3><strong>Función digitalWrite y digitalRead</strong></h3>
<p>Estas dos funciones se utilizan para interactuar con los pines del arduino, una es para leer un pin y la otra es para setearle algún valor al pin.</p>
<p>La función <strong>digitalWirite</strong> cuenta con dos argumentos, el primero es a que pin va destinado el evento y el segundo es el valor que ese pin va a recibir.</p>
<p>La función <strong>digitalRead</strong> tan solo tiene un argumento, en el ponemos el numero del pin que queremos leer. Como pueden ver es una función simple pero de las mas básicas y utilizadas al programar con arduino.</p>
<p>&nbsp;</p>
<pre style="margin-left: 15px; margin-right: 15px; background-color: #eeeeee; border: 1px solid #cccccc; box-sizing: border-box; color: #006699; font-family: monospace, monospace; font-size: 13px; overflow: auto; padding: 10px;"><span style="color: #00979c;">int</span> <span style="color: #000000;">valor</span><span style="color: #000000;">;</span>

<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">setup</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>

<span style="color: #000000;">}</span>

<span style="color: #00979c;">void</span> <span style="color: #5e6d03;">loop</span><span style="color: #000000;">(</span><span style="color: #000000;">)</span> <span style="color: #000000;">{</span>
    <span style="color: #d35400;">digitalWrite</span><span style="color: #000000;">(</span><span style="color: #000000;">13</span><span style="color: #434f54;">,</span> <span style="color: #000000;">1</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">valor</span> <span style="color: #434f54;">=</span> <span style="color: #d35400;">digitalRead</span><span style="color: #000000;">(</span><span style="color: #000000;">12</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>
<span style="color: #000000;">}</span>

</pre>
<p>Como siempre digo, espero que les sea de utilidad y respondo todos sus comentarios, todo lo que quieran aportar sera bienvenido y ayuda a mejorar.</p>
<p>No dudes en dejar tu opinión.</p>
<h2>ANÍMATE A DAR EL PRIMER PASO</h2>
<p>Si todavía no tenes tu Arduino no pierdas mas tiempo, nosotros te recomendamos cualquiera de los siguientes productos, para comenzar son los mas indicados.</p>
<p>[amazon_link asins='B008GRTSV6,B01MXGST4I,B01C2Q0NNS,B00L7Z0PNY,B01KPKBO5Y' template='CarruselCustom' store='electrontoo01-21' marketplace='ES' link_id='3da70da7-5c70-11e7-9dd0-a9d0207a27ca']</p>
<p>The post <a href="https://www.electrontools.com/Home/WP/programacion-arduino-uno/">Programación arduino uno</a> appeared first on <a href="https://www.electrontools.com/Home/WP">Tutoriales de Electrónica | Matemática y Física</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.electrontools.com/Home/WP/programacion-arduino-uno/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
