<?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>RoBoOpS &#187; SRF05</title>
	<atom:link href="http://www.roboops.es/tag/srf05/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.roboops.es</link>
	<description>…cables y eso…</description>
	<lastBuildDate>Tue, 31 Aug 2010 08:03:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SRF05 con Arduino.</title>
		<link>http://www.roboops.es/2009/03/08/srf05-con-arduino/</link>
		<comments>http://www.roboops.es/2009/03/08/srf05-con-arduino/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 23:41:34 +0000</pubDate>
		<dc:creator>BoOpS</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[SRF05]]></category>
		<category><![CDATA[Ultrasonidos]]></category>

		<guid isPermaLink="false">http://www.roboops.es/?p=169</guid>
		<description><![CDATA[Después de unas cuantas de horas intentando usar la función pulseIn de Arduino para leer los sensores de distancia SRF05, lo he dejado por imposible y me he puesto a desarrollar mi propia función para la lectura. Esta de basa &#8230; <a href="http://www.roboops.es/2009/03/08/srf05-con-arduino/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Después de unas cuantas de horas intentando usar la función pulseIn de Arduino para leer los sensores de distancia SRF05, lo he dejado por imposible y me he puesto a desarrollar mi propia función para la lectura. Esta de basa en la función micros(); (unsigned long):</p>
<p><code>unsigned int lectura()<br />
{<br />
unsigned long acu = 0;<br />
unsigned long largo = 0;<br />
unsigned long primero = 0;<br />
unsigned long ultimo = 0;<br />
for (int x = 0; x &lt;2; x++)<br />
{<br />
// enviamos al sensor un pulso de 10uS<br />
pinMode(pulso1, OUTPUT);<br />
pinMode(eco1, OUTPUT);<br />
digitalWrite(pulso1, HIGH);<br />
delayMicroseconds(10);<br />
digitalWrite(pulso1, LOW);</code></p>
<p>while(digitalRead(eco1) == 0); //Esperamos a que el SRF05 ponga la linea en alto para empezar a contar<br />
primero = micros(); //anotamos el valor al poner la linea en alto<br />
while(digitalRead(eco1) == 1); //Cuando pone la linea en bajo seguimos adelante<br />
ultimo = micros();  //anotamos el valor al poner la linea en bajo<br />
largo = ultimo &#8211; primero; // calculamos el valor de la distancia<br />
acu += largo ; //acumulamos los valores<br />
delay(50); //evitamos que se solapen los rebotes<br />
}<br />
// convertimos a centimetros la medida (1 cm por cada 58uS por dos medidas)<br />
return( (unsigned int) (acu / 116) );<br />
//(Salida para debug):<br />
//Serial.print(&#8220;Delante = &#8220;);<br />
//Serial.println(acu / 116);<br />
}</p>
<p>Y ahora las posibles mejoras:</p>
<ul>
<li>Timeout:</li>
</ul>
<p><code> while(digitalRead(eco1) == 0);<br />
while(digitalRead(eco1) == 1);<br />
</code></p>
<p>Se podría añadir una segunda condición por si el sensor esta desconectado no se quede bloqueado.</p>
<ul>
<li>Desbordamiento:</li>
</ul>
<p><code> largo = ultimo - primero; // calculamos el valor de la distancia<br />
acu += largo ; //acumulamos los valores<br />
</code></p>
<p>No se tiene en cuenta que la función micros() se desborda cada 70 minutos. Se podría hacer una comparación para que segundo siempre sea mayor que primero.</p>
<ul>
<li>Precisión:</li>
</ul>
<p><code><br />
return( (unsigned int) (acu / 116) );<br />
</code></p>
<p>Se podría añadir parametros o sobrecargas para definir el numero de muestras a tomar y si queremos precisión de milimetros.</p>
<p>Espero que sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.roboops.es/2009/03/08/srf05-con-arduino/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
