{"id":6709,"date":"2023-05-08T22:20:38","date_gmt":"2023-05-08T20:20:38","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=6709"},"modified":"2023-05-09T08:52:46","modified_gmt":"2023-05-09T06:52:46","slug":"snake","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/","title":{"rendered":"SNAKE CON ARDUINO"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">INTRODUCCI\u00d3N, IDEAS Y OBJETIVOS<\/h2>\n\n\n\n<p>El proyecto que hemos desarrollado utilizando Arduino se trata del videojuego cl\u00e1sico conocido como \u00abSnake\u00bb, implementado con una matriz LED 8&#215;8, un joystick, una pantalla LCD y un zumbador.<\/p>\n\n\n\n<p>El juego de Snake es ampliamente reconocido y ha sido disfrutado por jugadores de todas las edades, como todos lo hab\u00edamos jugado, nuestro objetivo era crear el juego, inicialmente solo iba a haber un modo de juego, pero mas tarde, pensamos que desarrollar un segundo modo de juego pod\u00eda hacer nuestro programa m\u00e1s completo. Consiste en controlar una serpiente que se desplaza por una cuadr\u00edcula, con el objetivo de comer la comida dispersa en el tablero para aumentar su tama\u00f1o. Sin embargo, debemos evitar chocar con nuestra propio cuerpo, ya que eso significar\u00eda el fin del juego.<\/p>\n\n\n\n<p>En este proyecto, hemos utilizado una placa de Arduino, una matriz LED 8&#215;8 y un joystick para crear una experiencia interactiva. La matriz LED se encarga de mostrar el tablero de juego, mientras que el joystick nos permite controlar la direcci\u00f3n de la serpiente. Adem\u00e1s, hemos implementado efectos de sonido con un zumbador y un sistema de puntuaci\u00f3n para hacer el juego m\u00e1s completo y emocionante que se muestra en la pantalla LCD, adem\u00e1s, esta pantalla nos permite elegir los distintos modos de juego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">COMPONENTES<\/h2>\n\n\n\n<p>Para desarrollarlo, hemos usado los siguientes componentes:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>COMPONENTES<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>COSTE<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Placa Arduino<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Joystick<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Zumbador<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cables<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;&#8211;<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">LCD 16X2<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;-<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">matriz leds 8&#215;8<\/td><td class=\"has-text-align-center\" data-align=\"center\">3&#215;16\u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Placa protoboard<\/td><td class=\"has-text-align-center\" data-align=\"center\">&#8212;-<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">PARTE HARDWARE<\/h2>\n\n\n\n<p>Para la parte hardware de este proyecto, hemos necesitado dos pantallas diferentes: una matriz de leds 8&#215;8 para el juego de la serpientes, y una pantalla LCD 16&#215;2 para escribir la puntuaci\u00f3n de los jugadores. Adem\u00e1s para controlar la serpientes hemos necesitado un joystick y para los sonidos hemos utilizado un zumbador.<\/p>\n\n\n\n<p>No nos ha hecho falta ninguna resistencia o potenci\u00f3metro para la pantalla LCD ya que los 5V de la placa de Arduino han dado toda la potencia necesaria para todos los componentes del diagrama.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"570\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/Captura-de-pantalla-2023-05-06-203134-1024x570.png\" alt=\"\" class=\"wp-image-6727\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/Captura-de-pantalla-2023-05-06-203134-1024x570.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/Captura-de-pantalla-2023-05-06-203134-300x167.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/Captura-de-pantalla-2023-05-06-203134-768x427.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/Captura-de-pantalla-2023-05-06-203134.png 1290w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">PARTE SOFTWARE<\/h2>\n\n\n\n<p>En cuanto al software, una de las primeras cosas que tuvimos que hacer fue ver que librer\u00edas deb\u00edamos usar para manejar la matriz LED y el LCD. <\/p>\n\n\n\n<p>Creemos que el c\u00f3digo es f\u00e1cil de leer y entender, gracias al uso de nombres de variables y funciones descriptivas y a la estructura clara y ordenada del c\u00f3digo.<\/p>\n\n\n\n<p>Al principio, creamos un c\u00f3digo para jugar \u00fanicamente a un modo de juego, jugando a este modo de juego desde el loop y usando las funciones que tambi\u00e9n usar\u00edamos posteriormente en el c\u00f3digo final. Las funciones utilizadas son: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mover_serpiente(direccion); <\/li>\n\n\n\n<li>dibujar_serpiente(); <\/li>\n\n\n\n<li>comprobar_comida();<\/li>\n\n\n\n<li>comprobar_choque(); <\/li>\n\n\n\n<li>delay(velocidad);<\/li>\n<\/ul>\n\n\n\n<p>Posteriormente, al crear el segundo modo de juego y la posibilidad de elegir juego tuvimos que crear una condici\u00f3n en el if para cuando el juego hubiera terminado y asi poder elegir el modo de juego. El cual se sigue jugando en el loop con las mismas funciones, pero estas cambian dependiendo del modo de juego establecido.<\/p>\n\n\n\n<p>Crear un segundo modo fue f\u00e1cil ya que el c\u00f3digo est\u00e1 organizado en m\u00f3dulos, lo que facilita la reutilizaci\u00f3n de c\u00f3digo  y permite una f\u00e1cil implementaci\u00f3n de nuevas funcionalidades.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"LedControl.h\"\n#include \"pitches.h\"\n#include &lt;LiquidCrystal.h&gt;\n\nLedControl lc = LedControl(13, 11, 12, 1);\n\/\/ Definir los pines de conexi\u00f3n de la pantalla LCD\nconst int rs = 9, en = 7, d4 = 6, d5 = 5, d6 = 4, d7 = 3;\nLiquidCrystal lcd(rs, en, d4, d5, d6, d7);\n\nconst int boton = 2;\nint joy_Pin1 = A0;\nint joy_Pin2 = A1;\nconst int BUZZER = 8;\n\nint eje_x;\nint eje_y;\nint tipo_juego;\nbool come = false;\nString direccion;\nint serpiente_X&#91;36];  \/\/ son 36 las posibles posiciones en pantalla para el eje x\nint serpiente_Y&#91;36];  \/\/ son 36 las posibles posiciones en pantalla para el eje y\nint longitudSerpiente;\nint comida_X;\nint comida_Y;\nboolean fin = true;\nint velocidad;\nbool f&#91;8]&#91;8] = {\n  { 1, 1, 0, 0, 0, 0, 0, 0 },\n  { 1, 1, 0, 1, 1, 0, 0, 0 },\n  { 1, 1, 0, 1, 1, 0, 0, 0 },\n  { 1, 1, 0, 1, 1, 0, 0, 0 },\n  { 1, 1, 0, 1, 1, 0, 0, 0 },\n  { 1, 1, 0, 1, 1, 0, 0, 0 },\n  { 1, 1, 1, 1, 1, 1, 1, 1 },\n  { 1, 1, 1, 1, 1, 1, 1, 1 }\n};\n\n\nint melodia&#91;] = { NOTE_C4, NOTE_E4, NOTE_G4 };\nint duracion&#91;] = { 250, 250, 500 };\n\nvoid setup() {\n  Serial.begin(9600);\n\n  lc.shutdown(0, false);\n  lc.setIntensity(0, 5);\n  lc.clearDisplay(0);  \/\/ limpiar la matriz\n  lcd.begin(16, 2);    \/\/ Inicializa la pantalla LCD con 16 columnas y 2 filas\n  lcd.clear();         \/\/ Limpia la pantalla LCD\n}\n\n\nvoid loop() {\n  if (fin) {\n    lcd.clear();\n    lcd.print(\"1. Facil\");\n    lcd.setCursor(0, 2);\n    lcd.print(\"2. Dificil\");\n    int opcion = elegir_juego();\n    lcd.clear();\n    velocidad = 300;\n    come = false;\n    if (opcion == 1) {\n      lcd.print(\"Modo facil\");\n      lcd.setCursor(0, 2);\n      lcd.print(\"Score=1\");\n      tipo_juego = 1;\n      comenzar_juego();\n    } else if (opcion == 2) {\n      lcd.print(\"Modo dificil\");\n      lcd.setCursor(0, 2);\n      lcd.print(\"Score=1\");\n      tipo_juego = 2;\n      comenzar_juego();\n    }\n    fin = false;\n  }\n  lc.clearDisplay(0);\n  eje_x = analogRead(joy_Pin1);\n  eje_y = analogRead(joy_Pin2);\n  \/\/ en que direcci\u00f3n nos movemos?\n  if (eje_y &gt;= 0 &amp;&amp; eje_y &lt; 420) {\n    if (direccion != \"arriba\") direccion = \"abajo\";\n  }\n  if (eje_y &gt; 580 &amp;&amp; eje_y &lt;= 1023) {\n    if (direccion != \"abajo\") direccion = \"arriba\";\n  }\n  if (eje_x &gt;= 0 &amp;&amp; eje_x &lt; 420) {\n    if (direccion != \"izquierda\") direccion = \"derecha\";\n  }\n  if (eje_x &gt; 580 &amp;&amp; eje_x &lt;= 1023) {\n    if (direccion != \"derecha\") direccion = \"izquierda\";\n  }\n  mover_serpiente(direccion);\n  dibujar_serpiente();\n  comprobar_comida();\n  comprobar_choque();  \/\/ comprueba si choca consigo mismo\n  delay(velocidad);\n\n}\n\nvoid comenzar_juego() {\n  comida_X = random(0, 8);\n  comida_Y = random(0, 8);\n  longitudSerpiente = 1;\n  direccion = \"arriba\";\n}\n\nvoid mover_serpiente(String dire) {\n  for (int i = longitudSerpiente - 1; i &gt; 0; i--) {\n    serpiente_X&#91;i] = serpiente_X&#91;i - 1];\n    serpiente_Y&#91;i] = serpiente_Y&#91;i - 1];\n  }\n\n  if (dire == \"arriba\") {\n    if (serpiente_Y&#91;0] == 0) {\n      serpiente_Y&#91;0] = 7;\n    } else {\n      serpiente_Y&#91;0]--;\n    }\n  } else if (dire == \"abajo\") {\n    if (serpiente_Y&#91;0] == 7) {\n      serpiente_Y&#91;0] = 0;\n    } else {\n      serpiente_Y&#91;0]++;\n    }\n  } else if (dire == \"izquierda\") {\n    if (serpiente_X&#91;0] == 0) {\n      serpiente_X&#91;0] = 7;\n    } else {\n      serpiente_X&#91;0]--;\n    }\n  } else if (dire == \"derecha\") {\n    if (serpiente_X&#91;0] == 7) {\n      serpiente_X&#91;0] = 0;\n    } else {\n      serpiente_X&#91;0]++;\n    }\n  }\n}\n\nvoid dibujar_serpiente() {\n  for (int i = 0; i &lt; longitudSerpiente; i++) {\n    if (come == false || tipo_juego != 2 || longitudSerpiente - 1 != i) {\n      lc.setLed(0, serpiente_Y&#91;i], serpiente_X&#91;i], true);  \/\/ (n\u00ba dispositivo, fila, columna, valor)\n    } else {\n      come = false;\n    }\n  }\n}\n\nvoid comprobar_comida() {\n  if (serpiente_X&#91;0] == comida_X &amp;&amp; serpiente_Y&#91;0] == comida_Y) {\n    \/\/ si coincide la cabeza de la serpiente con la comida, es que se la ha comido y crece un LED\n    if (tipo_juego == 1) {\n      longitudSerpiente++;\n    } else if (tipo_juego == 2) {\n      longitudSerpiente += 2;\n      come = true;\n      velocidad -= 10;\n    }\n    lcd.setCursor(6, 2);\n    lcd.print(longitudSerpiente);\n    playFoodEatenSong();\n    \/\/ nueva posicion\n    bool posicion = false;\n    while (!posicion) {\n      comida_X = random(0, 8);\n      comida_Y = random(0, 8);\n      posicion = colocarManzana(comida_X, comida_Y);\n    }\n  }\n  lc.setLed(0, comida_Y, comida_X, true);\n  delay(10);  \/\/ haremos que parpade\n  lc.setLed(0, comida_Y, comida_X, false);\n  delay(10);  \/\/ haremos que parpade\n}\n\nvoid comprobar_choque() {\n  for (int i = 1; i &lt; longitudSerpiente; i++) {\n    if (serpiente_X&#91;0] == serpiente_X&#91;i] &amp;&amp; serpiente_Y&#91;0] == serpiente_Y&#91;i]) {\n      fin = true;\n      lcd.setCursor(0, 0);\n      lcd.print(\"   GAME OVER   \");\n\n      mostrarF();\n      playGameOverSong();\n      delay(2000);\n      lc.clearDisplay(0);\n    }\n  }\n}\n\nvoid playGameOverSong() {\n  for (int i = 0; i &lt; sizeof(melodia) \/ sizeof(melodia&#91;0]); i++) {\n    tone(BUZZER, melodia&#91;i], duracion&#91;i]);\n    delay(duracion&#91;i]);\n    noTone(BUZZER);\n  }\n}\nvoid playFoodEatenSong() {\n  tone(BUZZER, 500, 100);\n}\n\nvoid mostrarF() {\n  for (int row = 0; row &lt; 8; row++) {\n    for (int col = 0; col &lt; 8; col++) {\n      if (f&#91;row]&#91;col]) {\n        lc.setLed(0, row, col, true);\n      } else {\n        lc.setLed(0, row, col, false);  \/\/ Apaga el LED\n      }\n      delay(50);  \/\/ Espera 50 milisegundos antes de avanzar al siguiente LED\n    }\n  }\n}\nint elegir_juego() {\n  while (true) {\n    eje_x = analogRead(joy_Pin1);\n    \/\/eje_y = analogRead(joy_Pin2);\n    if (eje_x &gt;= 0 &amp;&amp; eje_x &lt; 360) {\n      return 2;  \/\/ Si el joystick se mueve hacia arriba, selecciona el primer juego\n    }\n    if (eje_x &gt; 620 &amp;&amp; eje_x &lt;= 1023) {\n      return 1;  \/\/ Si el joystick se mueve hacia abajo, selecciona el segundo juego\n    }\n  }\n}\n\nbool colocarManzana(int x, int y) {\n  bool salida = true;\n  for (int i = 0; i &lt; longitudSerpiente; i++) {\n    if (serpiente_Y&#91;i] == y &amp;&amp; serpiente_X&#91;i] == x) {\n      salida = false;\n      break;\n    }\n  }\n  return salida;\n}\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CASOS DE USO<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Jugar al juego Snake: El principal caso de uso es permitir a los usuarios jugar al juego Snake en una matriz LED 8&#215;8 controlada por Arduino. Los usuarios pueden mover la serpiente utilizando un joystick y tratar de comer la comida para aumentar su puntuaci\u00f3n. El c\u00f3digo se encarga de controlar la l\u00f3gica del juego, como el movimiento de la serpiente, la detecci\u00f3n de colisiones y la actualizaci\u00f3n de la matriz LED.<\/li>\n\n\n\n<li>Selecci\u00f3n del modo de juego: El c\u00f3digo incluye un men\u00fa en la pantalla LCD que permite a los usuarios seleccionar el modo de juego (f\u00e1cil o dif\u00edcil) utilizando el joystick. Esto proporciona opciones diferentes en t\u00e9rminos de velocidad y dificultad del juego, lo que permite a los usuarios ajustar su experiencia de juego seg\u00fan sus preferencias.<\/li>\n\n\n\n<li>Generaci\u00f3n aleatoria de comida: El c\u00f3digo se encarga de generar aleatoriamente la posici\u00f3n de la comida en la matriz LED. Esto asegura que la comida aparezca en diferentes ubicaciones cada vez que se juega el juego, lo que a\u00f1ade variabilidad y desaf\u00edo al juego.<\/li>\n\n\n\n<li>Efectos de sonido: El c\u00f3digo utiliza un buzzer para reproducir efectos de sonido, como la reproducci\u00f3n de una melod\u00eda cuando la serpiente come la comida y la reproducci\u00f3n de un sonido de juego terminado cuando la serpiente choca consigo misma. Esto a\u00f1ade elementos auditivos al juego y mejora la experiencia del usuario.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">PROBLEMAS Y SOLUCIONES<\/h2>\n\n\n\n<p>A lo largo de todo el proyecto hemos encontrado varios problemas, algunos de los mas importantes son:<\/p>\n\n\n\n<p><strong>Crear la parte software debido a la dificultad del algoritmo<\/strong><\/p>\n\n\n\n<p>Crear el c\u00f3digo del programa no fue tarea f\u00e1cil ya que el algoritmo no era sencillo, as\u00ed que tuvimos que dedicar m\u00e1s tiempo al c\u00f3digo del programa. Puede ser una soluci\u00f3n v\u00e1lida para abordar la dificultad del algoritmo en un problema de software. Sin embargo, es importante tener en cuenta que no se puede dejar de lado la parte hardware del proyecto.<\/p>\n\n\n\n<p><strong>Distinguir la manzana de la serpiente<\/strong><\/p>\n\n\n\n<p>Al principio cuando hac\u00edamos partidas muy largas para comprobar que el juego funcionaba bien nos dimos cuanta que la manzana es muy poco diferenciable de la serpiente ya que el \u00fanico color de la pantalla de LEDs es el rojo. Una posible soluci\u00f3n fue cambiar a una pantalla RGB, pero decidimos hacer parpadear la manzana de tal manera que fuese f\u00e1cil de ver y de diferenciar con la serpiente.<\/p>\n\n\n\n<p><strong>Conectar la matriz de LEDs junto con la pantalla LCD<\/strong><\/p>\n\n\n\n<p>En nuestro mapa de conexiones inicial figuraba una resistencia en el voltaje de contraste de la pantalla LCD y en la saturaci\u00f3n LED de la misma. Pero vimos que la potencia que le llegaba era muy baja y se ve\u00eda muy mal. Barajamos la posibilidad de a\u00f1adir una pila de 9V al circuito, pero tendr\u00edamos que volver a medir y ver donde poner mas resistencias, era demasiado engorroso. Finalmente quitamos las resistencias y comprobamos en simulaciones web como TinkerCAD que la pantalla LCD no se quemaba.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">POSIBLES MEJORAS<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Utilizar matriz de Leds RGB: al utilizar una matriz de Leds RGB, se pueden crear efectos visuales en el juego Snake, como la animaci\u00f3n de colores o la iluminaci\u00f3n de diferentes \u00e1reas de la matriz para resaltar diferentes elementos del juego.<\/li>\n\n\n\n<li>Incluir m\u00e1s minijuegos: incluir m\u00e1s minijuegos en el proyecto de Arduino del juego Snake puede aumentar la diversi\u00f3n y el inter\u00e9s del usuario en el juego.<\/li>\n\n\n\n<li>M\u00fasica de fondo mientras juegas: agregar m\u00fasica de fondo al juego puede ayudar a crear una ambiente m\u00e1s emocionante y entretenido mientras se juega. La m\u00fasica tambi\u00e9n puede incrementar el inter\u00e9s y atenci\u00f3n de los usuarios.<\/li>\n\n\n\n<li>Agregar funcionalidad de pausa: agregar una funci\u00f3n de pausa al juego permite al jugador detener el juego temporalmente y reanudarlo m\u00e1s tarde sin tener que comenzar desde cero. Esto puede ser \u00fatil si el jugador necesita tomar un descanso o si tiene que hacer otra cosa pero no quiere abandonar el juego por completo.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Video Explicativo<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Video Explicativo\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/v7pFJ6pj02M?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Proyecto Final<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Proyecto Final\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/U3NPlkiL3Ac?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>INTRODUCCI\u00d3N, IDEAS Y OBJETIVOS El proyecto que hemos desarrollado utilizando Arduino se trata del videojuego cl\u00e1sico conocido como \u00abSnake\u00bb, implementado con una matriz LED 8&#215;8, un joystick, una pantalla LCD y un zumbador. El&#46;&#46;&#46;<\/p>\n","protected":false},"author":8,"featured_media":6937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6709","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SNAKE CON ARDUINO - Proyectos con Arduino.<\/title>\n<meta name=\"description\" content=\"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SNAKE CON ARDUINO - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-08T20:20:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-09T06:52:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png\" \/>\n\t<meta property=\"og:image:width\" content=\"566\" \/>\n\t<meta property=\"og:image:height\" content=\"216\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gdhwsw2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"gdhwsw2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/\"},\"author\":{\"name\":\"gdhwsw2\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\"},\"headline\":\"SNAKE CON ARDUINO\",\"datePublished\":\"2023-05-08T20:20:38+00:00\",\"dateModified\":\"2023-05-09T06:52:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/\"},\"wordCount\":1275,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/image-29.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/\",\"name\":\"SNAKE CON ARDUINO - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/image-29.png\",\"datePublished\":\"2023-05-08T20:20:38+00:00\",\"dateModified\":\"2023-05-09T06:52:46+00:00\",\"description\":\"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/image-29.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/image-29.png\",\"width\":566,\"height\":216},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/snake\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SNAKE CON ARDUINO\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\",\"name\":\"gdhwsw2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"caption\":\"gdhwsw2\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/gdhwsw2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SNAKE CON ARDUINO - Proyectos con Arduino.","description":"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.","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:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/","og_locale":"es_ES","og_type":"article","og_title":"SNAKE CON ARDUINO - Proyectos con Arduino.","og_description":"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2023-05-08T20:20:38+00:00","article_modified_time":"2023-05-09T06:52:46+00:00","og_image":[{"width":566,"height":216,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png","type":"image\/png"}],"author":"gdhwsw2","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"gdhwsw2","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/"},"author":{"name":"gdhwsw2","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44"},"headline":"SNAKE CON ARDUINO","datePublished":"2023-05-08T20:20:38+00:00","dateModified":"2023-05-09T06:52:46+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/"},"wordCount":1275,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/","name":"SNAKE CON ARDUINO - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png","datePublished":"2023-05-08T20:20:38+00:00","dateModified":"2023-05-09T06:52:46+00:00","description":"Videojuego snake creado con Arduino utilizando una matriz LED 8x8, un lcd, un zumbador y un joystick.","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/image-29.png","width":566,"height":216},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/snake\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"SNAKE CON ARDUINO"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44","name":"gdhwsw2","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","caption":"gdhwsw2"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/gdhwsw2\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=6709"}],"version-history":[{"count":20,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6709\/revisions"}],"predecessor-version":[{"id":7050,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/6709\/revisions\/7050"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/6937"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=6709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=6709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=6709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}