<?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>Ponteduino</title>
	<atom:link href="http://www.ponteduino.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ponteduino.es</link>
	<description>Arduino Power in Pontevedra.</description>
	<lastBuildDate>Mon, 16 Jan 2012 08:01:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Pantalla TFT y arduino cogiditos de la mano.</title>
		<link>http://www.ponteduino.es/2011/03/pantalla-tft-y-arduino-cogiditos-de-la-mano/</link>
		<comments>http://www.ponteduino.es/2011/03/pantalla-tft-y-arduino-cogiditos-de-la-mano/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 20:07:31 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=395</guid>
		<description><![CDATA[Si eres hispano-hablante, igual has llegado a este post esperando encontrar otra cosa ;-P Despues de un tiempo de pausa, a la rutina. Volvi con la firme intención de postear una vez a la semana minimo y ya paso poquito mas Aqui os dejo un video que muestra que las displays que maneja arduino no [...]]]></description>
			<content:encoded><![CDATA[<p class="texto">Si eres hispano-hablante, igual has llegado a este post esperando encontrar otra cosa ;-P</p>
<p class="texto">Despues de un tiempo de pausa, a la rutina. Volvi con la firme intención de postear una vez a la semana minimo y ya paso poquito mas <img src='http://www.ponteduino.es/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p class="texto">Aqui os dejo un video que muestra que las displays que maneja arduino no son solo alfanumericos. Eso sí, tocara un poco de investigación propia, del lector, buscar el código y ver lo complicado (o no tanto) del mismo.</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/BKy-GuKWGZ8" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">[1]<a href="http://blog.littlebirdelectronics.com/tutorial-arduino-and-tft-lcd">Birds on the Wire</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/03/pantalla-tft-y-arduino-cogiditos-de-la-mano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acelerometro MMA7260QT de 3 ejes.</title>
		<link>http://www.ponteduino.es/2011/03/acelerometro-mma7260qt-de-3-ejes/</link>
		<comments>http://www.ponteduino.es/2011/03/acelerometro-mma7260qt-de-3-ejes/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 21:45:43 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[acelerometro]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=401</guid>
		<description><![CDATA[Un simple ejemplo de como usar un acelerometro..]]></description>
			<content:encoded><![CDATA[<p class="texto">Gracias a un prÃ©stamo de Alex, tuve durante unos dÃ­as este sensor en mi poder.</p>
<p><div id="attachment_402" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ponteduino.es/?attachment_id=402" rel="attachment wp-att-402"><img src="http://www.ponteduino.es/wp-content/uploads/2011/02/IMAG0167-300x200.jpg" alt="Sensor preparado para el montaje." title="MMA7260QT" width="300" height="200" class="size-medium wp-image-402" /></a><p class="wp-caption-text">El sensor ensamblado, listo para ser usado.</p></div><br />
<span id="more-401"></span></p>
<p class="texto">Este sensor tiene 8 patillas: </p>
<ul>
<li>GND</li>
<li>VCC</li>
<li>G1, G2 - controlan las cuatro modos de medir del sensor.</li>
<li>X, Y, Z - Salida analÃ³gica correspondiente a cada eje.</li>
<li>SL - Permite encender y apagar el sensor.</li>
</ul>
<p class="texto">Este sensor puede trabajar con cuatro rangos de valores: 1'5G, 2G, 4G y 6G. Lo que pasa es que la resoluciÃ³n del sensor es mayor cuanto menor es el rango que mide. Me explico, para 1'5G permite medir mas fino que si lo ponemos a 6G, lo que implica multiples usos para un mismo sensor: desde intentar definir un Ã¡ngulo (ya que  1G equivale a la gravedad), hasta poder anular cual es la aceleraciÃ³n con que lanzamos un objeto (no muy recomendable, pero es posible). A nivel de voltaje, en 1'5G, 1G equivale a 800 mV, mientras que si nos encontramos a 6G, equivaldrÃ­a a 200 mV. </p>
<p class="texto">El sensor estÃ¡ calibrado para trabajar con valores de entre 2'2V y 3'6V, pero recomiendan 3'3V. No es que no funcione a mÃ¡s voltaje, que habrÃ¡ un lÃ­mite, sino que ya no esta calibrado y no te asuguran que se comporte de manera lineal. </p>
<p class="texto">Dado que el sensor nos obliga a tomar 0 grados como la mitad de la tensiÃ³n de alimentaciÃ³n, y a partir de ahi suma o resta a este valor segÃºn la direcciÃ³n del movimiento. Por ejemplo para 1'5G y 3'3V los valores para -90Âº, 0Âº y 90Âº son, respectivamente, 850 mV, 1'65V y 2'45V.</p>
<p class="texto">Esto nos crea un problema. Las entradas analÃ³gicas de arduino tienen 10 bits de resoluciÃ³n para 5v, de manera predeterminada. Y si vamos a medir Ã¡ngulos vemos que los valores teÃ³ricos van de 0'85V a 2'45V, que en la entrada analÃ³gica corresponderÃ­an a los valores comprendidos entre 173 y 501. 328 valores de los 1024 de partida.</p>
<p class="texto">Para esto arduino tiene una entrada que se llama AREF y que nos permite configurar la tensiÃ³n sobre la que se aplica los 10 bits. En nuestro caso conectamos la entrada AREF a 3.3V y ahora el rango de antes 0'85V a 2'45V corresponderÃ­an a los valores 263 a 760. Y pasamos de 328 valores a cerca de 500. Realmente podriamos acotarlo mas y aumentar los valores... pero a mi ya me valÃ­a.</p>
<p class="texto">Tengo que hacer notar que el valor de 3'3V que conecte a la entrada AREF no lo hice de la salida de 3'3V del arduino... y no porque no lo intentara. Ya me dieron alguna explicaciÃ³n al respeto y es posible que la salida de 3'3V tenga una componente alterna de alta frecuencia que, en mi caso, llevaba a corto el arduino y dejaba de acerme caso. Asi que me fabrique un divisor de tensiÃ³n entre 5 y 0, y 3.3 corresponde a 2 tercios. MÃ¡s o menos lo que muestra es esquema siguiente.</p>
<div id="attachment_457" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ponteduino.es/wp-content/uploads/2011/03/acelerometro_esquema.png"><img src="http://www.ponteduino.es/wp-content/uploads/2011/03/acelerometro_esquema-300x147.png" alt="" title="Esquema" width="300" height="147" class="size-medium wp-image-457" /></a><p class="wp-caption-text">Esquema de conexiÃ³n</p></div>
<p class="texto">Avisar, por ultimo, que si vamos a usar la entrada AREF debemos conocer la funciÃ³n analogRefererence. Esta funciÃ³n tiene tres estados DEFAULT, INTERNAL y EXTERNAL. El primero de los casos, default, no hace falta aÃ±adirla ya que el la que hace el ADC entre 0 y 5V. Internal se usa para cuando queremso que las medidas sean entre 0 y 1.1V. Y por ultimo, y la que usamos en nuestro caso, External, sirve para decirle cual es el valor mÃ¡ximo. Nunca debemos suministrar mÃ¡s de 5V a esta entrada, ni usarla sin la linea analogReference (EXTERNAL) en nuestro cÃ³digo.</p>
<p class="texto">Estas son unas imagenes de como quedo y como aparece en fritz.</p>
<div id="attachment_456" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ponteduino.es/wp-content/uploads/2011/03/acelerometro_bb-e1299533536971.png"><img src="http://www.ponteduino.es/wp-content/uploads/2011/03/acelerometro_bb-e1299533536971-300x202.png" alt="" title="Fritz" width="300" height="202" class="size-medium wp-image-456" /></a><p class="wp-caption-text">Esquema con protoboard</p></div>
<div id="attachment_458" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.ponteduino.es/wp-content/uploads/2011/03/Photo-feb-23-6-10-28-p.m..jpg"><img src="http://www.ponteduino.es/wp-content/uploads/2011/03/Photo-feb-23-6-10-28-p.m.-224x300.jpg" alt="" title="Real" width="224" height="300" class="size-medium wp-image-458" /></a><p class="wp-caption-text">Foto del inclinÃ³metro</p></div>
<p class="texto">Para calibrar las medidas, en vez de partir de las teÃ³ricas, me cree un pequeÃ±o programita que te dice la media de 1000 valores, y colocando el conjunto en posiciones concretas (por cada posiciÃ³n dos Ã¡ngulos de 0Âº y uno de |90Âº|) sacas los valores mÃ¡ximo y mÃ­nimo para cada eje, asÃ­ como el valor para 0Âº.</p>
<div class="codigo">
<pre>
<span style="color: #CC6600;">long</span> ac[3]={0,0,0};

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span> ()
{
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">begin</span> (9600);
&nbsp;&nbsp;<span style="color: #CC6600;">analogReference</span> (<span style="color: #006699;">EXTERNAL</span>);
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span> ()
{
&nbsp;&nbsp;<span style="color: #CC6600;">long</span> media[3]={0,0,0};
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> j=0; j&lt;1000; j++)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3; i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">analogRead</span> (i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(30);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ac[i]&nbsp;=&nbsp;<span style="color: #CC6600;">analogRead</span> (i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;media[i]&nbsp;=&nbsp;ac[i]&nbsp;+&nbsp;media[i];
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3; i++)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;ac[i]&nbsp;=&nbsp;media[i]&nbsp;/1000;
&nbsp;&nbsp;}&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"   "</span>);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">print</span> (ac[0]);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"      "</span>);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">print</span> (ac[1]);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"      "</span>);
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">println</span> (ac[2]);

&nbsp;&nbsp;<span style="color: #CC6600;">delay</span>(500);
}
</pre>
</div>
<p class="texto">Y ahora ya os dejo con el video y el cÃ³digo del arduino.</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/jKK_vrJuoqg" frameborder="0" allowFullScreen="true"> </iframe></p>
<div class="codigo">
<pre>
#include&nbsp;&lt;math .h&gt;
#include&nbsp;&lt; <span style="color: #CC6600;">LiquidCrystal.h&gt;

