{"id":5690,"date":"2022-05-13T18:25:56","date_gmt":"2022-05-13T16:25:56","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=5690"},"modified":"2022-05-13T19:22:15","modified_gmt":"2022-05-13T17:22:15","slug":"pong","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/","title":{"rendered":"PONG"},"content":{"rendered":"\n<p>Ruben Martinez y Miguel Morales. Grupo 6<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n <\/h2>\n\n\n\n<p>Este proyecto esta basado en el cl\u00e1sico juego del PONG, creado en el a\u00f1o 1972 por la empresa Atari, fue el primer videojuego de \u00e9xito comercial. Es este hecho es por lo que nos decantamos a realizar un proyecto que no solo es historia dentro del mundo de la inform\u00e1tica, sino que adem\u00e1s quer\u00edamos realizar una practica que fuera f\u00e1cil de usar, portable y que se pudiera jugar con amigos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\" alt=\"\" width=\"550\" height=\"378\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<p>Nuestro proyecto se basa en cinco componentes: pulsadores, cables, protoboard, display y Arduino. La implementaci\u00f3n consiste en cinco botones los cuales sus patas derechas van conectadas a tierra, mientras que las de la izquierda se conectan a los pines digitales del 2 al 6. Si nos fijamos en la pantalla, podemos observar que tiene un modulo de conexi\u00f3n I2C, lo que nos simplific\u00f3 mucho las conexiones. Podemos ver que la entrada VCC del display se conecta a la salida de 5V del arduino y la del GND a la toma de tierra del arduino. Tambien vemos que la se\u00f1al de datos y la se\u00f1al de reloj se conectan a las entradas analogicas A5 y A4 respectivamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.postimg.cc\/KYBxchbX\/Whats-App-Image-2022-05-13-at-6-42-10-PM.jpg\" alt=\"\" width=\"677\" height=\"530\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<p>La explicaci\u00f3n del software se realiza en el video explicativo que se muestra al final del c\u00f3digo. No obstante, hemos a\u00f1adido una serie de comentarios para que la comprensi\u00f3n del c\u00f3digo sea lo mas sencillo posible<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\n  Miguel Morales y Ruben Martinez:\n\n  PONG en Arduino\n*\/\n\n#include &lt;Wire.h&gt;\n#include &lt;Adafruit_SH110X.h&gt;\n#include &lt;Adafruit_GFX.h&gt;\n\n#define i2c_Address 0x3c\n#define NEGRO SH110X_BLACK\n#define BLANCO SH110X_WHITE\n\n#define BotonSubirIzq 2\n#define BotonBajarIzq 3\n#define BotonSubirDer 4\n#define BotonBajarDer 5\n#define BotonReset 6\n\nconst unsigned long VelocidadPala = 20;\nconst unsigned long VelocidadBola = 1;\nconst uint8_t LongitudPala = 13;\nbool resetBola = false;\nint puntuacionJDer = 0;\nint puntuacionJIzq = 0;\nint PuntuacionMaxima = 5;\n\n#define AnchoPantalla 128\n#define AltoPantalla 64\n\n\n#define OLED_RESET 4\nAdafruit_SH1106G display = Adafruit_SH1106G (AnchoPantalla, AltoPantalla, &amp;Wire, OLED_RESET);\n\n#define anchoLogo 84\n#define alturaLogo 52\n\n\/*  definimos el mapa de bits del logo de la urjc *\/\nconst unsigned char PROGMEM logo&#091;] = {\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x01, 0xf1, 0xf3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xf3, 0xe0,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfb, 0xf3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x01, 0xf1, 0xf3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1,\n  0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,\n  0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03,\n  0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8,\n  0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n  0xf8, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xf0, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x03, 0xf8, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x0f, 0xf0, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x01, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xf0,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf3, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x7f, 0xe3, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n};\n\n\nvoid drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);\n\nvoid DibujarLineasCampo();\nvoid DibujarMarcador();\n\nuint8_t Bola_X = 64, Bola_Y = 32;\nuint8_t DireccionBola_X = 1, DireccionBola_Y = 1;\nunsigned long ActualizarBola;\n\nunsigned long ActualizarPala;\nconst uint8_t JugadorDer_X = 12;\nuint8_t JugadorDer_Y = 16;\n\nconst uint8_t JugadorIzq_X = 115;\nuint8_t JugadorIzq_Y = 16;\n\nvoid setup() {\n  display.begin(i2c_Address, true);\n  display.clearDisplay(); \n  display.setTextSize(1);\n  display.setTextColor(BLANCO);\n  display.setCursor(0, 0);\n  display.println(\"Ruben y Miguel\");\/*  Ponemos nuestros nombres en la parte superior *\/\n  display.display();\n\n  display.drawLine(0, 10, 128, 10, BLANCO); \/*  dibujamos una linea separatoria entre el logo y nuestros nombres *\/\n  display.display();\n\n  display.drawBitmap((display.width() - anchoLogo) \/ 2, ((display.height() - alturaLogo) \/ 2) + 7, logo, anchoLogo, alturaLogo, BLANCO); \/* pintamos el logo *\/\n  display.display();\n\n\/*  definimos los componentes *\/\n  unsigned long InicioPartida = millis();\n  pinMode(BotonSubirIzq, INPUT);\n  pinMode(BotonBajarIzq, INPUT);\n  pinMode(BotonReset, INPUT_PULLUP);\n  digitalWrite(BotonSubirIzq, 1);\n  digitalWrite(BotonBajarIzq, 1);\n  pinMode(BotonSubirDer, INPUT);\n  pinMode(BotonBajarDer, INPUT);\n  digitalWrite(BotonSubirDer, 1);\n  digitalWrite(BotonBajarDer, 1);\n\n  \/*  dibujamos las lineas del campo y el marcador despues de 2s *\/\n  display.clearDisplay();\n  DibujarLineasCampo();\n  DibujarMarcador();\n  while (millis() - InicioPartida &lt; 2000);\n  display.display();\n\n  ActualizarBola = millis();\n  ActualizarPala = ActualizarBola;\n}\n\nvoid loop() {\n  bool update = false;\n  unsigned long tiempo = millis();\n\n  static bool BotonSubirIzqPulsado = false;\n  static bool BotonBajarIzqPulsado = false;\n  static bool BotonSubirDerPulsado = false;\n  static bool BotonBajarDerPulsado = false;\n  if (digitalRead(BotonReset) == LOW) {\n    FinPartido();\n  }\n  if (resetBola)\n  {\n    if (puntuacionJDer == PuntuacionMaxima || puntuacionJIzq == PuntuacionMaxima)\n    {\n      FinPartido();\n    }\n    else {\n      display.fillScreen(NEGRO);\n      DibujarMarcador();\n      DibujarLineasCampo();\n      randomSeed(analogRead(0)); \/*  Establecemos la semilla para generar aleatorios y a continuacion generamos la bola en un punto y direccion de movimiento x,y aleatorio respecto al tama\u00f1o de la pantalla *\/\n      Bola_X = random(25, 70);\n      Bola_Y = random(5, 60);\n      do\n      {\n        DireccionBola_X = random(-1, 2);\n      } while (DireccionBola_X == 0);\n\n      do\n      {\n        DireccionBola_Y = random(-1, 2);\n      } while (DireccionBola_Y == 0);\n\n      resetBola = false;\n    }\n  }\n\n  BotonSubirIzqPulsado |= (digitalRead(BotonSubirIzq) == LOW);\n  BotonBajarIzqPulsado |= (digitalRead(BotonBajarIzq) == LOW);\n  BotonSubirDerPulsado |= (digitalRead(BotonSubirDer) == LOW);\n  BotonBajarDerPulsado |= (digitalRead(BotonBajarDer) == LOW);\n\n  if (tiempo &gt; ActualizarBola) {\n    uint8_t Nueva_X = Bola_X + DireccionBola_X;\n    uint8_t Nueva_Y = Bola_Y + DireccionBola_Y;\n\n    \/\/ Comprobamos que se ha hecho un punto\n    if (Nueva_X == 0 || Nueva_X == 127) {\n\n      if (Nueva_X == 0) {\n        puntuacionJDer += 1;\n        display.fillScreen(NEGRO);\n        resetBola = true;\n\n      }\n      else if (Nueva_X == 127) {\n        puntuacionJIzq += 1;\n        display.fillScreen(NEGRO);\n        resetBola = true;\n      }\n      DireccionBola_X = -DireccionBola_X;\n      Nueva_X += DireccionBola_X + DireccionBola_X;\n    }\n\n    \/\/ Golpeo en las paredes horizontales\n    if (Nueva_Y == 0 || Nueva_Y == 63) {\n      DireccionBola_Y = -DireccionBola_Y;\n      Nueva_Y += DireccionBola_Y; \/\/Repintamos de blanco las paredes\n    }\n\n    \/\/ Golpeo en la pala jugador derecha\n    if (Nueva_X == JugadorDer_X &amp;&amp; Nueva_Y &gt;= JugadorDer_Y &amp;&amp; Nueva_Y &lt;= JugadorDer_Y + LongitudPala) {\n      DireccionBola_X = -DireccionBola_X;\n      Nueva_X += DireccionBola_X; \/\/Repintamos de blanco las paredes\n    }\n\n    \/\/ Golpeo en la Pala jugador izquierda\n    if (Nueva_X == JugadorIzq_X\n        &amp;&amp; Nueva_Y &gt;= JugadorIzq_Y\n        &amp;&amp; Nueva_Y &lt;= JugadorIzq_Y + LongitudPala)\n    {\n      DireccionBola_X = -DireccionBola_X;\n      Nueva_X += DireccionBola_X; \/\/Repintamos de blanco las paredes\n    }\n\n    display.drawPixel(Bola_X, Bola_Y, NEGRO); \/*  borramos (pintamos a negro) por donde ha ido pasando la bola *\/\n    display.drawPixel(Nueva_X, Nueva_Y, BLANCO); \/*  y pintamos de blanco el punto en el que se encuentra actualmente *\/\n    Bola_X = Nueva_X;\n    Bola_Y = Nueva_Y;\n\n    ActualizarBola += VelocidadBola;\n\n    update = true;\n  }\n\n  update = true;\n\n  if (tiempo &gt; ActualizarPala) {\n    ActualizarPala += VelocidadPala; \/\/Definimos la velocidad de movimiento de la pala\n\n    \/\/ pala Jugador Derecha\n    display.drawFastVLine(JugadorDer_X, JugadorDer_Y, LongitudPala, NEGRO); \/\/PINTAMOS DE NEGRO DESPUES DE MOVERNOS PARA ASI BORRAR EL RECORRIDO\n    const uint8_t CentroPala = LongitudPala \/ 2;\n    if (BotonSubirDerPulsado) {\n      JugadorDer_Y -= 1;\n    }\n    if (BotonBajarDerPulsado) {\n      JugadorDer_Y += 1;\n    }\n    \/*  definimos los limites de la pala para no salirnos del eje Y *\/\n    if (JugadorDer_Y &lt; 1) JugadorDer_Y = 1; \n    if (JugadorDer_Y + LongitudPala &gt; 63) JugadorDer_Y = 63 - LongitudPala;\n    display.drawFastVLine(JugadorDer_X, JugadorDer_Y, LongitudPala, BLANCO);\n    BotonSubirDerPulsado = BotonBajarDerPulsado = false;\n\n    \/\/\/ Pala Jugador Izquierda\n    display.drawFastVLine(JugadorIzq_X, JugadorIzq_Y, LongitudPala, NEGRO);\n    if (BotonSubirIzqPulsado) {\n      JugadorIzq_Y -= 1;\n    }\n    if (BotonBajarIzqPulsado) {\n      JugadorIzq_Y += 1;\n    }\n    BotonSubirIzqPulsado = BotonBajarIzqPulsado = false;\n    if (JugadorIzq_Y &lt; 1) JugadorIzq_Y = 1;\n    if (JugadorIzq_Y + LongitudPala &gt; 63) JugadorIzq_Y = 63 - LongitudPala;\n    display.drawFastVLine(JugadorIzq_X, JugadorIzq_Y, LongitudPala, BLANCO);\n  }\n  if (update) {\n    display.display();\n  }\n}\n\nvoid DibujarLineasCampo() {\n  display.drawRect(0, 0, 128, 64, BLANCO);\n}\nvoid DibujarMarcador() {\n  display.setTextSize(1);\n  display.setTextColor(BLANCO);\n  display.setCursor(50, 5);\n  display.println(puntuacionJIzq);\n  display.setCursor(60, 5);\n  display.println('-');\n  display.setCursor(70, 5);\n  display.println(puntuacionJDer);\n}\n\nvoid FinPartido() {\n  display.fillScreen(NEGRO);\n  if (puntuacionJDer &gt; puntuacionJIzq)\n  {\n    display.setCursor(0, 4);\n    display.setTextColor(BLANCO);\n    display.setTextSize(2);\n    display.print(\"Jugador   Derecha   Gana\");\n  } else if (puntuacionJIzq &gt; puntuacionJDer)\n  {\n    display.setCursor(0, 4);\n    display.setTextColor(BLANCO);\n    display.setTextSize(2);\n    display.print(\"Jugador   Izquierda Gana\");\n\n  }\n  else {\n    display.setCursor(30, 4);\n    display.setTextColor(BLANCO);\n    display.setTextSize(2);\n    display.print(\"EMPATE\");\n  }\n  delay(200);\n  display.display();\n  delay(2000);\n  puntuacionJIzq = puntuacionJDer = 0;\n\n  unsigned long InicioPartida = millis();\n  while (millis() - InicioPartida &lt; 2000);\n  ActualizarBola = millis();\n  ActualizarPala = ActualizarBola;\n  resetBola = true;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00eddeo explicativo del software<\/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=\"PONG (proyecto arduino)\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/XjGEUDaXV0A?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>Ruben Martinez y Miguel Morales. Grupo 6 Introducci\u00f3n Este proyecto esta basado en el cl\u00e1sico juego del PONG, creado en el a\u00f1o 1972 por la empresa Atari, fue el primer videojuego de \u00e9xito comercial.&#46;&#46;&#46;<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5690","post","type-post","status-publish","format-standard","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>PONG - Proyectos con Arduino.<\/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:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PONG - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Ruben Martinez y Miguel Morales. Grupo 6 Introducci\u00f3n Este proyecto esta basado en el cl\u00e1sico juego del PONG, creado en el a\u00f1o 1972 por la empresa Atari, fue el primer videojuego de \u00e9xito comercial.&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-13T16:25:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-13T17:22:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 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\\\/pong\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"PONG\",\"datePublished\":\"2022-05-13T16:25:56+00:00\",\"dateModified\":\"2022-05-13T17:22:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/\"},\"wordCount\":256,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i.postimg.cc\\\/SxwmpNw7\\\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/\",\"name\":\"PONG - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i.postimg.cc\\\/SxwmpNw7\\\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\",\"datePublished\":\"2022-05-13T16:25:56+00:00\",\"dateModified\":\"2022-05-13T17:22:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i.postimg.cc\\\/SxwmpNw7\\\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\",\"contentUrl\":\"https:\\\/\\\/i.postimg.cc\\\/SxwmpNw7\\\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/pong\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PONG\"}]},{\"@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\":\"\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PONG - Proyectos con Arduino.","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\/pong\/","og_locale":"es_ES","og_type":"article","og_title":"PONG - Proyectos con Arduino.","og_description":"Ruben Martinez y Miguel Morales. Grupo 6 Introducci\u00f3n Este proyecto esta basado en el cl\u00e1sico juego del PONG, creado en el a\u00f1o 1972 por la empresa Atari, fue el primer videojuego de \u00e9xito comercial.&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2022-05-13T16:25:56+00:00","article_modified_time":"2022-05-13T17:22:15+00:00","og_image":[{"url":"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/"},"author":{"name":"","@id":""},"headline":"PONG","datePublished":"2022-05-13T16:25:56+00:00","dateModified":"2022-05-13T17:22:15+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/"},"wordCount":256,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#primaryimage"},"thumbnailUrl":"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/","name":"PONG - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#primaryimage"},"thumbnailUrl":"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg","datePublished":"2022-05-13T16:25:56+00:00","dateModified":"2022-05-13T17:22:15+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#primaryimage","url":"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg","contentUrl":"https:\/\/i.postimg.cc\/SxwmpNw7\/Whats-App-Image-2022-05-13-at-6-42-10-PM-1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/pong\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"PONG"}]},{"@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":"","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5690","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\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=5690"}],"version-history":[{"count":13,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5690\/revisions"}],"predecessor-version":[{"id":5722,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5690\/revisions\/5722"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=5690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=5690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=5690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}