{"id":1555,"date":"2014-05-19T18:28:02","date_gmt":"2014-05-19T16:28:02","guid":{"rendered":"http:\/\/guimi.net\/blogs\/hiparco\/?p=1555"},"modified":"2014-07-25T12:50:53","modified_gmt":"2014-07-25T10:50:53","slug":"arduino-sensores-de-linea","status":"publish","type":"post","link":"http:\/\/guimi.net\/blogs\/hiparco\/arduino-sensores-de-linea\/","title":{"rendered":"Arduino: Sensores de linea"},"content":{"rendered":"<p>El circuito (realizado con <a href=\"http:\/\/fritzing.org\/\">Fritzing<\/a>):<br \/>\n<img decoding=\"async\" src=\"\/imgs\/blog\/hiparco\/arduino\/013-Sensores_Direccion_bb.png\" alt=\"\" \/><\/p>\n<p>Utiliza la libreria <a href=\"http:\/\/guimi.net\/blogs\/hiparco\/arduino-libreria-tocamelodia-para-tocar-melodias-predeterminadas\/\">TocaMelodia<\/a>, pero puede eliminarse f\u00e1cilmente comentado las lineas correspondientes.<br \/>\n<!--more--><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/*\r\n * Este programa lee dos sensores de seguimiento (tracking sensor)\r\n * e indica la ruta a seguir\r\n *\r\n * 2014 - Guimi (http:\/\/guimi.net)\r\n *\/\r\n\r\n#include &lt;TocaMelodia.h&gt;\r\n\r\n\r\n\/\/ VARIABLES\r\n\/\/----------\r\nconst byte sensorIzq=3; \/\/ Constante que indica el pin del sensor Izquierdo\r\nconst byte sensorDer=2; \/\/ Constante que indica el pin del sensor Derecho\r\nconst byte altavoz=4; \/\/ Constante que indica el pin del altavoz\r\n\r\nbyte valorIzq=0; \/\/ Variable para guardar el valor del sensor Izquierdo &#x5B;0 Negro; 1 Blanco]\r\nbyte valorDer=0; \/\/ Variable para guardar el valor del sensor Derecho &#x5B;0 Negro; 1 Blanco]\r\n\r\nbyte estado=0; \/\/ 0 en marcha; 1 finalizado\r\nbyte direccion=0; \/\/ Variable que indica la direccion a seguir\r\n                  \/\/ 0 - Quieto\r\n                  \/\/ 1 - Izquierda\r\n                  \/\/ 2 - Delante\r\n                  \/\/ 3 - Derecha\r\n                  \/\/ 9 - Final\r\n\r\nTocaMelodia tocaMelodia(altavoz);\r\n\r\n\/\/ FUNCION SETUP\r\n\/\/--------------\r\nvoid setup(){\r\n  \/\/ Definimos cada pin como entrada o salida\r\n  pinMode(sensorIzq,INPUT);\r\n  pinMode(sensorDer,INPUT);\r\n\r\n  \/\/ Preparamos la comunicacion mediante el puerto serie\r\n  Serial.begin(9600);\r\n  \r\n  tocaMelodia.toca(MELODIA_FANFARRIA);\r\n}\r\n\r\n\r\n\/\/ FUNCION LOOP\r\n\/\/-------------\r\nvoid loop(){\r\n  \/\/ Mientras el estado sea funcionando\r\n  while (estado = 0) {\r\n    \/\/ Leemos el valor de los sensores &#x5B;0-1]\r\n    valorIzq=digitalRead(sensorIzq);\r\n    valorDer=digitalRead(sensorDer);\r\n  \r\n    \/\/ Mostramos informacion  \r\n    Serial.print(&quot;Izquierda:&quot;);\r\n    Serial.print(valorIzq);\r\n    Serial.print(&quot;; Derecha:&quot;);\r\n    Serial.print(valorDer);\r\n  \r\n    \/\/ Establecemos direccion en base a las lecturas\r\n    if (valorIzq &amp;&amp; valorDer) { movimiento(2); } \/\/ Delante\r\n    else if (valorIzq &amp;&amp; !valorDer) { movimiento(3); } \/\/ Derecha\r\n    else if (!valorIzq &amp;&amp; valorDer) { movimiento(1); } \/\/ Izquierda\r\n    else {movimiento(0);} \/\/ Quieto\r\n      \r\n    \/\/ Esperamos un tiempo de reaccion para los componentes\r\n    delay(50);\r\n  }\r\n\r\n  \/\/while(1); \/\/ Bucle infinito para parar el programa\r\n}\r\n\r\nvoid movimiento(byte direccion) {\r\n  Serial.print(&quot;; Direccion:&quot;);\r\n  switch(direccion){\r\n    case 0:\r\n      Serial.println(&quot;Quieto&quot;);\r\n      tocaMelodia.toca(MELODIA_PODER_PERRUNO);\r\n      delay(2000);\r\n      estado=1;\r\n      break;\r\n    case 1:\r\n      Serial.println(&quot;Izquierda&quot;);\r\n      break;\r\n    case 2:\r\n      Serial.println(&quot;Delante&quot;);\r\n      break;\r\n    case 3:\r\n      Serial.println(&quot;Derecha&quot;);\r\n      break;\r\n  } \r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El circuito (realizado con Fritzing): Utiliza la libreria TocaMelodia, pero puede eliminarse f\u00e1cilmente comentado las lineas correspondientes.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,29,16,33],"tags":[],"class_list":["post-1555","post","type-post","status-publish","format-standard","hentry","category-arduino","category-electronica","category-hardware","category-programacion"],"_links":{"self":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/posts\/1555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/comments?post=1555"}],"version-history":[{"count":7,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/posts\/1555\/revisions"}],"predecessor-version":[{"id":1681,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/posts\/1555\/revisions\/1681"}],"wp:attachment":[{"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/media?parent=1555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/categories?post=1555"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/guimi.net\/blogs\/hiparco\/wp-json\/wp\/v2\/tags?post=1555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}