{"id":4304,"date":"2016-02-07T20:24:31","date_gmt":"2016-02-07T19:24:31","guid":{"rendered":"http:\/\/salesianosatocha.es\/domit\/?p=4304"},"modified":"2016-02-07T20:24:31","modified_gmt":"2016-02-07T19:24:31","slug":"grupo-1-semana-4","status":"publish","type":"post","link":"https:\/\/salesianosatocha.es\/domit\/blog\/2016\/02\/07\/grupo-1-semana-4\/","title":{"rendered":"Grupo 1 &#8211; Semana 4"},"content":{"rendered":"<p>En esta semana hemos recibido el driver de motores L298P para arduino, por lo que nos hemos puesto manos a la obra con la programaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-4305 aligncenter\" src=\"http:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163628-300x225.jpg\" alt=\"20160207_163628\" width=\"300\" height=\"225\" srcset=\"https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163628-300x225.jpg 300w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163628-768x576.jpg 768w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163628-1024x768.jpg 1024w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163628-1080x810.jpg 1080w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Ya hemos conseguido controlar con m\u00f3vil por medio de bluetooth uno de los dos motores que \u00e9sta shield nos permite colocar, pero conseguir controlar el segundo motor no va a suponer un gran desaf\u00edo teniendo ya la base del programa.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-4306 aligncenter\" src=\"http:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163828-300x225.jpg\" alt=\"20160207_163828\" width=\"363\" height=\"272\" srcset=\"https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163828-300x225.jpg 300w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163828-768x576.jpg 768w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163828-1024x768.jpg 1024w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/20160207_163828-1080x810.jpg 1080w\" sizes=\"(max-width: 363px) 100vw, 363px\" \/><\/p>\n<p>El programa que vamos a dejar a continuaci\u00f3n nos permite controlar (por ahora) un solo motor, que corresponde al canal A del controlador de motores. Mediante el m\u00f3vil y una conexi\u00f3n bluetooth, podremos controlar el motor para que gire en una direcci\u00f3n o en otra, adem\u00e1s de tener 5 velocidades diferentes.<\/p>\n<p>En la pantalla del m\u00f3vil podremos visualizar el estado del motor (Velocidad y direcci\u00f3n de giro).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-4307 aligncenter\" src=\"http:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/Screenshot_2016-02-07-19-48-39-169x300.png\" alt=\"Screenshot_2016-02-07-19-48-39\" width=\"209\" height=\"371\" srcset=\"https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/Screenshot_2016-02-07-19-48-39-169x300.png 169w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/Screenshot_2016-02-07-19-48-39-576x1024.png 576w, https:\/\/salesianosatocha.es\/domit\/files\/2016\/02\/Screenshot_2016-02-07-19-48-39.png 720w\" sizes=\"(max-width: 209px) 100vw, 209px\" \/><\/p>\n<p><strong>C\u00d3DIGO<\/strong><\/p>\n<div align=\"center\"><\/div>\n<div style=\"border: solid 2px #bdbdbd;background: #bdbdbd;color: #000000;padding: 4px;width: 730px;height: 200px;overflow: auto\">\n<p>#include&lt;SoftwareSerial.h&gt; \u00a0\/\/Crea una comunicaci\u00f3n por medio de software<\/p>\n<p>int Tx = 2;<br \/>\nint Rx = 4;<\/p>\n<p>int referencia = 0;<br \/>\nint contadorVelocidad;<br \/>\nint contador = 0;<\/p>\n<p>int velocidadA = 3;<br \/>\nint velocidadB = 11;<\/p>\n<p>int direccionA = 12;<br \/>\nint direccionB = 13;<\/p>\n<p>int frenaA = 9;<br \/>\nint frenaB = 8;<\/p>\n<p>char valueBT;<br \/>\nchar valueSerial;<br \/>\nchar adelante = 118; \/\/Car\u00e1cter v<br \/>\nchar atras = 97; \/\/Car\u00e1cter a<br \/>\nchar dcha = 100; \/\/Car\u00e1cter d<br \/>\nchar izda = 105; \/\/Car\u00e1cter i<br \/>\nchar para = 112; \/\/Car\u00e1cter p<br \/>\nchar mas = 109; \/\/Car\u00e1cter m<br \/>\nchar menos = 110; \/\/Car\u00e1cter n<\/p>\n<p>SoftwareSerial BT1 (Rx, Tx); \/\/Establece el nombre y los pines Rx (4) y Tx (2) para la comunicaci\u00f3n por software.<\/p>\n<p>void setup(){<\/p>\n<p>Serial.begin(9600); \/\/Inicia la comunicaci\u00f3n por el monitor serial<br \/>\nBT1.begin(9600); \/\/Inicia la comunicaci\u00f3n por software<\/p>\n<p>\/\/Setup Canal A<br \/>\npinMode(velocidadA, OUTPUT);<br \/>\npinMode(direccionA, OUTPUT);<br \/>\npinMode(frenaA, OUTPUT);<\/p>\n<p>\/\/Setup Canal B<br \/>\npinMode(velocidadB, OUTPUT);<br \/>\npinMode(direccionB, OUTPUT);<br \/>\npinMode(frenaB, OUTPUT);<br \/>\n}<\/p>\n<p>void loop(){<\/p>\n<p>again:<\/p>\n<p>valueBT = BT1.read(); \/\/Almacena los datos le\u00eddos por el bluetooth en la variable valueBT<br \/>\nvalueSerial = Serial.read(); \/\/Almacena los datos le\u00eddos por el monitor serial en la variable valueSerial<\/p>\n<p>if (valueBT &#8211; adelante == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a adelante (v) sea igual a referencia (0)&#8230;<br \/>\nwhile(digitalRead(9) == HIGH){ \/\/Si el freno del canal A est\u00e1 activado&#8230;<br \/>\ndigitalWrite(frenaA, LOW); \/\/descativa el freno.<br \/>\n}<\/p>\n<p>digitalWrite(direccionA, HIGH); \/\/El motor del canal A gira.<br \/>\nanalogWrite(velocidadA, contadorVelocidad); \/\/Ajusta la velocidad del motor del canal A.<\/p>\n<p>Serial.println(\u00abAvanza.\u00bb);<br \/>\nBT1.println(\u00abAvanza.\u00bb);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; atras == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a atras (a) sea igual a referencia (0)&#8230;<br \/>\nwhile(digitalRead(9) == HIGH){ \/\/Cuando el freno del canal A est\u00e9 activado&#8230;<br \/>\ndigitalWrite(frenaA, LOW); \/\/&#8230;descativa el freno.<br \/>\n}<\/p>\n<p>digitalWrite(direccionA, LOW); \/\/Invierte el giro del motor del canal A.<br \/>\nanalogWrite(velocidadA, contadorVelocidad); \/\/Ajusta la velocidad del motor del canal A.<\/p>\n<p>Serial.println(\u00abMarcha atras.\u00bb);<br \/>\nBT1.println(\u00abMarcha atras.\u00bb);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; dcha == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a dcha (d) sea igual a referencia (0)&#8230;<\/p>\n<p>Serial.println(\u00abGira a la derecha.\u00bb);<br \/>\nBT1.println(\u00abGira a la derecha.\u00bb);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; izda == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a izda (i) sea igual a referencia (0)&#8230;<\/p>\n<p>Serial.println(\u00abGira a la izquierda.\u00bb);<br \/>\nBT1.println(\u00abGira a la izquierda.\u00bb);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; para == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a para (p) sea igual a referencia (0)&#8230;<\/p>\n<p>digitalWrite(frenaA, HIGH); \/\/Activa el freno del canal A.<\/p>\n<p>Serial.println(\u00abFrena.\\n\u00bb);<br \/>\nBT1.println(\u00abFrena.\\n\u00bb);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; mas == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a mas (m) sea igual a referencia (0)&#8230;<\/p>\n<p>contadorVelocidad = contadorVelocidad + 50; \/\/&#8230;la variable contadorVelocidad aumenta en 50.<br \/>\ncontador = contador + 1; \/\/&#8230;la variable contador aumenta en 1.<\/p>\n<p>if (contador != 6){ \/\/Si la variable contador no es igual a 6&#8230;<\/p>\n<p>Serial.println(\u00abLa velocidad ha sido aumentada en 50 puntos\u00bb);<br \/>\nSerial.print(contador);<br \/>\nSerial.print(\u00ab\/5\\n\u00bb);<\/p>\n<p>BT1.println(\u00abLa velocidad ha sido aumentada en 50 puntos\u00bb);<br \/>\nBT1.print(contador);<br \/>\nBT1.print(\u00ab\/5\\n\u00bb);<br \/>\n}<\/p>\n<p>while (contador == 6){ \/\/Cuando la variable contador sea igual a 6&#8230;<\/p>\n<p>contador = contador &#8211; 1; \/\/&#8230;reduce en 1 contador.<\/p>\n<p>Serial.println(\u00abNo se puede aumentar mas la velocidad.\u00bb);<br \/>\nSerial.print(contador);<br \/>\nSerial.print(\u00ab\/5\\n\u00bb);<\/p>\n<p>BT1.println(\u00abNo se puede aumentar mas la velocidad.\u00bb);<br \/>\nBT1.print(contador);<br \/>\nBT1.print(\u00ab\/5\\n\u00bb);<br \/>\n}<\/p>\n<p>while (contadorVelocidad == 300){ \/\/Cuando contadorVelocidad sea igual a 300&#8230;<\/p>\n<p>contadorVelocidad = contadorVelocidad &#8211; 50; \/\/&#8230;reduce contador en 50.<br \/>\n}<\/p>\n<p>Serial.println(contadorVelocidad);<br \/>\n}<\/p>\n<p>if (valueBT &#8211; menos == referencia){ \/\/Si el valor le\u00eddo por bluetooth menos el car\u00e1cter asignado a menos (n) sea igual a referencia (0)&#8230;<\/p>\n<p>contadorVelocidad = contadorVelocidad &#8211; 50; \/\/&#8230;la variable contadorVelocidad se reduce en 50.<br \/>\ncontador = contador &#8211; 1; \/\/&#8230;la variable contador se reduce en 1.<\/p>\n<p>if (contador != -1){ \/\/Si la variable contador no es igual a -1&#8230;<\/p>\n<p>Serial.println(\u00abLa velocidad ha sido reducida en 50 puntos.\u00bb);<br \/>\nSerial.print(contador);<br \/>\nSerial.print(\u00ab\/5\\n\u00bb);<\/p>\n<p>BT1.println(\u00abLa velocidad ha sido reducida en 50 puntos.\u00bb);<br \/>\nBT1.print(contador);<br \/>\nBT1.print(\u00ab\/5\\n\u00bb);<br \/>\n}<\/p>\n<p>while (contador == -1){ \/\/Cuando la variable contador sea igual a -1&#8230;<\/p>\n<p>contador = contador + 1; \/\/&#8230;aumenta en 1 contador.<\/p>\n<p>Serial.println(\u00abNo se puede reducir mas la velocidad.\u00bb);<br \/>\nSerial.print(contador);<br \/>\nSerial.print(\u00ab\/5\\n\u00bb);<\/p>\n<p>BT1.println(\u00abNo se puede reducir mas la velocidad.\u00bb);<br \/>\nBT1.print(contador);<br \/>\nBT1.print(\u00ab\/5\\n\u00bb);<br \/>\n}<\/p>\n<p>while (contadorVelocidad == -50){ \/\/Cuando la variable contadorVelocidad sea igual a -50&#8230;<\/p>\n<p>contadorVelocidad = contadorVelocidad + 50; \/\/&#8230;aumenta contador en 50.<br \/>\n}<\/p>\n<p>Serial.println(contadorVelocidad);<br \/>\n}<\/p>\n<p>while (((valueBT) == adelante || atras || dcha || izda) &amp;&amp; ((valueSerial) != adelante || atras || dcha || izda)){ \/\/Cuando los datos le\u00eddos por el bluetooh no sean igual que los datos<br \/>\n\/\/le\u00eddos por el monitor serial&#8230;<\/p>\n<p>goto again; \/\/Vuelve a again.<br \/>\n}<\/p>\n<p>}<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta semana hemos recibido el driver de motores L298P para arduino, por lo que nos hemos puesto manos a la obra con la programaci\u00f3n. Ya hemos conseguido controlar con m\u00f3vil por medio de bluetooth uno de los dos motores que \u00e9sta shield nos permite colocar, pero conseguir controlar el segundo motor no va a [&hellip;]<\/p>\n","protected":false},"author":90,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/posts\/4304"}],"collection":[{"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/comments?post=4304"}],"version-history":[{"count":1,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/posts\/4304\/revisions"}],"predecessor-version":[{"id":4308,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/posts\/4304\/revisions\/4308"}],"wp:attachment":[{"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/media?parent=4304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/categories?post=4304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salesianosatocha.es\/domit\/wp-json\/wp\/v2\/tags?post=4304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}