{"id":4420,"date":"2018-02-03T17:01:25","date_gmt":"2018-02-03T16:01:25","guid":{"rendered":"https:\/\/www.diarioelectronicohoy.com\/blog\/?p=4420"},"modified":"2022-04-01T01:32:02","modified_gmt":"2022-03-31T23:32:02","slug":"pantalla-oled-0-96","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/pantalla-oled-0-96","title":{"rendered":"Pantalla OLED 0.96"},"content":{"rendered":"<h5 style=\"text-align: center;\">TUTORIAL CON ARDUINO Y NODEMCU12.<\/h5>\n<h3>PANTALLA I2C OLED 0.96<\/h3>\n<p style=\"text-align: justify;\">La pantalla OLED monocrom\u00e1tica de 0,96 pulgadas, en este tutorial, mostraremos c\u00f3mo conectar y probar este m\u00f3dulo de visualizaci\u00f3n OLED I2C de 0.96\u2033 con un Arduino. La pantalla se conecta a Arduino con solo cuatro cables, debido a que utiliza el bus I2C, esta interfaz a veces se denomina TWI (interfaz de dos hilos).<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/pantalla-oled-0-96\/bty-6\" rel=\"attachment wp-att-5568\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5568 alignnone\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-300x267.jpg\" alt=\"\" width=\"153\" height=\"136\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-300x267.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-1024x913.jpg 1024w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-768x685.jpg 768w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-1536x1370.jpg 1536w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096-820x731.jpg 820w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096.jpg 1910w\" sizes=\"auto, (max-width: 153px) 100vw, 153px\" \/><\/a><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/display-oled-0-96-i2c\/bty-2\" target=\"_blank\" rel=\"attachment noopener wp-att-4422 noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4422\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096_rev310x308-300x298.jpg\" alt=\"pantalla_oled096_rev310x308-300x298.jpg\" width=\"138\" height=\"137\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096_rev310x308-300x298.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096_rev310x308-150x150.jpg 150w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/pantalla_oled096_rev310x308.jpg 310w\" sizes=\"auto, (max-width: 138px) 100vw, 138px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><span style=\"text-align: center; font-size: 16px;\">Fig. 1 Pantalla\u00a0OLED 0.96\u2033<\/span><\/p>\n<h3>INSTALAR LIBRER\u00cdAS OLED I\u00b2C PARA SSD1306<\/h3>\n<p style=\"text-align: justify;\">Disponemos de bibliotecas que nos facilitan el uso de la pantalla de inmediato para mostrar texto y gr\u00e1ficos, estas bibliotecas\u00a0deben instalarse\u00a0para comenzar a usar la pantalla. Descargue la biblioteca\u00a0<a href=\"https:\/\/github.com\/adafruit\/Adafruit_SSD1306\/archive\/master.zip\" target=\"\" rel=\"noopener noreferrer\">Adafruit_SSD1306<\/a>\u00a0y gu\u00e1rdela en su computadora es un archivo llamado Adafruit_SSD1306-master.zip (cambie el nombre de la carpeta Adafruit_SSD1306-master a Adafruit_SSD1306, elimine -master), en sistemas Windows esta carpeta generalmente se encuentra en\u00a0<strong>Documents \/ Arduino \/ libraries<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Ahora, descargue la biblioteca\u00a0<a href=\"https:\/\/github.com\/adafruit\/Adafruit-GFX-Library\/archive\/master.zip\" target=\"\" rel=\"noopener noreferrer\">Adafruit_GFX<\/a>, descomprima el archivo descargado en la carpeta de la biblioteca Arduino como ya hizo para el controlador anterior SSD1306 y cambie el nombre de la carpeta Adafruit-GFX-Library-master a Adafruit_GFX, debe quedar algo parecido a esto:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/pantalla-oled-0-96\/librerias\" rel=\"attachment wp-att-5572\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5572\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias.jpg\" alt=\"\" width=\"296\" height=\"109\" \/><\/a>Fig. 2 Librer\u00edas<\/p>\n<p style=\"text-align: justify;\">En el IDE de Arduino, busque las bibliotecas en el men\u00fa\u00a0<strong>Programa \/ Incluir Librer\u00eda<\/strong>\u00a0de la barra de men\u00fa superior, las nuevas bibliotecas se pueden encontrar en el men\u00fa desplegable.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5573\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5573\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas-281x300.jpg\" alt=\"\" width=\"281\" height=\"300\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas-281x300.jpg 281w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas-768x820.jpg 768w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas-820x876.jpg 820w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/librerias-incluidas.jpg 852w\" sizes=\"auto, (max-width: 281px) 100vw, 281px\" \/><\/a>Fig. 3\u00a0\u00a0Librer\u00edas incluidas.<\/p>\n<p style=\"text-align: justify;\">Para los que est\u00e1n descubriendo el Arduino IDE, necesitar\u00e1n agregar bibliotecas para ejecutar la pantalla OLED. Algunas bibliotecas est\u00e1n disponibles directamente desde el administrador de bibliotecas. Este es el caso, por ejemplo, con la biblioteca de Adafruit para el SSD1306. Desde el men\u00fa de boceto, vaya a\u00a0<i>Incluir biblioteca<\/i>\u00a0y luego\u00a0<i>Gestor de librer\u00edas<\/i>, vea la imagen que sigue.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-4684\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-4684\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias-300x169.jpg\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias-300x169.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias-768x433.jpg 768w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias-50x28.jpg 50w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/03\/gestor_librerias.jpg 786w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Fig. 4 Gestor de librer\u00edas.<\/p>\n<p style=\"text-align: justify;\">Adafruit proporciona un breve tutorial sobre el uso de su biblioteca GFX. El tutorial explica m\u00e1s sobre el sistema de coordenadas utilizado para pantallas y muestra c\u00f3mo dibujar primitivas gr\u00e1ficas, como l\u00edneas y c\u00edrculos.<\/p>\n<p style=\"text-align: justify;\">Otras librer\u00edas como las de\u00a0<a href=\"https:\/\/github.com\/sparkfun\/SparkFun_Micro_OLED_Arduino_Library\" target=\" \" rel=\"noopener noreferrer\">sparkfun<\/a>, est\u00e1n disponibles en GitHub, en ese caso, primero descargue la librer\u00eda pero no descomprima el archivo Zip, vaya a\u00a0<strong>Programa \/ Incluir librer\u00eda \/ A\u00f1adir librer\u00eda .ZIP<\/strong>\u00a0y elija el zip de la librer\u00eda descargada para importar.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib-zip.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5574\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5574\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib-zip-300x130.jpg\" alt=\"\" width=\"300\" height=\"130\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib-zip-300x130.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib-zip.jpg 724w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Fig. 5 A\u00f1adir librer\u00edas ZIP.<\/p>\n<p style=\"text-align: justify;\"><strong>Advertencia.<\/strong>\u00a0Es necesario incluir ambas bibliotecas en su proyecto. Para obtener algunos bytes valiosos, puede usar la biblioteca Sparkfun Micro_OLED descrita en el p\u00e1rrafo siguiente.<\/p>\n<h3>AJUSTAR EL CONTROLADOR SSD1306<\/h3>\n<p style=\"text-align: justify;\">Probablemente el controlador SSD1306, no viene ajustado para su pantalla OLED de forma predeterminada, por lo tanto, el tama\u00f1o de visualizaci\u00f3n deber\u00e1 cambiarse antes de usarse en caso contrario saltar\u00e1 un error #error (\u201cAltura incorrecta, corrija Adafruit_SSD1306.h!\u201d). Abra la carpeta y el archivo Adafruit_SSD1306.h con un editor de texto. Busque y comente la l\u00ednea #define SSD1306_128_32 y des-comente la l\u00ednea #define SSD1306_128_64, luego guarde el archivo.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib_adafruit_SSD1306.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5575\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5575\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib_adafruit_SSD1306-300x131.jpg\" alt=\"\" width=\"300\" height=\"131\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib_adafruit_SSD1306-300x131.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/lib_adafruit_SSD1306.jpg 629w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Fig. 6 Modificar librer\u00eda Adafruit_SSD1306.h<\/p>\n<p style=\"text-align: justify;\">Dos cuestiones antes de nada; si ten\u00edamos abierto el Arduino durante la instalaci\u00f3n de la biblioteca, ci\u00e9rrelo primero y luego rein\u00edcielo. Ahora, necesitamos averiguar la direcci\u00f3n i2c de la pantalla, para esto, usamos un r\u00e1pido esc\u00e1ner I2C como el que sigue.<\/p>\n<p>Esc\u00e1ner para direcciones I2C-bus.<\/p>\n<div id=\"crayon-5a75aa66f106d057037287-84\" class=\"crayon-line crayon-striped-line\"><\/div>\n<pre class=\"\">\/*\r\nEsc\u00e1ner I2C basado en el proyecto inicial de Nick Grammon\r\nhttp:\/\/playground.arduino.cc\/Main\/I2cScanner\r\nProjets DIY - Mars 2016 - http:\/\/www.projetsdiy.fr\r\n\/\/ --------------------------------------\r\n\/\/ i2c_scanner\r\n\/\/\r\n\/\/ Version 1\r\n\/\/ This program (or code that looks like it)\r\n\/\/ can be found in many places.\r\n\/\/ For example on the Arduino.cc forum.\r\n\/\/ The original author is not know.\r\n\/\/ Version 2, Juni 2012, Using Arduino 1.0.1\r\n\/\/ Adapted to be as simple as possible by Arduino.cc user Krodal\r\n\/\/ Version 3, Feb 26 2013\r\n\/\/ V3 by louarnold\r\n\/\/ Version 4, March 3, 2013, Using Arduino 1.0.3\r\n\/\/ by Arduino.cc user Krodal.\r\n\/\/ Changes by louarnold removed.\r\n\/\/ Las direcciones de escaneo cambiaron de 0 ... 127 a 1 ... 119,\r\n\/\/ seg\u00fan el esc\u00e1ner i2c de Nick Gammon\r\n\/\/ http:\/\/www.gammon.com.au\/forum\/?id=10896\r\n\/\/ Version 5, March 28, 2013\r\n\/\/ As version 4, but address scans now to 127.\r\n\/\/ A sensor seems to use address 120.\r\n\/\/ Version 6, November 27, 2015.\r\n\/\/ Added waiting for the Leonardo serial communication.\r\n\/\/\r\n\/\/ This sketch tests the standard 7-bit addresses\r\n\/\/ Devices with higher bit address might not be seen properly.\r\n*\/\r\n\u00a0\r\n#include \"Wire.h\"\r\n\u00a0\r\nvoid setup()\r\n{\r\nWire.begin();\r\n\u00a0\r\nSerial.begin(9600);\r\nwhile (!Serial); \/\/ Leonardo: wait for serial monitor\r\nSerial.println(\"\\nI2C Scanner\");\r\n}\r\n\u00a0\r\nvoid loop()\r\n{\r\nbyte error, address;\r\nint nDevices;\r\n\u00a0\r\nSerial.println(\"Scanning...\");\r\n\u00a0\r\nnDevices = 0;\r\nfor(address = 1; address &lt; 127; address++ )\r\n{\r\n\/\/ The i2c_scanner uses the return value of\r\n\/\/ the Write.endTransmisstion to see if\r\n\/\/ a device did acknowledge to the address.\r\nWire.beginTransmission(address);\r\nerror = Wire.endTransmission();\r\n\u00a0\r\nif (error == 0)\r\n{\r\nSerial.print(\"Dispositivo I2C encontrado en esta direcci\u00f3n 0x\");\r\nif (address&lt;16)\r\nSerial.print(\"0\");\r\nSerial.print(address,HEX);\r\nSerial.println(\" !\");\r\n\u00a0\r\nnDevices++;\r\n}\r\nelse if (error==4)\r\n{\r\nSerial.print(\"Error desconocido en esta direcci\u00f3n 0x\");\r\nif (address&lt;16)\r\nSerial.print(\"0\");\r\nSerial.println(address,HEX);\r\n}\r\n}\r\nif (nDevices == 0)\r\nSerial.println(\"No se encontr\u00f3 ning\u00fan dispositivo I2C\\n\");\r\nelse\r\nSerial.println(\"Fin\\n\");\r\n\u00a0\r\ndelay(5000); \/\/ wait 5 seconds for next scan\r\n}<\/pre>\n<p style=\"text-align: justify;\">Copie, pegue y cargue el c\u00f3digo en su Arduino, encienda su monitor serie. Si su pantalla est\u00e1 conectada, alimentada y funcionando, obtendr\u00e1 una direcci\u00f3n del esc\u00e1ner en el monitor de serie.<\/p>\n<p style=\"text-align: justify;\">El monitor serie nos mostrar\u00e1 la direcci\u00f3n del dispositivo. En mi caso la direcci\u00f3n encontrada es 0x3C, la cual tendremos que introducir en el boceto que vayamos a utilizar.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/escan-i2c.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5576\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5576\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/escan-i2c-255x300.jpg\" alt=\"\" width=\"255\" height=\"300\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/escan-i2c-255x300.jpg 255w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/escan-i2c.jpg 633w\" sizes=\"auto, (max-width: 255px) 100vw, 255px\" \/><\/a>Fig. 7 Direcci\u00f3n I2C.<\/p>\n<h3>BOCETO DE EJEMPLO.<\/h3>\n<p style=\"text-align: justify;\">Ahora que sabemos que direcci\u00f3n I2C nuestra pantalla, podremos abrir el boceto de ejemplo de la biblioteca ssd1306. Consulte el men\u00fa de ejemplos en Arduino y busque el boceto Adafruit SSD1306 \u2013 128\u00d764_i2c, como se muestra en la imagen. \u00c1bralo y cambie la direcci\u00f3n de pantalla a lo que le indic\u00f3 el esc\u00e1ner, en mi caso 0x3C.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/03\/calibrado_boceto.gif\" target=\"_blank\" rel=\"attachment noopener wp-att-5577\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5577\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/boceto_ejemplo-300x260.jpg\" alt=\"\" width=\"300\" height=\"260\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/boceto_ejemplo-300x260.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/boceto_ejemplo.jpg 754w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Fig. 8 Boceto ejemplo.<\/p>\n<p style=\"text-align: justify;\">Compile y cargue el boceto\u00a0<em>ssd1306_128x64_i2c.ino<\/em>\u00a0en su Arduino, espere un momento, y la pantalla deber\u00eda encenderse y mostrar algunos modos de visualizaci\u00f3n que vienen en el ejemplo. Si los cambios en el controlador y el boceto de ejemplo se realizaron correctamente y tiene conectada correctamente la pantalla OLED al Arduino, el boceto deber\u00eda comenzar a ejecutarse, mostrando varios gr\u00e1ficos y funciones de texto.<\/p>\n<div align=\"center\"><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/_VT7dYhhpGs\" width=\"460\" height=\"275\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\"><\/span><\/iframe><\/div>\n<p style=\"text-align: center;\">V\u00eddeo<\/p>\n<p style=\"text-align: justify;\">En el v\u00eddeo de la demostraci\u00f3n se aprecian diferentes gr\u00e1ficos y textos. Usted puede copiar y pegar partes del boceto para visualizar seg\u00fan sus necesidades.<\/p>\n<h3>FUNCIONES GR\u00c1FICAS CON LA PANTALLA<\/h3>\n<p style=\"text-align: justify;\">Si est\u00e1 interesado en las posibilidades que ofrece la librer\u00eda de Adafruit_SSD1306.cpp, le invito a que abra el archivo y revise las funciones que pone a nuestro alcance.<\/p>\n<p style=\"text-align: justify;\">Algunas funciones con la pantalla Adafruit_SSD1306 (OLED_RESET)<\/p>\n<ul>\n<li>monitor()<\/li>\n<li>clearDisplay ()<\/li>\n<li>invertDisplay (bool)<\/li>\n<li>Fonts Adafruit_GFX<\/li>\n<li>drawPixel (uint16_t x, uint16_t y, uint16_t color)<\/li>\n<li>drawLine (uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color)<\/li>\n<li>drawFastVLine (uint16_t x0, uint16_t y0, uint16_t length, uint16_t color)<\/li>\n<li>drawFastHLine (uin86_t x0, uin86_t y0, uint8_t length, uint16_t color);<\/li>\n<li>drawRect (uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color)<\/li>\n<li>fillRect (uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color)<\/li>\n<li>drawCircle (uint16_t x0, uint16_t y0, uint16_t r, uint16_t color)<\/li>\n<li>fillCircle (uint16_t x0, uint16_t y0, uint16_t r, uint16_t color)<\/li>\n<li>drawRoundRect (uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radio, uint16_t color)<\/li>\n<li>fillRoundRect (uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radio, uint16_t color)<\/li>\n<li>drawTriangle (uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)<\/li>\n<li>fillTriangle (uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color)<\/li>\n<li>drawChar (uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t tama\u00f1o)<\/li>\n<li>drawBitmap (int16_t x, int16_t y, uint8_t * mapa de bits, int16_t w, int16_t h, uint16_t color)<\/li>\n<li>fillScreen (uint16_t color);<\/li>\n<li>setRotation (rotaci\u00f3n uint8_t)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">El par\u00e1metro de color para establecer el color de visualizaci\u00f3n solo en las pantallas de color est\u00e1 disponible en todas las funciones de gr\u00e1ficos de la biblioteca GFX. La biblioteca Adafruit_GFX es utilizada por otras librer\u00edas dedicadas a cada microcontrolador de pantalla.<\/p>\n<p style=\"text-align: justify;\">Para mostrar un texto requiere un poco m\u00e1s de trabajo. Es necesario cambiar los par\u00e1metros de visualizaci\u00f3n par\u00e1metro por par\u00e1metro. Se puede olvidar de los acentos, no se gestionan en las fuentes disponibles.<\/p>\n<ul>\n<li>display.setTextSize(1); \u00a0\/\/ setTextSize es un factor de escala que permite acercar o alejar<\/li>\n<li>display.setTextColor(WHITE); \u00a0\/\/ El color del texto<\/li>\n<li>display.setCursor(0,0); \u00a0\/\/ Vamos a escribir en x=0, y=0<\/li>\n<li>display.println(\u201cHello, world!\u201d); \/\/ println como para escribir en el puerto serie<\/li>\n<li>display.setTextColor(BLACK, WHITE); \/\/ Revertimos los colores, el fondo se vuelve negro<\/li>\n<li>display.println(\u201cHello, world!\u201d); \/\/ Puedes cambiar sobre la marcha de Font (para eso debes declararlo como una biblioteca al comienzo del proyecto, por ejemplo\u00a0#include &lt;Fonts\/FreeMono9pt7b.h&gt;)<\/li>\n<li>display.setFont(&amp;FreeMono9pt7b);<\/li>\n<li>display.setTextColor(WHITE);<\/li>\n<li>display.println(\u201cHello, world!\u201d);<\/li>\n<li>display.setFont(); \u00a0 \u00a0\u00a0 \u00a0\/\/ Para volver a la fuente predeterminada<\/li>\n<\/ul>\n<h3>PROGRAMA PIXEL Y DEMO TEXTO.<\/h3>\n<p style=\"text-align: justify;\">Para dibujar un punto (pixel) en la pantalla tenemos que hacer referencia al llamado origen de coordenadas que en la pantalla OLED est\u00e1 en la esquina superior izquierda (0,0), con el eje\u00a0<strong>horizontal X<\/strong>\u00a0y el eje\u00a0<strong>vertical Y<\/strong>. Esto nos permitir\u00e1 situar los objetos que necesitemos en una posici\u00f3n concreta con las dimensiones deseadas.<\/p>\n<p style=\"text-align: justify;\">Para definir el color en pantallas monocromas, con 1 es activa y con 0 es inactiva, en estas pantallas OLED un pixel activo se ilumina y uno inactivo se oscurece que es el color de fondo en una pantalla inicializada.<\/p>\n<p style=\"text-align: justify;\">En las pantallas de color, estos se representan en base de 16 bits sin signo (65.536 colores diferentes, de 0x0000 a 0xFFFF) dependiendo de la capacidad de la pantalla con m\u00e1s o menos bits, aunque la librer\u00eda es para 16 bits.<\/p>\n<h3>FUNCIONES GR\u00c1FICAS, IM\u00c1GENES Y TEXTO<\/h3>\n<p style=\"text-align: justify;\">Estas son algunas funciones que nos sirven para las librer\u00edas SSD1306, SSD1331, Graphic VFD, PCD8544 y HX8340B.<\/p>\n<p style=\"text-align: justify;\"><strong>Puntos<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawPixel()<\/em>, dibuja un punto seg\u00fan las coordenadas y el color:\u00a0<em>display.drawPixel(17,11,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>L\u00edneas<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawLine()<\/em>, dibuja una l\u00ednea indicando las coordenadas de sus extremos y el color:\u00a0<em>display.drawLine(4,5,18,9,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>Tri\u00e1ngulos<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawTriangle()<\/em>, dibujar\u00e1 un tri\u00e1ngulo, indicando las coordenadas de sus tres v\u00e9rtices y el color:<em>display.drawTriangle(5,3,20,10,2,14,WHITE);\u00a0<\/em>. Para dibujar un tri\u00e1ngulo relleno, con la funci\u00f3n\u00a0<em>void fillTriangle( x0, y0, x1, y1, x2, y2, color)<\/em>, que dibuja un tri\u00e1ngulo relleno, indicando las coordenadas de sus tres v\u00e9rtices y color:\u00a0\u00a0<em>display.fillTriangle(5,3,20,10,2,14,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>Rect\u00e1ngulos<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawRect()<\/em>, dibuja un rect\u00e1ngulo, indicando las coordenadas de su esquina superior izquierda, anchura, altura y color:\u00a0<em>display.drawRect(5,3,14,12,WHITE);<\/em>. Para dibujar un rect\u00e1ngulo relleno con la funci\u00f3n\u00a0<em>void fillRect( x0, y0, ancho, alto, color)<\/em>, indicando las coordenadas de su esquina superior izquierda, anchura, altura y color.<\/p>\n<p style=\"text-align: justify;\"><strong>Rect\u00e1ngulos redondeados<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawRoundRect()<\/em>, dibuja un rect\u00e1ngulo redondeado, indicando las coordenadas de su esquina superior izquierda, anchura, altura, radio de redondeo y color:\u00a0\u00a0<em>display.drawRoundRect(2,1,17,14,WHITE);\u00a0<\/em>. Con la la funci\u00f3n\u00a0<em>void fillRoundRect()<\/em>, dibuja un rect\u00e1ngulo relleno redondeado, indicando las coordenadas de su esquina superior izquierda, anchura, altura, radio de redondeo y color:\u00a0<em>display.fillRoundRect(2,1,17,14,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>Circunferencias y C\u00edrculos<\/strong>\u2013 la funci\u00f3n\u00a0<em>void drawCircle()<\/em>, dibuja una circunferencia, indicando las coordenadas de su centro, radio y color:\u00a0<em>display.drawCircle(11,8,8,WHITE);<\/em>\u00a0. La funci\u00f3n\u00a0<em>void fillCircle()<\/em>, dibuja un c\u00edrculo, indicando las coordenadas de su centro, radio y color:\u00a0<em>display.fillCircle(11,8,8,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>Im\u00e1genes o Bitmaps<\/strong>\u2013 la funci\u00f3n void drawBitmap(), dibuja una imagen en la pantalla, indicando las coordenadas de su esquina superior derecha, nombre de la imagen, anchura y altura que debe ocupar en la pantalla y color (las im\u00e1genes, tendr\u00e1n un \u00fanico color):<\/p>\n<p style=\"text-align: justify;\"><em>\u00a0 \u00a0 \u00a0display.drawBitmap(0,0,Toro,128,64,WHITE);<\/em><\/p>\n<p style=\"text-align: justify;\">Para construir el bitmap (mapa de bits) de la imagen, nos serviremos de la ayuda de la aplicaci\u00f3n\u00a0<a href=\"http:\/\/javl.github.io\/image2cpp\/\" target=\"\" rel=\"noopener noreferrer\">IMAGE2CPP<\/a>. Con esta aplicaci\u00f3n podremos generar el c\u00f3digo para el array (lista de datos), que se almacene en la memoria Flash del procesador, mediante el modificador de variable PROGMEM, al utilizar la memoria Flash, guardamos la memoria SRAM para almacenar los datos de ejecuci\u00f3n del programa.<\/p>\n<p style=\"text-align: justify;\">Puede abrir el programa en la p\u00e1gina http:\/\/javl.github.io\/image2cpp\/. Seleccione la imagen de su ordenador y en \u2018configuraci\u00f3n de imagen\u2019, seleccione el tama\u00f1o seg\u00fan la pantalla utilizar, el fondo negro, en escala \u2018escala hasta ajustar, mantener proporciones\u2019 para que no se deforme, elija centrar horizontal y verticalmente, pruebe \u2018invertir los colores de la imagen\u2019 para obtener un mejor resultado. En la pre-visualizaci\u00f3n puede ver como quedar\u00e1 la imagen.<\/p>\n<p style=\"text-align: justify;\">S\u00f3lo queda \u2018A\u00f1adir c\u00f3digo de Arduino\u2019 para a\u00f1adir al array el modificador de la variable. Dele un nombre, elija \u2018Horizontal\u2019 para mostrar la imagen y por \u00faltimo generaremos el c\u00f3digo, es c\u00f3digo que obtenemos como resultado, para a\u00f1adir al programa y poder visualizar la imagen.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/image2cpp.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5578\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5578\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/image2cpp-210x300.jpg\" alt=\"\" width=\"210\" height=\"300\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/image2cpp-210x300.jpg 210w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/image2cpp.jpg 526w\" sizes=\"auto, (max-width: 210px) 100vw, 210px\" \/><\/a>Fig. 9 IMAGE2CPP<\/p>\n<p style=\"text-align: justify;\">Un detalle muy importante son (las dimensiones) la anchura y altura de la pantalla, esto lo podemos determinar con las funciones\u00a0<em>void width()<\/em>\u00a0y\u00a0<em>void height()<\/em>. El origen est\u00e1 en: 0,0 y el punto m\u00e1s lejano ser\u00e1\u00a0<em>anchura \u2013 1<\/em>\u00a0y\u00a0<em>altura \u2013 1<\/em>.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-590x510-1.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5579\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-5579 alignnone\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-590x510-1-300x259.jpg\" alt=\"\" width=\"300\" height=\"259\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-590x510-1-300x259.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-590x510-1.jpg 591w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5580\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-5580 alignnone\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-300x288.jpg\" alt=\"\" width=\"300\" height=\"288\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu-300x288.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/olednodemcu.jpg 555w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nFig. 10 Ensamblado OLED<\/p>\n<p style=\"text-align: justify;\">Como se aprecia en la imagen, la conexi\u00f3n b\u00e1sica de la pantalla dispone de cuatro puntos de conexi\u00f3n, dos para la alimentaci\u00f3n (Vcc y GND) y dos para el bus de datos I2C (SCL == D1 (GPIO 05) y SDA == D2 (GPIO 04)).<\/p>\n<p style=\"text-align: justify;\"><strong>Nota.<\/strong>\u00a0En las librer\u00edas de\u00a0Adafruit\u00a0los pines\u00a0elegidos\u00a0para el bus de datos I2C son:<\/p>\n<p style=\"padding-left: 30px;\"><strong>D1 == SCL (GPIO 05)<\/strong> y<br \/>\n<strong>D2 == SDA (GPIO 04).<\/strong><\/p>\n<p style=\"text-align: justify;\">No obstante, usted puede utilizar librer\u00edas con otros pines GPIOs, tan s\u00f3lo tiene que declararlos con la funci\u00f3n SSD1306 display() de la siguiente forma:<\/p>\n<p style=\"padding-left: 30px;\">\/\/ Inicialice la pantalla OLED usando la biblioteca Wire<br \/>\n\/\/ la direcci\u00f3n I2C \u00ab0x3C\u00bb se determin\u00f3 utilizando el boceto esc\u00e1ner I2C I2C_Scanner.ino<br \/>\n<strong>SSD1306 display(0x3c, D1, D2); \/\/ o SSD1306 display(0x3c, D3, D5);<\/strong><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/esp8266patillaje.gif\" target=\"_blank\" rel=\"attachment noopener wp-att-5581\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5581\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/esp8266patillaje-300x231.gif\" alt=\"\" width=\"300\" height=\"231\" \/><\/a>Fig. 11\u00a0 Pines del nodeMCU12<\/p>\n<p style=\"text-align: justify;\">Hay una relaci\u00f3n entre algunos de los pines NodeMCU y Arduino como se describe a continuaci\u00f3n:<\/p>\n<div style=\"text-align: justify;\" align=\"left\">\n<p><strong>\u00a0 \u00a0 \u00a0 \u00a0 Esp<\/strong> ==&gt; <strong>Arduino<\/strong><\/p>\n<pre class=\"\">D0   ==&gt; GPIO16\r\nD1   ==&gt; GPIO5\r\nD2   ==&gt; GPIO4\r\nD3   ==&gt; GPIO0\r\nD4   ==&gt; GPIO2\r\nD5   ==&gt; GPIO14\r\nD6   ==&gt; GPIO12\r\nD7   ==&gt; GPIO13\r\nD8   ==&gt; GPIO15\r\nD9   ==&gt; GPIO3\r\nD10  ==&gt; GPIO1\r\n<\/pre>\n<p style=\"text-align: justify;\">El siguiente boceto Arduino establece un p\u00edxel en cada esquina de la pantalla. A continuaci\u00f3n, se utiliza una funci\u00f3n para mostrar una l\u00ednea de texto en la pantalla, un programa de \u201cHola, mundo\u201d. Explicaci\u00f3n de c\u00f3mo funciona el programa.<\/p>\n<\/div>\n<div style=\"text-align: left;\" align=\"left\"><span style=\"color: #0000ff;\">C\u00f3digo demo pixels y texto.<\/span><\/div>\n<pre class=\"\">\/\/ Demo_pixels_texto.ino\r\n\/\/ Los pines de I2C para la pantalla oled, est\u00e1n definidos en\r\n\/\/ las librer\u00edas de Adafruit_SSD1306.h D1=&gt;GPIO5 y D2 =&gt;GPIO4\r\n\/\/\r\n\/\/ c\u00f3digo libre.\r\n \r\n#include \"Wire.h\"\r\n#include \"Adafruit_SSD1306.h\"\r\n#include \"Adafruit_GFX.h\"\r\n \r\n\/\/ Pantalla OLED con direcci\u00f3n TWI\r\n#define OLED_ADDR 0x3C\r\n \r\nAdafruit_SSD1306 display(-1); \/\/ -1 = no reset pin\r\n \r\nvoid setup () {\r\n\/\/ inicializa y borra la pantalla\r\ndisplay.begin (SSD1306_SWITCHCAPVCC, OLED_ADDR);\r\ndisplay.clearDisplay ();\r\ndisplay.display ();\r\n \r\n\/\/ muestra un pixel en cada esquina de la pantalla\r\ndisplay.drawPixel (0, 0, WHITE);\r\ndisplay.drawPixel (127, 0, WHITE);\r\ndisplay.drawPixel (0, 63, WHITE);\r\ndisplay.drawPixel (127, 63, WHITE);\r\n \r\n\/\/ muestra una l\u00ednea de texto\r\ndisplay.setTextSize (2);\r\ndisplay.setTextColor (WHITE);\r\ndisplay.setCursor (1,30);\r\ndisplay.print (\"Hola mundo\");\r\n \r\n\/\/ actualiza la pantalla con todos los gr\u00e1ficos anteriores\r\ndisplay.display ();\r\n}\r\n \r\nvoid loop () {\r\n\/\/ ponga su c\u00f3digo principal aqu\u00ed, para ejecutar repetidamente:\r\n \r\n}<\/pre>\n<p style=\"text-align: justify;\">La siguiente es una imagen del resultado de este c\u00f3digo, se aprecian los cuatro puntos en los extremos de la pantalla y el \u2018Hola mundo\u2019 a mitad de altura de la pantalla.<\/p>\n<p><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-scaled.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-5582\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-5582\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-300x225.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-1024x769.jpg 1024w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-768x576.jpg 768w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-1536x1153.jpg 1536w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-2048x1537.jpg 2048w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2018\/02\/demo_pixels_texto-820x615.jpg 820w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Fig. 12 Ensamblado.<\/p>\n<p style=\"text-align: justify;\">Una vez m\u00e1s, esta es una pr\u00e1ctica que le ayudar\u00e1 a aprender las t\u00e9cnicas necesarias para aplicar una pantalla OLED a sus futuros proyectos. Espero le sea de ayuda en su aprendizaje.<\/p>\n<div id=\"crayon-5a75aa66f1090525208164-1\" class=\"crayon-line\"><em><span class=\"crayon-i\">Ay<\/span>\u00fa<span class=\"crayon-i\">denos<\/span> <span class=\"crayon-i\">a<\/span> <span class=\"crayon-i\">mantener<\/span> <span class=\"crayon-i\">la<\/span> <span class=\"crayon-i\">comunidad<\/span> <span class=\"crayon-i\">en<\/span> <span class=\"crayon-i\">lo<\/span> <span class=\"crayon-i\">positivo<\/span> <span class=\"crayon-i\">y<\/span> \u00fa<span class=\"crayon-v\">til<\/span><span class=\"crayon-sy\">.<\/span><\/em><\/div>\n<div id=\"crayon-5a75aa66f1090525208164-2\" class=\"crayon-line crayon-striped-line\"><em><span class=\"crayon-i\">Sobre<\/span> <span class=\"crayon-i\">el<\/span> <span class=\"crayon-v\">tema<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">sea<\/span> <span class=\"crayon-i\">respetuoso<\/span> <span class=\"crayon-i\">con<\/span> <span class=\"crayon-i\">todas<\/span> <span class=\"crayon-i\">las<\/span> <span class=\"crayon-i\">edades<\/span> <span class=\"crayon-i\">y<\/span> <span class=\"crayon-i\">niveles<\/span><\/em><\/div>\n<div id=\"crayon-5a75aa66f1090525208164-3\" class=\"crayon-line\"><em><span class=\"crayon-i\">con<\/span> <span class=\"crayon-i\">la<\/span> <span class=\"crayon-i\">habitual<\/span> <span class=\"crayon-v\">responsabilidad<\/span><span class=\"crayon-sy\">.<\/span><\/em><\/div>\n<div id=\"crayon-5a75aa66f1090525208164-4\" class=\"crayon-line crayon-striped-line\"><em><span class=\"crayon-i\">Sea<\/span> <span class=\"crayon-i\">amable<\/span> <span class=\"crayon-i\">y<\/span> <span class=\"crayon-i\">no<\/span> <span class=\"crayon-i\">haga<\/span> <span class=\"crayon-v\">Spam<\/span> <span class=\"crayon-o\">&#8211;<\/span> \u00a1<span class=\"crayon-v\">Gracias<\/span><span class=\"crayon-o\">!<\/span><\/em><\/div>\n","protected":false},"excerpt":{"rendered":"<p>TUTORIAL CON ARDUINO Y NODEMCU12. PANTALLA I2C OLED 0.96 La pantalla OLED monocrom\u00e1tica de 0,96 pulgadas, en este tutorial, mostraremos c\u00f3mo conectar y probar este m\u00f3dulo de visualizaci\u00f3n OLED I2C de 0.96\u2033 con un Arduino. La pantalla se conecta a Arduino con solo cuatro cables, debido a que utiliza el bus I2C, esta interfaz a [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":5568,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[289,15,316],"tags":[249,97,328,363],"class_list":["post-4420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp8266","category-microcontroladores","category-pantalla_oled096","tag-glcd","tag-lcd","tag-oled","tag-pantallas"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/4420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/comments?post=4420"}],"version-history":[{"count":28,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/4420\/revisions"}],"predecessor-version":[{"id":5583,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/4420\/revisions\/5583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/5568"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=4420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=4420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=4420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}