<span style="color: #CC6600;">LiquidCrystal</span> lcd(12, 13, 11, 5, 4, 3, 2);

<span style="color: #CC6600;">float</span> sen[19]={0.0,0.09,0.17,0.26,0.34,0.42,\
0.5,0.57,0.64,0.70,0.77,0.82,0.87,0.91,0.94,\
0.96,0.98,0.99,1};&nbsp;&nbsp;<span style="color: #7E7E7E;">//Tabla de senos para evitar andar a calcular angulos</span>

<span style="color: #CC6600;">int</span> ac[3]={0,0,0}, media[3]={535,542,531}, \
rango[3]={235,238,249};&nbsp;&nbsp;<span style="color: #7E7E7E;">//Tomamos unos valores medios de pruebas anteriores.</span>

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span> ()
{
&nbsp;&nbsp;<span style="color: #CC6600;"><b>Serial</b></span>.<span style="color: #CC6600;">begin</span>(9600);                  <span style="color: #7E7E7E;">//El serial para</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//pruebas propias.</span>
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">begin</span>(20, 4);
&nbsp;&nbsp;<span style="color: #CC6600;">pinMode</span>(6, <span style="color: #006699;">OUTPUT</span>);                  <span style="color: #7E7E7E;">//Controla el contraste del lcd</span>
&nbsp;&nbsp;<span style="color: #CC6600;">analogReference</span> (<span style="color: #006699;">EXTERNAL</span>);          <span style="color: #7E7E7E;">//Punto importante. Si vamos a usar</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//La patilla aref tenemos que poner</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//esta linea.</span>
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">analogWrite</span> (6,32);
&nbsp;&nbsp;
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">setCursor</span>(0,0);
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"Prueba acelerometro"</span>);
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">setCursor</span>(0,1);
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"  X      Y      Z"</span>);
}

