{"id":3420,"date":"2023-04-22T06:25:57","date_gmt":"2023-04-22T13:25:57","guid":{"rendered":"https:\/\/www.donluc.com\/?p=3420"},"modified":"2023-04-22T06:25:57","modified_gmt":"2023-04-22T13:25:57","slug":"project-26-radio-frequency-gamepad-tester-mk14","status":"publish","type":"post","link":"https:\/\/www.donluc.com\/?p=3420","title":{"rendered":"Project #26 &#8211; Radio Frequency &#8211; Gamepad Tester &#8211; Mk14"},"content":{"rendered":"<div style=\"width: 720px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3420-1\" width=\"720\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02W.mp4?_=1\" \/><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02W.mp4\">https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02W.mp4<\/a><\/video><\/div>\n<p>&#8212;&#8212;<\/p>\n<p>#DonLucElectronics #DonLuc #RadioFrequency #Bluetooth #JoystickTest #Gamepad #ESP32 #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02a.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02a.png\" alt=\"Gamepad Tester\" width=\"720\" height=\"569\" class=\"alignnone size-full wp-image-3422\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02a.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02a-300x237.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02b.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02b.png\" alt=\"Gamepad Tester\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-3423\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02b.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02b-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02c.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02c.png\" alt=\"Gamepad Tester\" width=\"720\" height=\"480\" class=\"alignnone size-full wp-image-3424\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02c.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2023\/04\/DL2304Mk02c-300x200.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>Controller &#038; Gamepad Tester<\/strong><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"1IwDyAylyd\"><p><a href=\"https:\/\/devicetests.com\/controller-tester\">Controller Tester<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Controller Tester&#8221; &#8212; DeviceTests\" src=\"https:\/\/devicetests.com\/controller-tester\/embed#?secret=xKs8wRBHF4#?secret=1IwDyAylyd\" data-secret=\"1IwDyAylyd\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>You can begin testing your controller or gamepad by pressing a button or moving one of the analog sticks on your gamepad. When you press a button or move an analog stick, the illustration above should light up or display the movement of your analog stick. When we detect movement or button presses, the \u201cController Detected\u201d message will show up with your controller\u2019s name in it. If you have multiple controllers or gamepads connected, then please try them one by one. Even though the illustration represents an Xbox controller, the test also works with other similar controllers.<\/p>\n<p><strong>DL2304Mk02<\/strong><\/p>\n<p>1 x SparkFun Thing Plus &#8211; ESP32 WROOM<br \/>\n1 x SparkFun Joystick Shield Kit<br \/>\n1 x Thumb Joystick<br \/>\n1 x SparkFun Thumb Joystick Breakout<br \/>\n1 x Terminal Block Breakout FeatherWing<br \/>\n1 x Lithium Ion Battery &#8211; 1 Ah<br \/>\n1 x SparkFun Cerberus USB Cable<\/p>\n<p><strong>SparkFun Thing Plus &#8211; ESP32 WROOM<\/strong><\/p>\n<p>LJH &#8211; Analog A3<br \/>\nLJV &#8211; Analog A2<br \/>\nLJS &#8211; Digital 12<br \/>\nRJH &#8211; Analog A1<br \/>\nRJV &#8211; Analog A0<br \/>\nRJS &#8211; Digital 21<br \/>\nLD1 &#8211; Digital 16<br \/>\nLD2 &#8211; Digital 18<br \/>\nLD3 &#8211; Digital 19<br \/>\nLD4 &#8211; Digital 17<br \/>\nLT &#8211; Digital 5<br \/>\nLED &#8211; LED_BUILTIN<br \/>\nVIN &#8211; +3.3V<br \/>\nGND &#8211; GND<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>DL2304Mk02p.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/* ***** Don Luc Electronics \u00a9 *****\r\nSoftware Version Information\r\nProject #26 - Radio Frequency -  - Mk14\r\n26-14\r\nDL2304Mk02p.ino\r\n1 x SparkFun Thing Plus - ESP32 WROOM\r\n1 x SparkFun Joystick Shield Kit\r\n1 x Thumb Joystick\r\n1 x SparkFun Thumb Joystick Breakout\r\n1 x Terminal Block Breakout FeatherWing\r\n1 x Lithium Ion Battery - 1 Ah\r\n1 x SparkFun Cerberus USB Cable\r\n*\/\r\n\r\n\/\/ Include the Library Code\r\n\/\/ Arduino\r\n#include &lt;Arduino.h&gt;\r\n\/\/ ESP32 BLE Gamepad\r\n#include &lt;BleGamepad.h&gt;\r\n\r\n\/\/ ESP32 BLE Gamepad\r\nBleGamepad bleGamepad;\r\n\r\n\/\/ Left Joystick\r\n#define LJH A3\r\n#define LJV A2\r\n#define LJS 12\r\n\r\n\/\/ Right Joystick\r\n#define RJH A0\r\n#define RJV A1\r\n#define RJS 21\r\n\r\n\/\/ D-pad\r\n#define LD1 19\r\n#define LD2 17\r\n#define LD3 18\r\n#define LD4 16\r\n\r\n\/\/ LT \r\n#define LT 5\r\n\r\n\/\/ Previous Button State\r\nint previousButton1State = HIGH;\r\nint previousButton2State = HIGH;\r\nint previousButton3State = HIGH;\r\nint previousButton4State = HIGH;\r\nint previousButton5State = HIGH;\r\nint previousButton6State = HIGH;\r\nint previousButton7State = HIGH;\r\n\r\n\/\/ Number of pot samples to take (to smooth the values)\r\nconst int numberOfPotSamples = 5;\r\n\/\/ Delay in milliseconds between pot samples\r\nconst int delayBetweenSamples = 2;\r\n\/\/ Additional delay in milliseconds between HID reports\r\nconst int delayBetweenHIDReports = 5;\r\n\/\/ Delay in milliseconds between button press\r\nconst int debounceDelay = 10;\r\n\r\n\/\/ Software Version Information\r\nString sver = &quot;26-14&quot;;\r\n\r\nvoid loop() {\r\n  \r\n  \/\/ Bluetooth Serial (ESP32SPP)\r\n  isBluetooth();\r\n\r\n}\r\n<\/pre>\n<p><strong>getBluetooth.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Bluetooth\r\n\/\/ isBluetooth\r\nvoid isBluetooth() {\r\n\r\n  \/\/ ESP32 BLE Gamepad\r\n  if(bleGamepad.isConnected()) \r\n  {\r\n\r\n    \/\/ Button\r\n    isButton();\r\n\r\n    \/\/ Joystick\r\n    isThumbJoystick();\r\n\r\n  }\r\n\r\n}\r\n<\/pre>\n<p><strong>getGames.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Games\r\n\/\/ Set Inputs\r\nvoid setInputs() {\r\n  \r\n  \/\/ Make the button line an input\r\n  pinMode(LJS, INPUT_PULLUP);\r\n  pinMode(RJS, INPUT_PULLUP);\r\n  pinMode(LD1, INPUT_PULLUP);\r\n  pinMode(LD2, INPUT_PULLUP);\r\n  pinMode(LD3, INPUT_PULLUP);\r\n  pinMode(LD4, INPUT_PULLUP);\r\n  pinMode(LT, INPUT_PULLUP);\r\n  \/\/ Initialize digital pin LED_BUILTIN as an output.\r\n  pinMode(LED_BUILTIN, OUTPUT);\r\n  \/\/ Turn the LED on HIGH \r\n  digitalWrite(LED_BUILTIN, HIGH);\r\n\r\n}\r\n\r\n\/\/ Button\r\nvoid isButton(){\r\n  \r\n  \/\/ Button1 State LD1\r\n  int currentButton1State = digitalRead(LD1);\r\n  if (currentButton1State != previousButton1State)\r\n  {\r\n    if (currentButton1State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_1);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_1);\r\n    }\r\n  }\r\n  previousButton1State = currentButton1State;\r\n  \/\/ Button2 State LD2\r\n  int currentButton2State = digitalRead(LD2);\r\n\r\n  if (currentButton2State != previousButton2State)\r\n  {\r\n    if (currentButton2State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_2);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_2);\r\n    }\r\n  }\r\n  previousButton2State = currentButton2State;\r\n\r\n  \/\/ Button3 State LD3\r\n  int currentButton3State = digitalRead(LD3);\r\n  if (currentButton3State != previousButton3State)\r\n  {\r\n    if (currentButton3State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_3);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_3);\r\n    }\r\n  }\r\n  previousButton3State = currentButton3State;\r\n\r\n  \/\/ Button4 State LD4\r\n  int currentButton4State = digitalRead(LD4);\r\n  if (currentButton4State != previousButton4State)\r\n  {\r\n    if (currentButton4State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_4);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_4);\r\n    }\r\n  }\r\n  previousButton4State = currentButton4State;\r\n\r\n  \/\/ Button5 State LJS\r\n  int currentButton5State = digitalRead(LJS);\r\n  if (currentButton5State != previousButton5State)\r\n  {\r\n    if (currentButton5State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_5);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_5);\r\n    }\r\n  }\r\n  previousButton5State = currentButton5State;\r\n\r\n  \/\/ Button6 State RJS\r\n  int currentButton6State = digitalRead(RJS);\r\n  if (currentButton6State != previousButton6State)\r\n  {\r\n    if (currentButton6State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_6);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_6);\r\n    }\r\n  }\r\n  previousButton6State = currentButton6State;\r\n\r\n  \/\/ Button7 State LT\r\n  int currentButton7State = digitalRead(LT);\r\n  if (currentButton7State != previousButton7State)\r\n  {\r\n    if (currentButton7State == LOW)\r\n    {\r\n      bleGamepad.press(BUTTON_7);\r\n    }\r\n    else\r\n    {\r\n      bleGamepad.release(BUTTON_7);\r\n    }\r\n  }\r\n  previousButton7State = currentButton7State;\r\n\r\n}\r\n<\/pre>\n<p><strong>getThumbJoystick.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Thumb Joystick\r\nvoid isThumbJoystick() {\r\n\r\n  \/\/ Joystick LJH\r\n  \/\/ Joystick Pot Values LJH\r\n  int potValues[numberOfPotSamples];\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n    potValues[i] = analogRead(LJH);\r\n    delay(delayBetweenSamples);\r\n    \r\n  }\r\n  int potValue = 0;\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n    potValue += potValues[i];\r\n    \r\n  }\r\n  \/\/ Value \/ Pot Samples\r\n  potValue = potValue \/ numberOfPotSamples;\r\n  \/\/ Adjusted Value\r\n  int adjustedValue = map(potValue, 0, 4095, 32737, 0);\r\n\r\n  \/\/ Joystick LJV\r\n  \/\/ Joystick Pot Values LJV\r\n  int potValues2[numberOfPotSamples];\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n    potValues2[i] = analogRead(LJV);\r\n    delay(delayBetweenSamples);\r\n    \r\n  }\r\n  int potValue2 = 0;\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n    \r\n    potValue2 += potValues2[i];\r\n    \r\n  }\r\n  \/\/ Value2 \/ Pot Samples\r\n  potValue2 = potValue2 \/ numberOfPotSamples;\r\n  \/\/ Adjusted Value2\r\n  int adjustedValue2 = map(potValue2, 0, 4095, 32737, 0);\r\n\r\n  \/\/ Joystick RJH\r\n  \/\/ Joystick Pot Values RJH\r\n  int potValues3[numberOfPotSamples];\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n    potValues3[i] = analogRead(RJH);\r\n    delay(delayBetweenSamples);\r\n    \r\n  }\r\n  int potValue3 = 0;\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n      potValue3 += potValues3[i];\r\n      \r\n  }\r\n  \/\/ Value3 \/ Pot Samples\r\n  potValue3 = potValue3 \/ numberOfPotSamples;\r\n  \/\/ Adjusted Value3\r\n  int adjustedValue3 = map(potValue3, 0, 4095, 32737, 0);\r\n  Serial.print(&quot; RJH: &quot;);\r\n  Serial.println(potValue3);\r\n\r\n  \/\/ Joystick RJV\r\n  \/\/ Joystick Pot Values RJV\r\n  int potValues4[numberOfPotSamples];\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n    potValues4[i] = analogRead(RJV);\r\n    delay(delayBetweenSamples);\r\n    \r\n  }\r\n  int potValue4 = 0;\r\n  for (int i = 0 ; i &lt; numberOfPotSamples ; i++) {\r\n      \r\n      potValue4 += potValues4[i];\r\n  \r\n  }\r\n  \/\/ Value4 \/ Pot Samples\r\n  potValue4 = potValue4 \/ numberOfPotSamples;\r\n  \/\/ Adjusted Value4\r\n  int adjustedValue4 = map(potValue4, 0, 4095, 0, 32737);\r\n  Serial.print(&quot; RJV: &quot;);\r\n  Serial.println(potValue4);\r\n\r\n  \/\/bleGamepad.setAxes(adjustedValue, adjustedValue2, 0, 0, adjustedValue3, adjustedValue4, DPAD_CENTERED);\r\n  bleGamepad.setAxes(adjustedValue, adjustedValue2, adjustedValue4, 0, adjustedValue3, 0, DPAD_CENTERED);\r\n  delay(delayBetweenHIDReports);\r\n\r\n  \/\/ D-pad\r\n  \/\/ LD1\r\n  if (digitalRead(LD1) == LOW){\r\n      \r\n    bleGamepad.setAxes(adjustedValue, adjustedValue2, adjustedValue4, 0, adjustedValue3, 0, DPAD_UP);\r\n\r\n  }\r\n  \/\/ LD2\r\n  if (digitalRead(LD2) == LOW){\r\n    \r\n    bleGamepad.setAxes(adjustedValue, adjustedValue2, adjustedValue4, 0, adjustedValue3, 0, DPAD_LEFT);\r\n  \r\n  }\r\n  \/\/ LD3\r\n  if (digitalRead(LD3) == LOW){\r\n      \r\n    bleGamepad.setAxes(adjustedValue, adjustedValue2, adjustedValue4, 0, adjustedValue3, 0, DPAD_DOWN);\r\n  \r\n  }\r\n  \/\/ LD4\r\n  if (digitalRead(LD4) == LOW){\r\n      \r\n    bleGamepad.setAxes(adjustedValue, adjustedValue2, adjustedValue4, 0, adjustedValue3, 0, DPAD_RIGHT);\r\n\r\n  }\r\n\r\n}\r\n<\/pre>\n<p><strong>setup.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Setup\r\nvoid setup()\r\n{\r\n \r\n  \/\/ Serial\r\n  Serial.begin(115200);\r\n  \r\n  \/\/ Set Inputs\r\n  setInputs();\r\n\r\n  \/\/ ESP32 BLE Gamepad\r\n  bleGamepad.begin();\r\n\r\n}\r\n<\/pre>\n<p>&#8212;&#8212;<\/p>\n<p><strong>People can contact us:<\/strong> https:\/\/www.donluc.com\/?page_id=1927<\/p>\n<p><strong>Technology Experience<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi,Espressif, etc&#8230;)<\/li>\n<li>IoT<\/li>\n<li>Wireless (Radio Frequency, Bluetooth, WiFi, Etc&#8230;)<\/li>\n<li>Robotics<\/li>\n<li>Camera and Video Capture Receiver Stationary, Wheel\/Tank and Underwater Vehicle<\/li>\n<li>Unmanned Vehicles Terrestrial and Marine<\/li>\n<li>Machine Learning<\/li>\n<li>RTOS<\/li>\n<li>Research &#038; Development (R &#038; D)<\/li>\n<\/ul>\n<p><strong>Instructor, E-Mentor, STEAM, and Arts-Based Training<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>IoT<\/li>\n<li>PIC Microcontrollers<\/li>\n<li>Arduino<\/li>\n<li>Raspberry Pi<\/li>\n<li>Espressif<\/li>\n<li>Robotics<\/li>\n<\/ul>\n<p><strong>Follow Us<\/strong><\/p>\n<p><strong>Luc Paquin \u2013 Curriculum Vitae &#8211; 2023<\/strong><br \/>\nhttps:\/\/www.donluc.com\/luc\/<\/p>\n<p><strong>Web:<\/strong> https:\/\/www.donluc.com\/<br \/>\n<strong>Facebook:<\/strong> https:\/\/www.facebook.com\/neosteam.labs.9\/<br \/>\n<strong>YouTube:<\/strong> https:\/\/www.youtube.com\/@thesass2063<br \/>\n<strong>Twitter:<\/strong> https:\/\/twitter.com\/labs_steam<br \/>\n<strong>Pinterest:<\/strong> https:\/\/www.pinterest.com\/NeoSteamLabs\/<br \/>\n<strong>Instagram:<\/strong> https:\/\/www.instagram.com\/neosteamlabs\/<\/p>\n<p><strong>Don Luc<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8212;&#8212; #DonLucElectronics #DonLuc #RadioFrequency #Bluetooth #JoystickTest #Gamepad #ESP32 #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; Controller &#038; Gamepad Tester Controller Tester You can begin testing your controller or gamepad by pressing a button or moving one of the analog sticks on your gamepad. When you press a button or move an &#8230; <a title=\"Project #26 &#8211; Radio Frequency &#8211; Gamepad Tester &#8211; Mk14\" class=\"read-more\" href=\"https:\/\/www.donluc.com\/?p=3420\" aria-label=\"Read more about Project #26 &#8211; Radio Frequency &#8211; Gamepad Tester &#8211; Mk14\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[247,47,49,38,80,59,5,58,82,10,43],"tags":[86,6,92,102,4,19,83,85,281,24,9,84,27,264,109,33,34],"class_list":["post-3420","post","type-post","status-publish","format-standard","hentry","category-radio-frequency","category-adafruit","category-consultant","category-digitalelectronics","category-esp32","category-fritzing","category-microcontrollers","category-arduino-programming","category-program-esp32","category-projects","category-sparkfun","tag-adafruit","tag-arduino","tag-battery","tag-components","tag-consultant","tag-electronics","tag-esp32","tag-fritzing","tag-gamepad-tester","tag-microcontroller","tag-programming","tag-programming-esp32","tag-projects-2","tag-radio-frequency","tag-sparkfun","tag-technology","tag-video-blog"],"_links":{"self":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3420"}],"version-history":[{"count":2,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3420\/revisions"}],"predecessor-version":[{"id":3678,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/3420\/revisions\/3678"}],"wp:attachment":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}