        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":6789,"date":"2022-03-17T00:41:22","date_gmt":"2022-03-17T00:41:22","guid":{"rendered":"https:\/\/rogerbit.com\/wprb\/?p=6789"},"modified":"2022-03-17T00:42:29","modified_gmt":"2022-03-17T00:42:29","slug":"teclado-fisico-y-virtual-segunda-parte","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2022\/03\/teclado-fisico-y-virtual-segunda-parte\/","title":{"rendered":"Teclado f\u00edsico y virtual para PC con bluetooth y arduino (Segunda parte)"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"\u2705 Teclado f\u00edsico y virtual para PC con bluetooth y arduino (Segunda parte) - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/nA38xvDt1e4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p>Segunda parte del teclado para PC, con arduino micro, pero que ahora agrega algunas mejoras significativas, ya que agrega un m\u00f3dulo bluetooth para conectarnos a una aplicaci\u00f3n para celular, con app inventor, y de esa manera agregar un teclado virtual con nuevas funciones. Tambi\u00e9n se le agrega un display oled, para ver cual fue la \u00faltima tecla presionada, y un buzzer que nos avisar\u00e1 cuando una secuencia de teclas haya finalizado. Analizaremos el c\u00f3digo fuente, la aplicaci\u00f3n en app inventor y finalmente probaremos el funcionamiento del mismo.<\/p>\n<hr \/>\n<p style=\"text-align: left;\">Tal vez pueda interesarte proyectos en arduino, pic, rob\u00f3tica, telecomunicaciones, suscribete en\u00a0<a href=\"http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1\">http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1<\/a>\u00a0mucho videos con c\u00f3digo fuentes completos y diagramas<\/p>\n<p style=\"text-align: left;\"><div id=\"ubm-banners-rotation-n1\" data-interval=\"4000\" class=\"ubm_banners_rotation\" style=\"overflow: hidden; width: 200px; height: 150px;\"><div id=\"3_ubm_banner\" class=\"ubm_rotating_banner\"><a href=\"https:\/\/bit.ly\/3aXRDAu\" target=\"_blank\" rel=\"dofollow\"><img src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/useful_banner_manager_banners\/3-2-logo youtube.png\" width=\"100%\" height=\"100%\" alt=\"SUSCRIBETE A NUESTRO CANAL DE YOUTUBE, TUTORIALES GRATIS\" \/><\/a><\/div><\/div><\/p>\n<hr \/>\n<h4>Componentes electr\u00f3nicos<\/h4>\n<h4>Arduino micro<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6709\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/arduinomicro.jpg\" alt=\"\" width=\"437\" height=\"196\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/arduinomicro.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/arduinomicro-300x134.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/arduinomicro-768x344.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/arduinomicro-820x368.jpg 820w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/p>\n<div id=\"tech-specs\" class=\"product-section\">\n<h2 class=\"subtitle\">Especificaciones t\u00e9cnicas<\/h2>\n<div class=\"table-tech rte\">\n<table>\n<tbody>\n<tr>\n<td>MICROCONTROLADOR<\/td>\n<td>ATmega32U4<\/td>\n<\/tr>\n<tr>\n<td>TENSI\u00d3N DE FUNCIONAMIENTO<\/td>\n<td>5V<\/td>\n<\/tr>\n<tr>\n<td>VOLTAJE DE ENTRADA (RECOMENDADO)<\/td>\n<td>7-12V<\/td>\n<\/tr>\n<tr>\n<td>PINES DE E\/S DIGITALES<\/td>\n<td>20<\/td>\n<\/tr>\n<tr>\n<td>CANALES PWM<\/td>\n<td>7<\/td>\n<\/tr>\n<tr>\n<td>CANALES DE ENTRADA ANAL\u00d3GICA<\/td>\n<td>12<\/td>\n<\/tr>\n<tr>\n<td>CORRIENTE CC POR PIN DE E\/S<\/td>\n<td>20mA<\/td>\n<\/tr>\n<tr>\n<td>CORRIENTE CC PARA CLAVIJA DE 3,3 V<\/td>\n<td>50mA<\/td>\n<\/tr>\n<tr>\n<td>MEMORIA FLASH<\/td>\n<td>32 KB (ATmega32U4) de los cuales 4 KB utilizados por el gestor de arranque<\/td>\n<\/tr>\n<tr>\n<td>SRAM<\/td>\n<td>2,5 KB (ATmega32U4)<\/td>\n<\/tr>\n<tr>\n<td>EEPROM<\/td>\n<td>1 KB (ATmega32U4)<\/td>\n<\/tr>\n<tr>\n<td>VELOCIDAD DE RELOJ<\/td>\n<td>16 MHz<\/td>\n<\/tr>\n<tr>\n<td>LED_CONSTRUIDO<\/td>\n<td>13<\/td>\n<\/tr>\n<tr>\n<td>LONGITUD<\/td>\n<td>48mm<\/td>\n<\/tr>\n<tr>\n<td>ANCHO<\/td>\n<td>18mm<\/td>\n<\/tr>\n<tr>\n<td>PESO<\/td>\n<td>13 gramos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr \/>\n<h4>Diecisiete pulsadores<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6711 size-medium\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/b1720b-1-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/b1720b-1-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/b1720b-1-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/b1720b-1-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/b1720b-1.jpg 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<hr \/>\n<h4>Cable micro usb<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6712 size-medium\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-1024x1024.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-1536x1536.jpg 1536w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb-820x820.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/cable_usb.jpg 1600w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<hr \/>\n<h4>PCB<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6713\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb.png\" alt=\"\" width=\"543\" height=\"386\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb.png 543w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb-300x213.png 300w\" sizes=\"(max-width: 543px) 100vw, 543px\" \/><\/p>\n<p>Descargar archivo gerber &#8211;&gt;<a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/03\/teclado-arduino-micro.zip\">teclado arduino micro<\/a><\/p>\n<hr \/>\n<h4>Componentes opcionales<\/h4>\n<h4>Buzzer<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6714\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/buzzer.jpg\" alt=\"\" width=\"225\" height=\"225\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/buzzer.jpg 225w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/buzzer-150x150.jpg 150w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/p>\n<hr \/>\n<h4>Display oled con driver SSD1306<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6692\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/oled.jpg\" sizes=\"(max-width: 260px) 100vw, 260px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/oled.jpg 470w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/oled-300x271.jpg 300w\" alt=\"\" width=\"260\" height=\"235\" \/><\/p>\n<p>El rendimiento de la pantalla es mejor que la pantalla LCD tradicional, tambi\u00e9n un menor consumo.<br \/>\nEspecificaciones:<br \/>\nIC del controlador: SSD1306<br \/>\nTama\u00f1o: OLED de 0,91 pulgadas<br \/>\nResoluci\u00f3n: 128 x 32<br \/>\nTama\u00f1o: 38 * 12 mm<br \/>\nN\u00famero de pines: 4 pines<br \/>\nTipo de interfaz:<br \/>\ninterfaz IIC<br \/>\nColor de la pantalla: Blanco \/ azul<br \/>\nDescripci\u00f3n de los pines:<br \/>\nGND: Power Ground<br \/>\nVCC: Power + (DC 3.3 ~ 5v)<br \/>\nTemperatura de funcionamiento: -40 ~ 85 \u2103<br \/>\nSCL: L\u00ednea de reloj<br \/>\nSDA: L\u00ednea de datos<\/p>\n<p>Pantalla OLED, sin necesidad de retroiluminaci\u00f3n, autoiluminaci\u00f3n, Color de la pantalla: azul.<br \/>\nEl rendimiento de la pantalla es mejor que la pantalla LCD tradicional, tambi\u00e9n menor consumo;\u00a0IIC (comunicaciones I2C) simplifica las conexiones.<br \/>\n\u00daselo con Arduino, ESP8266, ESP32, STM32, etc.\u00a03.3 a 5v de voltaje<\/p>\n<hr \/>\n<h4>Pines hembra<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-6689\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin.jpg\" sizes=\"(max-width: 225px) 100vw, 225px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin.jpg 225w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin-150x150.jpg 150w\" alt=\"\" width=\"225\" height=\"225\" \/><\/p>\n<hr \/>\n<h4>M\u00f3dulo hc-05 (opcional)<\/h4>\n<p>S\u00f3lo en el caso que quieras ver los datos recibidos en tu celular podr\u00e1s conectar este m\u00f3dulo, por eso es opcional y no obligatorio<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6688\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hc-05.jpg\" sizes=\"(max-width: 323px) 100vw, 323px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hc-05.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hc-05-300x227.jpg 300w\" alt=\"\" width=\"323\" height=\"245\" \/><\/p>\n<ul>\n<li>Funciona como dispositivo maestro y esclavo\u00a0 bluetooth<\/li>\n<li>Configurable mediante comandos AT<\/li>\n<li>Bluetooth V2.0+EDR<\/li>\n<li>Frecuencia de operaci\u00f3n: 2.4 GHz Banda ISM<\/li>\n<li>Modulaci\u00f3n: GFSK (Gaussian Frequency Shift Keying)<\/li>\n<li>Potencia de transmisi\u00f3n: &lt;=4dBm, Class 2<\/li>\n<li>Sensibilidad: &lt;=-84dBm @ 0.1% BER<\/li>\n<li>Seguridad: Autenticaci\u00f3n y encriptaci\u00f3n<\/li>\n<li>Perfiles Bluetooth: Puerto serie bluetooth.<\/li>\n<li>Distancia de hasta 10 metros en condiciones \u00f3ptimas<\/li>\n<li>Voltaje de Operaci\u00f3n: 3.6 VDC a 6 VDC<\/li>\n<li>Consumo Corriente: 30 mA a 50mA<\/li>\n<li>Chip: BC417143<\/li>\n<li>Versi\u00f3n o firmware: 3.0-20170609<\/li>\n<li>Baudios por defecto: 38400<\/li>\n<li>Baudios soportados: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.<\/li>\n<li>Interfaz: Serial TTL<\/li>\n<li>Antena: Integrada en el PCB<\/li>\n<li>Seguridad: Autenticaci\u00f3n y encriptaci\u00f3n (Contrase\u00f1a por defecto: 0000 o 1234)<\/li>\n<li>Temperatura de trabajo (Max): 75\u00b0C<\/li>\n<li>Temperatura de trabajo (Min): -20\u00b0C<\/li>\n<li>Dimensiones: 4.4 x 1.6 x 0.7 cm<\/li>\n<\/ul>\n<hr \/>\n<h4>Circuito<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-6716\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/circuito.png\" alt=\"\" width=\"572\" height=\"481\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/circuito.png 572w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/circuito-300x252.png 300w\" sizes=\"(max-width: 572px) 100vw, 572px\" \/> <img loading=\"lazy\" class=\"alignnone size-large wp-image-6717\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb_diagram.png\" alt=\"\" width=\"549\" height=\"390\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb_diagram.png 549w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/01\/pcb_diagram-300x213.png 300w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/p>\n<hr \/>\n<h4>C\u00f3digo Fuente<\/h4>\n<pre class=\"lang:arduino decode:true \" title=\"C\u00f3digo Fuente\">#include &lt;Keyboard.h&gt;\r\n\/\/#include &lt;SoftwareSerial.h&gt;\r\n#include &lt;Arduino.h&gt;\r\n#include &lt;U8g2lib.h&gt;\r\n#ifdef U8X8_HAVE_HW_SPI\r\n#include &lt;SPI.h&gt;\r\n#endif\r\n#ifdef U8X8_HAVE_HW_I2C\r\n#include &lt;Wire.h&gt;\r\n#endif\r\n\/\/Tipo de displey usado con dirver SSD1306 de 128x32\r\nU8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, \/* clock=*\/ A5, \/* data=*\/ A4, \/* reset=*\/ U8X8_PIN_NONE);\r\nString cadena, primerString, segundoString ;\r\nint estadoSet= 0;\r\nvoid setup() {\r\nu8g2.begin();\/\/inicializamos el display\r\nKeyboard.begin();\/\/Inicializamos el teclado\r\nSerial.begin(9600);\r\nSerial1.begin(9600);\/\/Velocidad del puerto serial, serial1 es el pin 0 y 1 en arduino micro\r\n\/\/Pines de de entrada\r\npinMode(2, INPUT_PULLUP);\r\npinMode(3, INPUT_PULLUP);\r\npinMode(4, INPUT_PULLUP);\r\npinMode(5, INPUT_PULLUP);\r\npinMode(6, INPUT_PULLUP);\r\npinMode(7, INPUT_PULLUP);\r\npinMode(8, INPUT_PULLUP);\r\npinMode(9, INPUT_PULLUP);\r\n\/\/Pin 13 como salida\r\npinMode(13, OUTPUT);\/\/Conectado un Buzzer\r\n}\r\nvoid loop() {\r\n\/\/Leemos lo que entra por el puerto serial y lo asignamos a la variable cadena\r\n if (Serial1.available())  {\r\n    cadena = String(\"\");\r\n    while (Serial1.available()) {\r\n      cadena = cadena + char(Serial1.read());\r\n      delay(1);\r\n        }\r\n        }\r\n\r\n partirCadena();\/\/llama a la funci\u00f3n partirCadena\r\n\/\/Leemos el estado de las teclas si ha sido pulsado alguna\r\nint  set1 = digitalRead(2);\r\nint  set2 = digitalRead(3);\r\nint  set3 = digitalRead(4);\r\nint  set4 = digitalRead(5);\r\nint  set5 = digitalRead(6);\r\nint  set6 = digitalRead(7);\r\nint  set7 = digitalRead(8);\r\nint  set8 = digitalRead(9);\r\n\/\/Escribe un texto\r\nif (set1 == LOW || cadena == \"set1\") {\r\nestadoSet = 1;\r\ndisplayOled();       \r\nKeyboard.println(\"Prueba de escritura de texto\");\r\ndelay(200);\r\n cadena = \"\";\r\n}\r\n\/\/Convinaci\u00f3n de la teclas \"control + v\", para pegar lo que est\u00e9 en el portapapeles\r\nif (set2 == LOW || cadena == \"set2\") {\r\nestadoSet = 2;\r\ndisplayOled();\r\nKeyboard.press(KEY_LEFT_CTRL);\r\nKeyboard.press('v');\r\ndelay(150);\r\nKeyboard.releaseAll();\r\ndelay(150);\r\n cadena = \"\";\r\n}\r\n\/\/Abre la consola de comandos y ejecuta el comando \"dir\"\r\nif (set3 == LOW || cadena == \"set3\") {\r\nestadoSet = 3;\r\ndisplayOled();\r\n  \/\/Ea\u00bfsta convinaci\u00f3n abre ejecutar en windows\r\n  Keyboard.press(KEY_RIGHT_GUI);\/\/Tecla de windows\r\n  Keyboard.press('r');\r\n  delay(100);\r\n  Keyboard.releaseAll();  \r\n  delay(1000);\r\n  \/\/Abrimos el interprete de comandos\r\n  Keyboard.println(\"cmd\");\r\n  Keyboard.press(KEY_RETURN);\r\n  delay(100);\r\n  Keyboard.releaseAll();\r\n  delay(1000);\r\n  \/\/Ejecutamos el comando \"dir\"\r\n  Keyboard.println(\"dir\");\r\n  delay(4000);\r\n  Keyboard.press(KEY_RETURN);\r\n  Keyboard.releaseAll();\r\n   cadena = \"\";\r\n   digitalWrite(13, HIGH);\r\n   delay(500);\r\n   digitalWrite(13, LOW);\r\n}\r\n\/\/Escribe el caracter A (Mayuscula)\r\nif (set4 == LOW || cadena == \"set4\") {\r\n  estadoSet = 4;\r\ndisplayOled();\r\n  Keyboard.press('A');\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n    cadena = \"\";\r\n}\r\n\/\/Escribe el caracter B (Mayuscula)\r\nif (set5 == LOW || cadena == \"set5\") {\r\n  estadoSet = 5;\r\ndisplayOled();\r\n  Keyboard.press('B');\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n    cadena = \"\";\r\n}\r\n\/\/Escribe el caracter C (Mayuscula)\r\nif (set6 == LOW || cadena == \"set6\") {\r\n  estadoSet = 6;\r\ndisplayOled();\r\n  Keyboard.press('C');\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n    cadena = \"\";\r\n}\r\n\/\/Escribe el caracter D (Mayuscula)\r\nif (set7 == LOW || cadena == \"set7\") {\r\n  estadoSet = 7;\r\ndisplayOled();\r\n  Keyboard.press('D');\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n    cadena = \"\";\r\n}\r\n\/\/Escribe el caracter E (Mayuscula)\r\nif (set8 == LOW || cadena == \"set8\") {\r\n  estadoSet = 8;\r\ndisplayOled();\r\nKeyboard.println(\"\");\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n    cadena = \"\";\r\n}\r\n\/\/Escribe un texto\r\nif (primerString == \"ENV\") {\r\n  estadoSet = 9;\r\ndisplayOled();\r\nKeyboard.print(segundoString);\r\ndelay(200);\r\n primerString=\"\";\r\n segundoString = \"\";\r\n cadena = \"\";\r\n}\r\nif (cadena == \"ENT\") {\r\nKeyboard.press(KEY_RETURN);\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\ncadena = \"\";\r\n}\r\n\r\nif (cadena == \"ESP\") {\r\nKeyboard.press(' ');\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n cadena = \"\";\r\n}\r\n\r\nif (cadena == \"TAB\") {\r\nKeyboard.press(KEY_TAB);\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n cadena = \"\";\r\n}\r\n\r\nif (cadena == \"BOR\") {\r\nKeyboard.press(KEY_BACKSPACE);\r\n  delay(150);\r\n  Keyboard.releaseAll();\r\n   delay(150);\r\n cadena = \"\";\r\n}\r\n}\r\n\r\n\r\n\r\nvoid partirCadena() {\r\n  if (cadena.indexOf(\" \") &gt;=0){                           \/\/comprueba los datos recibidos si tienen algun espacio\r\n      primerString = cadena.substring(0,(cadena.indexOf(\" \")));   \/\/ filtra la variable cadena. Toma desde el primer car\u00e1cter al espacio en blanco.\r\n      segundoString = cadena.substring(cadena.indexOf(\" \")+1);  \/\/ filtra la variable cadena Desde el \"espacio en blanco\" hasta el siguiente valor\r\n  }\r\n}\r\n\r\n\r\n\r\n\/\/Mostramos en el display el bot\u00f3n precionado\r\n void displayOled(){\r\n  u8g2.firstPage();\r\n  do {\r\n    u8g2.setFont(u8g2_font_ncenB10_tr);\r\n    if (estadoSet ==1){\r\n    u8g2.drawStr(0,24,\"Set1\");\r\n    }\r\n        if (estadoSet ==2){\r\n    u8g2.drawStr(0,24,\"Set2\");\r\n    }\r\n        if (estadoSet ==3){\r\n    u8g2.drawStr(0,24,\"Set3\");\r\n    }\r\n        if (estadoSet ==4){\r\n    u8g2.drawStr(0,24,\"Set4\");\r\n    }\r\n        if (estadoSet ==5){\r\n    u8g2.drawStr(0,24,\"Set5\");\r\n    }\r\n        if (estadoSet ==6){\r\n    u8g2.drawStr(0,24,\"Set6\");\r\n    }\r\n        if (estadoSet ==7){\r\n    u8g2.drawStr(0,24,\"Set7\");\r\n    }\r\n        if (estadoSet ==8){\r\n    u8g2.drawStr(0,24,\"Set8\");\r\n    }\r\n    if (estadoSet ==9){\r\n    u8g2.drawStr(0,24,\"TxT Bluetooth\");\r\n    }\r\n    } while ( u8g2.nextPage() );\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: left;\"><div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div><\/p>\n<hr \/>\n<p style=\"text-align: left;\"><strong>PROYECTO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"Como fabricar un teclado para PC con arduino (primera parte) - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/cxXSbunKjgc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Segunda parte del teclado para PC, con arduino micro, pero que ahora agrega algunas mejoras significativas, ya que agrega un m\u00f3dulo bluetooth para conectarnos a una aplicaci\u00f3n para celular, con app inventor, y de esa manera agregar un teclado virtual con nuevas funciones. Tambi\u00e9n se le agrega un display oled, para ver cual fue la [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":6792,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[1067,1326,81,351,181,906,772,1328,934,1366,595,1071,1070,1069,624,1327,630,528,1325,1330,1331,613,1068,1066,917,31,1230,1329,1365,687],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/6789"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=6789"}],"version-history":[{"count":1,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/6789\/revisions"}],"predecessor-version":[{"id":6794,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/6789\/revisions\/6794"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/6792"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=6789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=6789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=6789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}