<span style="color: #CC6600;">void</span> tenval ( <span style="color: #CC6600;">int</span> *eje, <span style="color: #CC6600;">float</span> *raz)  <span style="color: #7E7E7E;">//Pasa el valor medido en la entrada</span>
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//analogica a un valor a partir del cual</span>
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3;i++)             <span style="color: #7E7E7E;">//podemos calcular el angulo.</span>
&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;eje[i]&nbsp;=&nbsp;eje[i]&nbsp;-&nbsp;media[i];
&nbsp;&nbsp;&nbsp;&nbsp;raz[i]=(<span style="color: #CC6600;">float</span>)eje[i]/(<span style="color: #CC6600;">float</span>)rango[i];
&nbsp;&nbsp;}
}

<span style="color: #CC6600;">void</span> senang (<span style="color: #CC6600;">float</span> *rel, <span style="color: #CC6600;">int</span> *ang)  <span style="color: #7E7E7E;">//PodrÃ­amos calcular el arcsin(rel[i]</span>
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//pero al parecer hace perder muchos</span>
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3; i++)           <span style="color: #7E7E7E;">//ciclos al microprocesador, entonces,</span>
&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//aprovechando que vamos a usar medidas</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> j=0; j&lt;19; j++)        <span style="color: #7E7E7E;">//de 5 en 5 grados, partimos de un array</span>
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//con los valores de los senos y comparamos.</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">if</span> ( <span style="color: #CC6600;">abs</span>(rel[i]) < sen[j] )   <span style="color: #7E7E7E;">//Una simple multiplicacion con el indice
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//del array nos da el angulo.</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (rel[i] < 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang[i]=(1-j)*5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//El angulo asi es negativo
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">else</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang[i]=(j-1)*5;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (ang[i] > 45)            <span style="color: #7E7E7E;">//Esto es un apaÃ±o, para ajustar los valores</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang[i]=ang[i]+5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//a los que debieran.</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
}

<span style="color: #CC6600;">void</span> imprime (<span style="color: #CC6600;">int</span> *rad)             <span style="color: #7E7E7E;">//Saca los valores por la LCD</span>
{
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">setCursor</span>(0,2);
&nbsp;&nbsp;
&nbsp;&nbsp;lcd.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"  "</span>);
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3; i++)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;lcd.<span style="color: #CC6600;">setCursor</span> (7*i+1,2);
&nbsp;&nbsp;&nbsp;&nbsp;lcd.<span style="color: #CC6600;">print</span> (rad[i]);
&nbsp;&nbsp;&nbsp;&nbsp;lcd.<span style="color: #CC6600;">print</span> (<span style="color: #006699;">"  "</span>);
&nbsp;&nbsp;}
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span> ()
{
&nbsp;&nbsp;<span style="color: #CC6600;">float</span> valor[3];
&nbsp;&nbsp;<span style="color: #CC6600;">int</span> ang[3];
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">for</span> (<span style="color: #CC6600;">int</span> i=0; i&lt;3; i++)           <span style="color: #7E7E7E;">//Despues de leer en varios foros</span>
&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//esta es la forma mas correcta</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">analogRead</span> (i);                 <span style="color: #7E7E7E;">//de leer por la entrada analÃ³gica</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">delay</span> (30);                     <span style="color: #7E7E7E;">//evitando errores en lecturas</span>
&nbsp;&nbsp;&nbsp;&nbsp;ac[i]=<span style="color: #CC6600;">analogRead</span> (i);           <span style="color: #7E7E7E;">//por influencia de otras entradas</span>
&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">//analogicas</span>
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #7E7E7E;">/*Serial.print ("   ");</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.print&nbsp;(ac[0]);</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.print&nbsp;("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.print&nbsp;(ac[1]);</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.print&nbsp;("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.println&nbsp;(ac[2]);*/</span>
&nbsp;&nbsp;
&nbsp;&nbsp;tenval&nbsp;(ac,valor);
&nbsp;&nbsp;
&nbsp;&nbsp;tercersin(valor);
&nbsp;&nbsp;
&nbsp;&nbsp;senang&nbsp;(valor,ang);
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #7E7E7E;">/*for (int i=0; i&lt;3; i++)</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;{</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;&nbsp;&nbsp;Serial.print&nbsp;(valor[i]);</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;&nbsp;&nbsp;Serial.print&nbsp;("&nbsp;");</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;}</span>
<span style="color: #7E7E7E;">&nbsp;&nbsp;Serial.println&nbsp;("");*/</span>
&nbsp;&nbsp;
&nbsp;&nbsp;imprime&nbsp;(ang);
}

