{"id":2533,"date":"2020-07-09T07:00:00","date_gmt":"2020-07-09T06:00:00","guid":{"rendered":"http:\/\/sereingeniera.ugr.es\/?p=2533"},"modified":"2020-07-08T08:16:14","modified_gmt":"2020-07-08T07:16:14","slug":"solucion-al-ultimo-reto-propuesto","status":"publish","type":"post","link":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/","title":{"rendered":"Soluci\u00f3n al \u00faltimo Reto propuesto"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Soluci\u00f3n del RETO 4:<\/h3>\n\n\n\n<p>Antes de ayer nos quedamos con las 2 (dos) ampliaci\u00f3n que propon\u00eda el reto diario. La primera parte del <strong>reto<\/strong> consist\u00eda en simplificar el bucle <em>loop()<\/em> y dejarlo as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void loop(){\n if (escaparon < 5){\n    jugar();       \n  } else{\n    game_over();\n  }\n} <\/pre>\n\n\n\n<p>Para eso tenemos que crear dos funciones, <em>jugar()<\/em> y <em>game_over(<\/em>), y dentro de cada funci\u00f3n poner el c\u00f3digo que hab\u00eda en su lugar.<\/p>\n\n\n\n<p>Dentro de <em>jugar()<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void jugar(){\n  disparando();  \n    if (contador &gt; 5000)  {\n      contador = 0;\n      encenderapagarLEDaleatorio();\n      }\n}  <\/pre>\n\n\n\n<p>Dentro de <em>game_over()<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void game_over(){\n  apagarLED(led0);\n  apagarLED(led1);\n  apagarLED(led2);\n  apagarLED(led3);\n  \/\/M\u00e1s la m\u00fasica de la derrota!\n}<\/pre>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"El reto de hoy de programaci\u00f3n con Arduino: \u00a1crear funciones jugar y finalizar juego!\" width=\"604\" height=\"340\" src=\"https:\/\/www.youtube.com\/embed\/InwvGyMXlQk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>La segunda parte del <strong>reto<\/strong> consist\u00eda en programar la victoria, de forma similar a como hemos programado la derrota.<\/p>\n\n\n\n<p>Para ello, y siguiendo con la l\u00f3gica de las funciones, vamos a crear la funci\u00f3n <em>win()<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void win(){\n  encenderLED(led0);\n  encenderLED(led1);\n  encenderLED(led2);\n  encenderLED(led3);\n  \/\/M\u00e1s la m\u00fasica de la victoria!\n} <\/pre>\n\n\n\n<p>\u00bfCu\u00e1ndo llamamos a esta funci\u00f3n? Cuando una nueva variable llamada <em>bajas<\/em>, que cuente el numero de disparos que hemos acertado, llegue a 20. <\/p>\n\n\n\n<p>Cada vez que disparemos y consigamos apagar un led hay que aumentar el contador de bajas. A la vez que aumentamos el contador de bajas en la funci\u00f3n <em>disparando()<\/em> vamos a aprovechar para solucionar un problema que ten\u00eda y que hasta este momento no era importante:<\/p>\n\n\n\n<p>Cuando disparamos a una fotoresistencia con el laser, el valor de la fotoresistencia pasa el l\u00edmite que le hemos fijado y autom\u00e1ticamente se apaga el LED:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/Dentro de void disparando():\n\nif (analogRead(foto0) &gt; limite){\n       apagarLED(led0);\n       encendido0 = false;\n    }<\/pre>\n\n\n\n<p>\u00bfQu\u00e9 pasar\u00eda si el LED ya estuviera apagado? Que el programa entrar\u00eda de todas formas en la funci\u00f3n e intentar\u00eda apagarlo de nuevo, a\u00f1adiendo una baja cuando realmente no se a producido.<\/p>\n\n\n\n<p>Para solucionar esto hay que a\u00f1adir la condici\u00f3n de que el LED est\u00e9 encendido, adem\u00e1s de la condici\u00f3n de que la fotoresistencia supere el l\u00edmite, para no apagar un LED que ya est\u00e1 apagado.<\/p>\n\n\n\n<p>Quedando de esta forma la funci\u00f3n <em>disparando():<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">void disparando(){\n  if (analogRead(foto0) &gt; limite &amp;&amp; encendido0){\n       apagarLED(led0);\n       encendido0 = false;\n       bajas++;\n    }\n  if (analogRead(foto1) &gt; limite &amp;&amp; encendido1){\n       apagarLED(led1);\n       encendido1 = false;\n       bajas++;\n    }\n  if (analogRead(foto2) &gt; limite &amp;&amp; encendido2){\n       apagarLED(led2);\n       encendido2 = false;\n       bajas++;\n    }\n  if (analogRead(foto3) &gt; limite &amp;&amp; encendido3){\n      apagarLED(led3);\n      encendido3 = false;\n      bajas++;\n    }\n  contador++;\n}<\/pre>\n\n\n\n<p>Podemos poner cualquier valor en el lugar del 20 (veinte), que dice el enunciado que son el n\u00famero de enemigos que hay que derrotar para ganar el juego. Y para que sea m\u00e1s f\u00e1cil modificar el c\u00f3digo, podemos crear una variable bajas_para_ganar. De esta forma, si queremos aumentar  el n\u00famero de bajas necesarias para ganar solo tenemos que modificar ese n\u00famero sin tener que buscarlo en el c\u00f3digo. <\/p>\n\n\n\n<p>NOTA: Esto tambi\u00e9n se puede hacer con la derrota y <em>escaparon_para_perder <\/em>en lugar del n\u00famero 5 (cinco) que pusimos ayer.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\n\/\/Recordatorio: Las variable se inicializan al principio. Antes del setup().\n.\n.\n.\n\nconst int bajas_para_ganar = 20;\nconst int escaparon_para_perder = 5;\n\nint contador = 0;\nint escaparon = 0;\nint bajas = 0;\n\n.\n.\n.\n\nvoid loop(){\n  if (bajas >= bajas_para_ganar){\n    win();\n  } else if (escaparon <= escaparon_para_perder){\n    jugar();       \n  } else{\n    game_over();\n  }\n} <\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-dots\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Soluci\u00f3n del RETO 4: Antes de ayer nos quedamos con las 2 (dos) ampliaci\u00f3n que propon\u00eda el reto diario. La primera parte del reto consist\u00eda en simplificar el bucle loop() y dejarlo as\u00ed: void loop(){ if (escaparon < 5){ jugar(); } else{ game_over(); } } Para eso tenemos que crear dos funciones, jugar() y game_over(), &hellip; <a href=\"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Soluci\u00f3n al \u00faltimo Reto propuesto<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-2533","post","type-post","status-publish","format-standard","hentry","category-general"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera\" \/>\n<meta property=\"og:description\" content=\"Soluci\u00f3n del RETO 4: Antes de ayer nos quedamos con las 2 (dos) ampliaci\u00f3n que propon\u00eda el reto diario. La primera parte del reto consist\u00eda en simplificar el bucle loop() y dejarlo as\u00ed: void loop(){ if (escaparon &lt; 5){ jugar(); } else{ game_over(); } } Para eso tenemos que crear dos funciones, jugar() y game_over(), &hellip; Seguir leyendo Soluci\u00f3n al \u00faltimo Reto propuesto &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/\" \/>\n<meta property=\"og:site_name\" content=\"Ser\u00e9 Ingeniera\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-09T06:00:00+00:00\" \/>\n<meta name=\"author\" content=\"Elvira Castillo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elvira Castillo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/\"},\"author\":{\"name\":\"Elvira Castillo\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/#\\\/schema\\\/person\\\/e642dc501d8472076090b2de23926846\"},\"headline\":\"Soluci\u00f3n al \u00faltimo Reto propuesto\",\"datePublished\":\"2020-07-09T06:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/\"},\"wordCount\":400,\"commentCount\":0,\"articleSection\":[\"General\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/\",\"url\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/\",\"name\":\"Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/#website\"},\"datePublished\":\"2020-07-09T06:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/#\\\/schema\\\/person\\\/e642dc501d8472076090b2de23926846\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/2020\\\/07\\\/09\\\/solucion-al-ultimo-reto-propuesto\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Soluci\u00f3n al \u00faltimo Reto propuesto\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/#website\",\"url\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/\",\"name\":\"Ser\u00e9 Ingeniera\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/#\\\/schema\\\/person\\\/e642dc501d8472076090b2de23926846\",\"name\":\"Elvira Castillo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g\",\"caption\":\"Elvira Castillo\"},\"url\":\"https:\\\/\\\/sereingeniera.ugr.es\\\/index.php\\\/author\\\/elvira\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/","og_locale":"es_ES","og_type":"article","og_title":"Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera","og_description":"Soluci\u00f3n del RETO 4: Antes de ayer nos quedamos con las 2 (dos) ampliaci\u00f3n que propon\u00eda el reto diario. La primera parte del reto consist\u00eda en simplificar el bucle loop() y dejarlo as\u00ed: void loop(){ if (escaparon < 5){ jugar(); } else{ game_over(); } } Para eso tenemos que crear dos funciones, jugar() y game_over(), &hellip; Seguir leyendo Soluci\u00f3n al \u00faltimo Reto propuesto &rarr;","og_url":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/","og_site_name":"Ser\u00e9 Ingeniera","article_published_time":"2020-07-09T06:00:00+00:00","author":"Elvira Castillo","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Elvira Castillo","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/#article","isPartOf":{"@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/"},"author":{"name":"Elvira Castillo","@id":"https:\/\/sereingeniera.ugr.es\/#\/schema\/person\/e642dc501d8472076090b2de23926846"},"headline":"Soluci\u00f3n al \u00faltimo Reto propuesto","datePublished":"2020-07-09T06:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/"},"wordCount":400,"commentCount":0,"articleSection":["General"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/","url":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/","name":"Soluci\u00f3n al \u00faltimo Reto propuesto - Ser\u00e9 Ingeniera","isPartOf":{"@id":"https:\/\/sereingeniera.ugr.es\/#website"},"datePublished":"2020-07-09T06:00:00+00:00","author":{"@id":"https:\/\/sereingeniera.ugr.es\/#\/schema\/person\/e642dc501d8472076090b2de23926846"},"breadcrumb":{"@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sereingeniera.ugr.es\/index.php\/2020\/07\/09\/solucion-al-ultimo-reto-propuesto\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/sereingeniera.ugr.es\/"},{"@type":"ListItem","position":2,"name":"Soluci\u00f3n al \u00faltimo Reto propuesto"}]},{"@type":"WebSite","@id":"https:\/\/sereingeniera.ugr.es\/#website","url":"https:\/\/sereingeniera.ugr.es\/","name":"Ser\u00e9 Ingeniera","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sereingeniera.ugr.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/sereingeniera.ugr.es\/#\/schema\/person\/e642dc501d8472076090b2de23926846","name":"Elvira Castillo","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9174915daf6f60047cf21ae0bd688bf6ca4c0056cb27f3cb63b3339a3738f5fb?s=96&d=monsterid&r=g","caption":"Elvira Castillo"},"url":"https:\/\/sereingeniera.ugr.es\/index.php\/author\/elvira\/"}]}},"_links":{"self":[{"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/posts\/2533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/comments?post=2533"}],"version-history":[{"count":1,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/posts\/2533\/revisions"}],"predecessor-version":[{"id":2534,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/posts\/2533\/revisions\/2534"}],"wp:attachment":[{"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/media?parent=2533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/categories?post=2533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sereingeniera.ugr.es\/index.php\/wp-json\/wp\/v2\/tags?post=2533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}