<span style="color: #7E7E7E;">//Despues&nbsp;de&nbsp;hacer&nbsp;un&nbsp;poco&nbsp;de&nbsp;"estudio"&nbsp;me&nbsp;decidÃ­</span>
<span style="color: #7E7E7E;">//por&nbsp;descartar&nbsp;el&nbsp;Ã¡ngulo&nbsp;mayor,&nbsp;ya&nbsp;que&nbsp;esta&nbsp;medida</span>
<span style="color: #7E7E7E;">//era&nbsp;mas&nbsp;susceptible&nbsp;de&nbsp;error&nbsp;a&nbsp;la&nbsp;hora&nbsp;de&nbsp;leer&nbsp;de</span>
<span style="color: #7E7E7E;">//la&nbsp;entrada&nbsp;analogica.&nbsp;Tened&nbsp;en&nbsp;cuenta&nbsp;que&nbsp;el&nbsp;sin(70Âº)</span>
<span style="color: #7E7E7E;">//es&nbsp;0'94,&nbsp;el&nbsp;sin(75Âº)&nbsp;es&nbsp;0'96,&nbsp;el&nbsp;sin(80Âº)&nbsp;es&nbsp;0'98&nbsp;y</span>
<span style="color: #7E7E7E;">//el&nbsp;sin(85Âº)&nbsp;es&nbsp;0'99,&nbsp;tenemos&nbsp;un&nbsp;rango&nbsp;de&nbsp;20&nbsp;grados</span>
<span style="color: #7E7E7E;">//donde&nbsp;los&nbsp;valores&nbsp;estan&nbsp;muy&nbsp;proximos.</span>
<span style="color: #7E7E7E;">//En&nbsp;vez&nbsp;de&nbsp;usar&nbsp;esta&nbsp;medida&nbsp;del&nbsp;acelerÃ³metro,&nbsp;lo&nbsp;que&nbsp;hacemos</span>
<span style="color: #7E7E7E;">//es&nbsp;partir&nbsp;de&nbsp;que&nbsp;sin(ejex)^2&nbsp;+&nbsp;sin(ejey)^2&nbsp;+&nbsp;sin(ejez)^2&nbsp;=&nbsp;1</span>
<span style="color: #7E7E7E;">//y&nbsp;obtenemos&nbsp;un&nbsp;valor&nbsp;del&nbsp;sin&nbsp;del&nbsp;angulo&nbsp;mayor&nbsp;mas&nbsp;proximo</span>
<span style="color: #7E7E7E;">//a&nbsp;la&nbsp;realidad&nbsp;que&nbsp;usando&nbsp;la&nbsp;entrada&nbsp;analogica.</span>
<span style="color: #CC6600;">void</span> tercersin ( <span style="color: #CC6600;">float</span> *sen)
{
&nbsp;&nbsp;<span style="color: #CC6600;">if</span> ((sen[0] > sen[1]) &#038;& (sen[0] > sen[2]))
&nbsp;&nbsp;&nbsp;&nbsp;sen[0]=&nbsp;<span style="color: #CC6600;">sqrt</span>(1 - (sen[1])*sen[1] - (sen[2])*sen[2]);
&nbsp;&nbsp;<span style="color: #CC6600;">else</span> <span style="color: #CC6600;">if</span> ((sen[1] > sen[0]) &#038;& (sen[1] > sen[2]))
&nbsp;&nbsp;&nbsp;&nbsp;sen[1]=&nbsp;<span style="color: #CC6600;">sqrt</span>(1 - (sen[0])*sen[0] - (sen[2])*sen[2]);
&nbsp;&nbsp;<span style="color: #CC6600;">else</span> <span style="color: #CC6600;">if</span> ((sen[2] > sen[1]) &#038;& (sen[2] > sen[0]))
&nbsp;&nbsp;&nbsp;&nbsp;sen[2]=&nbsp;<span style="color: #CC6600;">sqrt</span>(1 - (sen[1])*sen[1] - (sen[0])*sen[0]);
}
</span></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/03/acelerometro-mma7260qt-de-3-ejes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Crea tu propia maquina enigma.</title>
		<link>http://www.ponteduino.es/2011/02/crea-tu-propia-maquina-enigma/</link>
		<comments>http://www.ponteduino.es/2011/02/crea-tu-propia-maquina-enigma/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 22:16:26 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=393</guid>
		<description><![CDATA[Haz tu propia maquina enigma. Haciendo mas seguras tus comunicaciones analogicas.]]></description>
			<content:encoded><![CDATA[<p class="texto">Parte de la ventaja que tenÃ­an los alemanes en la segunda guerra mundial era la seguridad en sus comunicaciones, gracias a la maquina <a href="http://es.wikipedia.org/wiki/Enigma_(m%C3%A1quina)">enigma</a>.</p>
<p class="texto">Varios libros, y hasta una pelÃ­cula, se dedicaron a esta maquina, o al tema de la criptografia alemana. Y ahora puedes dedicarle un tiempo a hacerte la tuya propia... a partir de un ordenador para niÃ±os.</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/STRc6xCTAIc" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">[1]<a href="http://www.instructables.com/id/Kids-Game-to-Arduino-Enigma-Machine/">PÃ¡gina en Instuctables</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/02/crea-tu-propia-maquina-enigma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nunchuck + Arduino = Joystick para juegos.</title>
		<link>http://www.ponteduino.es/2011/02/nunchuck-arduino-joystick-para-juegos/</link>
		<comments>http://www.ponteduino.es/2011/02/nunchuck-arduino-joystick-para-juegos/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 16:00:02 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=387</guid>
		<description><![CDATA[Usar un nunchuck como HID. Controlar un juego con arduino y un nunchuck.]]></description>
			<content:encoded><![CDATA[<p class="texto">Viendo el blog de Silicon Republic [1] encontre esta maravilla [2].</p>
<p class="texto">Usando los datos que manda el nunchuck podemos adaptar su seÃ±al para que el arduino lo traduzca a los cÃ³digos que envÃ­a el teclado. BÃ¡sicamente convierte las acciones sobre el nunchuck en teclas previamente configuradas.</p>
<p class="texto">La configuraciÃ³n elegida en el post sirve para muchos juegos de flash y para propios de PC. Aunque esto no impide escoger nuestra propia configuraciÃ³n con solo cambiar las variables. </p>
<p class="texto">Incluso si usaseis otra distribuciÃ³n de teclado, como por ejemplo Dvorak, en la que la configuraciÃ³n habitual queda un poco a desmano, esta interfaz puede solucionarnos el cambiar de teclado cada vez que decidais jugar.</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/Tv5sYkNn0zQ" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">[1] <a href="http://siliconrepublic.blogspot.com">Silicon Republic</a>.</p>
<p class="texto">[2] <a href="http://siliconrepublic.blogspot.com/2010/08/arduino-based-human-interface-device.html">Post sobre nunchuck</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/02/nunchuck-arduino-joystick-para-juegos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crea tu propio sistema Ambilight.</title>
		<link>http://www.ponteduino.es/2011/02/crea-tu-propio-sistema-ambilight/</link>
		<comments>http://www.ponteduino.es/2011/02/crea-tu-propio-sistema-ambilight/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 19:00:04 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=380</guid>
		<description><![CDATA[Un proyecto que donde interactua el ordenador con el arduino.]]></description>
			<content:encoded><![CDATA[<p class="texto">Pues al final del post teneis la url [1] que os lleva a la pagina que tiene el howto...</p>
<p class="texto">Un proyecto sencillo en materiales, que nos muestra como es posible interactuar entre el arduino y el ordenador mediante programas creados en processing. Os dejo con el video:</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/Am55k0k9eq8" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">[1] <a href="http://siliconrepublic.blogspot.com/2011/02/arduino-based-pc-ambient-lighting.html">Silicon Republic</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/02/crea-tu-propio-sistema-ambilight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatizando la NES.</title>
		<link>http://www.ponteduino.es/2011/02/automatizando-la-nes/</link>
		<comments>http://www.ponteduino.es/2011/02/automatizando-la-nes/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 17:06:19 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=374</guid>
		<description><![CDATA[Muestra de como podemos automatizar un juego de la NES con el arduino.]]></description>
			<content:encoded><![CDATA[<p class="texto">En internet puedes encontrar diversos usos para este sistema. Existen multitud de formas de explorar las virtudes de arduino... y una de ella es esta:</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/2JNf0lAo3Ns" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">SimpÃ¡tica forma de usar un arduino.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/02/automatizando-la-nes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por fin el documental.</title>
		<link>http://www.ponteduino.es/2011/02/por-fin-el-documental/</link>
		<comments>http://www.ponteduino.es/2011/02/por-fin-el-documental/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 07:00:19 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.ponteduino.es/?p=320</guid>
		<description><![CDATA[El documental de arduino ya esta aqui.]]></description>
			<content:encoded><![CDATA[<p class="texto">Y ya estamos de vuelta, y seguimos donde lo dejamos.</p>
<p class="texto">A primeros de aÃ±o salio el esperado documental.</p>
<p class="texto">Es un video corto, casi llega a la media hora, en el que podemos ver como se creo la base de la que partio arduino, asi como algunos ejemplos de lo que se puede conseguir con esta estructura.</p>
<p class="texto">Y sin mÃ¡s, aquÃ­ os dejo el vÃ­deo</p>
<p class="video"><iframe src="http://player.vimeo.com/video/18390711" width="400" height="225" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2011/02/por-fin-el-documental/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documental sobre Arduino.</title>
		<link>http://www.ponteduino.es/2010/08/arduinothedocumentary/</link>
		<comments>http://www.ponteduino.es/2010/08/arduinothedocumentary/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 10:00:22 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://ponteduino.wordpress.com/?p=280</guid>
		<description><![CDATA[Trailer sobre Arduino.]]></description>
			<content:encoded><![CDATA[<p class="texto">Hace unos dÃ­as me enterÃ© de que se estÃ¡ haciendo un documental sobre Arduino. En este <a href="http://arduino.cc/blog/?p=643">enlace</a> podeis leer la entrada original.</p>
<p class="texto">Laboral Centro de Arte, EspaÃ±a, ha encargado la creaciÃ³n de un documental sobre Arduino. Gran parte de los videos estÃ¡n grabados durante la reuniÃ³n Arduino Uno, celabrada en marzo de este aÃ±o en la universidad de Nueva York.</p>
<p class="texto">El documental estÃ¡ licenciado bajo Creative Commons (<a href="http://creativecommons.org/licenses/by-sa/3.0/es/">aquÃ­</a> los detalles de lo que se permite y de como...).</p>
<p class="texto">La pÃ¡gina del proyecto es <a href="http://arduinothedocumentary.org">esta</a>. Estaremos atentos para poner el video del documental... pero ahora os dejo con el trailer para ir abriendo boca....</p>
<p class="video"><iframe src="http://player.vimeo.com/video/13781339" width="400" height="225" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2010/08/arduinothedocumentary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino y un joystick II. Moverse en una matriz.</title>
		<link>http://www.ponteduino.es/2010/07/joystick-2/</link>
		<comments>http://www.ponteduino.es/2010/07/joystick-2/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 10:00:30 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[analogica]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[joystick]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://ponteduino.wordpress.com/?p=265</guid>
		<description><![CDATA[Otro ejemplo de lo que con un joystick es posible hacer...]]></description>
			<content:encoded><![CDATA[<p class="texto">Aumentamos el numero de leds, la matriz es de 4x4, pero casi todo es igual al anterior (ahora hay mas leds, un transistor mas... y 2 cables <img src='http://www.ponteduino.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p class="texto">Lo que hace este sketch es mover el led encendido en la matriz, podemos seleccionar el led que queremos estÃ© encendido.</p>
<p class="texto">Aqui teneis el video:</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/z2j7gLcbaYg" frameborder="0" allowFullScreen="true"> </iframe></p>
<p><span id="more-265"></span></p>
<p class="texto">AquÃ­ os pongo el codigo:</p>
<div class="codigo">
<pre><span style="color: #7e7e7e;">//Â DeclaramosÂ losÂ puertosÂ queÂ correspondenÂ aÂ filasÂ y</span>
<span style="color: #7e7e7e;">//Â columnasÂ comoÂ unaÂ matriz</span>
<span style="color: #cc6600;">int</span> aLed[2][4]={{2, 3, 4, 5}, {9, 8, 7, 6}};

<span style="color: #7e7e7e;">//Â DeclaramosÂ losÂ potenciometrosÂ queÂ controlanÂ los</span>
<span style="color: #7e7e7e;">//Â 2Â ejesÂ delÂ joystickÂ enÂ elÂ puertoÂ analogicoÂ que</span>
<span style="color: #7e7e7e;">//Â corresponda.Â elÂ formatoÂ delÂ arrayÂ es</span>
<span style="color: #7e7e7e;">//Â Â Â Â Â Â Â Â Â Â Â {fila,Â columna}</span>
<span style="color: #cc6600;">int</span> anPot[] = {1, 0};

<span style="color: #7e7e7e;">//Â CreamosÂ unaÂ variableÂ paraÂ guardarÂ laÂ posiciÃ³nÂ del</span>
<span style="color: #7e7e7e;">//Â ledÂ encendido</span>
<span style="color: #cc6600;">int</span> iLedOn [] = {0, 0};

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>setup</strong></span> (){

Â Â <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">begin</span> (9600);

Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i &lt; 4; i++){     <span style="color: #7e7e7e;">// Por comodidad...</span>
Â Â Â Â <span style="color: #cc6600;">pinMode</span> (aLed [0] [i], <span style="color: #006699;">OUTPUT</span>);
Â Â Â Â <span style="color: #cc6600;">pinMode</span> (aLed [1] [i], <span style="color: #006699;">OUTPUT</span>);
Â Â }

Â Â <span style="color: #7e7e7e;">// Encendemos el primer led de la matriz</span>
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [0] [0], <span style="color: #006699;">HIGH</span>);
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [1] [0], <span style="color: #006699;">HIGH</span>);
}

<span style="color: #cc6600;">void</span> OnLed (<span style="color: #cc6600;">int</span> *iLed){

Â Â <span style="color: #7e7e7e;">// Ahora sabemos que led estÃ¡ encendido...</span>
Â Â <span style="color: #7e7e7e;">// ya no necesitamos el for, pero nos quedamos</span>
Â Â <span style="color: #7e7e7e;">// con el para hacer mas cosas: </span>
Â Â <span style="color: #7e7e7e;">// apagamos la entrada, encendemos la nueva y </span>
Â Â <span style="color: #7e7e7e;">// la guardamos en la variable iLedOn</span>

Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i &lt; 2; i++){

Â Â Â Â <span style="color: #7e7e7e;">// este if es solo para no hacer nada, cuando </span>
Â Â Â Â <span style="color: #7e7e7e;">// no hay que hacer nada...</span>
Â Â Â Â <span style="color: #cc6600;">if</span> (iLed [i] &lt; 4){

Â Â Â Â Â Â <span style="color: #7e7e7e;">// Apagamos la entrada vieja...</span>
Â Â Â Â Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [i] [iLedOn [i]], <span style="color: #006699;">LOW</span>);

Â Â Â Â Â Â <span style="color: #7e7e7e;">// Encendemos la nueva...</span>
Â Â Â Â Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [i] [iLed [i]], <span style="color: #006699;">HIGH</span>);

Â Â Â Â Â Â <span style="color: #7e7e7e;">// y guardamos.</span>
Â Â Â Â Â Â iLedOnÂ [i]Â =Â iLedÂ [i];
Â Â Â Â }
Â Â }
}

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>loop</strong></span> (){

Â Â <span style="color: #cc6600;">int</span> iVal[2];
Â Â <span style="color: #cc6600;">int</span> iLed[2]= {0, 0};

Â Â iValÂ [0]Â =Â <span style="color: #cc6600;">analogRead</span> (anPot [0]);
Â Â iValÂ [1]Â =Â <span style="color: #cc6600;">analogRead</span> (anPot [1]);

Â Â <span style="color: #7e7e7e;">// Toca transformar los 10 bits a columnas y filas.</span>
Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i &lt; 2; i++){

Â Â Â Â <span style="color: #7e7e7e;">// Vamos a poner valores altos (100 y 900) para</span>
Â Â Â Â <span style="color: #7e7e7e;">// no tener que preocuparnos por las diagonales</span>

Â Â Â Â <span style="color: #7e7e7e;">// El joystick nos va a permitir movernos por la</span>
Â Â Â Â <span style="color: #7e7e7e;">// matriz, asÃ­ que solo nos va a interesar los</span>
Â Â Â Â <span style="color: #7e7e7e;">// valores extremos arriba, abajo, derecha</span>
Â Â Â Â <span style="color: #7e7e7e;">// e izquierda</span>
Â Â Â Â <span style="color: #cc6600;">if</span> (iVal [i] &gt; 700){

Â Â Â Â Â Â <span style="color: #7e7e7e;">// Aumentamos la posicion, salvo que este</span>
Â Â Â Â Â Â <span style="color: #7e7e7e;">// en el extremo (iLedOn[i]=3)</span>
Â Â Â Â Â Â <span style="color: #7e7e7e;">// Si no pongo este else hace el bucle,</span>
Â Â Â Â Â Â <span style="color: #7e7e7e;">// que no es lo que busco.</span>
Â Â Â Â Â Â <span style="color: #cc6600;">if</span> ( iLedOn [i] != 3)
Â Â Â Â Â Â Â Â iLedÂ [i]Â =Â iLedOnÂ [i]Â +Â 1;
Â Â Â Â Â Â <span style="color: #cc6600;">else</span> iLed [i] = 4;
Â Â Â Â }
Â Â Â Â <span style="color: #cc6600;">else</span> <span style="color: #cc6600;">if</span> (iVal [i] &lt; 300){

Â Â Â Â Â Â <span style="color: #7e7e7e;">// Lo mismo pero ahora restamos y no hacemos</span>
Â Â Â Â Â Â <span style="color: #7e7e7e;">// nada para iLedOn=0      </span>
Â Â Â Â Â Â <span style="color: #cc6600;">if</span> ( iLedOn [i] != 0)
Â Â Â Â Â Â Â Â iLedÂ [i]Â =Â iLedOnÂ [i]Â -Â 1;
Â Â Â Â Â Â <span style="color: #cc6600;">else</span> iLed [i] = 4;
Â Â Â Â }
Â Â Â Â <span style="color: #cc6600;">else</span> iLed [i] = 4;

Â Â Â Â <span style="color: #cc6600;"><strong>Serial</strong></span>.<span style="color: #cc6600;">println</span> (iLedOn [i]);
Â Â }

Â Â OnLedÂ (iLed);

Â Â <span style="color: #7e7e7e;">// este delay es para poder manejar el joystic</span>
Â Â <span style="color: #7e7e7e;">// sin problemas</span>
Â Â <span style="color: #cc6600;">delay</span> (175);
}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2010/07/joystick-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Control de un joystick con Arduino</title>
		<link>http://www.ponteduino.es/2010/07/joystick/</link>
		<comments>http://www.ponteduino.es/2010/07/joystick/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 10:00:54 +0000</pubDate>
		<dc:creator>ruworuro</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[analogica]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[joystick]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://ponteduino.wordpress.com/?p=221</guid>
		<description><![CDATA[Una pequeÃ±a muestra del usa del joystick de un mando de la Play... Reciclar no es solo separar la basura... jeje]]></description>
			<content:encoded><![CDATA[<p class="texto">Hace tiempo di por muerto un mando de la PlayStation... pero me quede con alguna que otra cosa por si las moscas...</p>
<p class="texto">Pues bien, el otro dÃ­a me acordÃ©... y sucede que los Dualshock son dos potenciometros y un pulsador, lo que lo hace bastante interesante para un futuro uso con el Arduino.</p>
<div id="attachment_240" class="wp-caption aligncenter" style="width: 262px"><a rel="attachment wp-att-240" href="http://www.ponteduino.es/?attachment_id=240"><img class="size-medium wp-image-240" title="joystick montado" src="http://ponteduino.files.wordpress.com/2010/07/foto0038.jpg?w=252" alt="" width="252" height="300" /></a><p class="wp-caption-text">El joystick</p></div>
<p><span id="more-221"></span></p>
<div id="attachment_242" class="wp-caption aligncenter" style="width: 310px"><a href="http://ponteduino.files.wordpress.com/2010/07/foto0040.jpg"><img class="size-medium wp-image-242" title="joystick desmontado" src="http://ponteduino.files.wordpress.com/2010/07/foto0040.jpg?w=300" alt="" width="300" height="166" /></a><p class="wp-caption-text">Otra toma</p></div>
<p class="texto">Tenia unos cuantos leds en casa, y me hice una matriz de 3x3, con 6 pines controlo 9 pins. Esto ya puede considerarse un ahorro significativo ya que nos quedan otras 6 libres (sin contar las de Tx y Rx).</p>
<p class="texto">A lo que iba... con la matriz de 3x3 y el joystick,  montÃ© un "seÃ±alador" que solo indica la direcciÃ³n que marca el joystick.</p>
<p class="texto">AquÃ­ dejo un vÃ­deo con una muestra:</p>
<p class="video"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/5OdnpagK1fk" frameborder="0" allowFullScreen="true"> </iframe></p>
<p class="texto">El cÃ³digo del programa es el que sigue:</p>
<div class="codigo">
<pre><span style="color: #7e7e7e;">//Â DeclaramosÂ losÂ puertosÂ queÂ correspondenÂ aÂ filasÂ y</span>
<span style="color: #7e7e7e;">//Â columnasÂ comoÂ unaÂ matriz</span>
<span style="color: #cc6600;">int</span> aLed[2][3]={{2, 3, 4}, {7, 6, 5}};

<span style="color: #7e7e7e;">//Â DeclaramosÂ losÂ potenciometrosÂ queÂ controlanÂ los</span>
<span style="color: #7e7e7e;">//Â 2Â ejesÂ delÂ joystickÂ enÂ elÂ puertoÂ analogicoÂ que</span>
<span style="color: #7e7e7e;">//Â corresponda.Â elÂ formatoÂ delÂ arrayÂ es</span>
<span style="color: #7e7e7e;">//Â Â Â Â Â Â Â Â Â Â Â {fila,Â columna}</span>
<span style="color: #cc6600;">int</span> anPot[] = {1, 0};

<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>setup</strong></span> (){
Â Â 
Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i &lt; 3; i++){     <span style="color: #7e7e7e;">// Por comodidad...</span>
Â Â Â Â <span style="color: #cc6600;">pinMode</span> (aLed [0] [i], <span style="color: #006699;">OUTPUT</span>);
Â Â Â Â <span style="color: #cc6600;">pinMode</span> (aLed [1] [i], <span style="color: #006699;">OUTPUT</span>);
Â Â }
Â Â 
Â Â <span style="color: #7e7e7e;">// Encendemos el led central</span>
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [0] [1], <span style="color: #006699;">HIGH</span>);
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [1] [1], <span style="color: #006699;">HIGH</span>);
}

<span style="color: #cc6600;">void</span> OnLed (<span style="color: #cc6600;">int</span> *iLed){
Â Â 
Â Â <span style="color: #7e7e7e;">// Apagamos todos los leds para encender el que</span>
Â Â <span style="color: #7e7e7e;">// el que toca. Solo conseguimos no estar pendiente</span>
Â Â <span style="color: #7e7e7e;">// del led que estÃ¡ encendido.</span>
Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i&lt;3; i++){

Â Â Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [0] [i], <span style="color: #006699;">LOW</span>);
Â Â Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [1] [i], <span style="color: #006699;">LOW</span>);
Â Â }
Â 
Â Â <span style="color: #7e7e7e;">// Encendemos el que toca...</span>
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [0][iLed[0]], <span style="color: #006699;">HIGH</span>);
Â Â <span style="color: #cc6600;">digitalWrite</span> (aLed [1][iLed[1]], <span style="color: #006699;">HIGH</span>);
}
Â Â 
<span style="color: #cc6600;">void</span> <span style="color: #cc6600;"><strong>loop</strong></span> (){
Â Â 
Â Â <span style="color: #cc6600;">int</span> iVal[2];
Â Â <span style="color: #cc6600;">int</span> iLed[2];
Â Â 
Â Â iValÂ [0]Â =Â <span style="color: #cc6600;">analogRead</span> (anPot [0]);
Â Â iValÂ [1]Â =Â <span style="color: #cc6600;">analogRead</span> (anPot [1]);
Â Â 
Â Â <span style="color: #7e7e7e;">// Toca transformar los 10 bits a columnas y filas.</span>
Â Â <span style="color: #cc6600;">for</span> (<span style="color: #cc6600;">int</span> i=0; i &lt; 2; i++){

Â Â Â Â <span style="color: #7e7e7e;">// Los valores que estÃ¡n escritos funcionan mÃ¡s</span>
Â Â Â Â <span style="color: #7e7e7e;">// o menos bien...</span>

Â Â Â Â <span style="color: #7e7e7e;">// Podemos poner valores altos (100 y 900) para</span>
Â Â Â Â <span style="color: #7e7e7e;">// no tener que preocuparnos por las diagonales</span>
Â Â Â Â 
Â Â Â Â <span style="color: #7e7e7e;">// En caso de necesitar mÃ¡s precisiÃ³n se puede</span>
Â Â Â Â <span style="color: #7e7e7e;">// separar los valores de un potenciÃ³metro con</span>
Â Â Â Â <span style="color: #7e7e7e;">// los del otro... esto se consigue con un</span>
Â Â Â Â <span style="color: #7e7e7e;">// if (i) {</span>
Â Â Â Â <span style="color: #7e7e7e;">//   poteciÃ³metro 1</span>
Â Â Â Â <span style="color: #7e7e7e;">// }</span>
Â Â Â Â <span style="color: #7e7e7e;">// else {</span>
Â Â Â Â <span style="color: #7e7e7e;">//   potenciÃ³metro 2</span>
Â Â Â Â <span style="color: #7e7e7e;">// }</span>
Â Â Â Â 
Â Â Â Â <span style="color: #cc6600;">if</span> (iVal [i] &gt; 700)
Â Â Â Â Â Â iLedÂ [i]Â =Â 2;
Â Â Â Â <span style="color: #cc6600;">else</span> <span style="color: #cc6600;">if</span> (iVal [i] &gt; 300)
Â Â Â Â Â Â iLedÂ [i]Â =Â 1;
Â Â Â Â <span style="color: #cc6600;">else</span> iLed [i] = 0;
Â Â }
Â Â 
Â Â OnLedÂ (iLed);
Â Â 
Â Â <span style="color: #cc6600;">delay</span> (100);
}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ponteduino.es/2010/07/joystick/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

