{"id":498,"date":"2016-08-19T04:27:35","date_gmt":"2016-08-18T19:27:35","guid":{"rendered":"http:\/\/jumbleat.com\/?p=498"},"modified":"2017-06-26T20:04:52","modified_gmt":"2017-06-26T11:04:52","slug":"switch_without_chatter","status":"publish","type":"post","link":"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/","title":{"rendered":"Avoiding from chattering by a programming"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u6b21 [ Contents ]<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69d6602e1d487\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #757575;color:#757575\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #757575;color:#757575\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69d6602e1d487\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#Chattering\" >Chattering<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#Well_known_methods\" >Well known methods<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#To_avoid_from_%E2%80%98chattering_by_a_programming\" >To avoid from &#8216;chattering&#8217; by a programming<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#Typical_way\" >Typical way<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#%E2%80%9CJudging_by_gauge%E2%80%9D_methods\" >&#8220;Judging by gauge&#8221; methods<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/#SHOOTER_%E2%80%98push_it_fast\" >SHOOTER &#8216;push it fast&#8217;<\/a><\/li><\/ul><\/nav><\/div>\n<p><\/p>\n<div id=\"prolog\">\n<p>Lighting LED is your first task with the Arduino. Then you use a switch for the next step, don&#8217;t you?<\/p>\n<p><!--more--><\/p>\n<p class=\"mtm mbl\"><em>I wrote <a href=\"https:\/\/jumbleat.com\/2017\/06\/26\/bye-bye_chattering_seriously_library\/\" target=\"_blank\" rel=\"noopener\">a chattering-less switch library<\/a> with &#8220;gauging&#8221; method.<br \/>\n (26.6.2017)<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-500 size-full\" src=\"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/sw_witout_chatter_bread.png\" width=\"1024\" height=\"460\" srcset=\"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/sw_witout_chatter_bread.png 1024w, https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/sw_witout_chatter_bread-300x135.png 300w, https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/sw_witout_chatter_bread-768x345.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>This is a simple example for using a switch. Taking digital signal from pin 4, judging, apply the result to 6 pin which is set LED.<\/p>\n<pre class=\"lang:default decode:true\" title=\"LED switch\">void setup() {\r\n  pinMode(6, OUTPUT);\r\n  pinMode(4, INPUT_PULLUP);\r\n}\r\n\r\nvoid loop() {\r\n  digitalWrite(6 !digitalRead(4));\r\n}<\/pre>\n<p>Pin 4 is used &#8216;internal pullup&#8217; so that you don&#8217;t have to use any other electronic parts. Instead, logic of 4 pin is inverted. So &#8216;digitalRead&#8217; on 7 line is also inverted by a sign &#8216;!&#8217;. Then\u00a0this value\u00a0allows you to apply result directly.<\/p>\n<p>In this sketch, LED light turns off when you stop pushing swtich. So I prepare global variable &#8216;button&#8217; for LED state and keep it turn on.<\/p>\n<pre class=\"lang:default mark:1,2,11,13,19 decode:true \" title=\"LED status changing switch 1\">boolean button  = 0;\r\nboolean but_old = 0;\r\n\r\nvoid setup() {\r\n  pinMode(6, OUTPUT);\r\n  pinMode(4, INPUT_PULLUP);\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop() {\r\n  boolean but_now = !digitalRead(4);\r\n\r\n  if (but_now &amp;&amp; but_old == 0)\r\n  {\r\n    button = !button;\r\n    Serial.println(button);\r\n  }\r\n\r\n  but_old = but_now;\r\n\r\n  digitalWrite(6, button);\r\n}<\/pre>\n<p>Also I have to prepare &#8216;button_now&#8217; and &#8216;button_old&#8217;. Beause Arduino is so fast that &#8220;on or off judgement&#8221; is repeated at your one push. On first repeat, there is no push in &#8216;button_old&#8217;. But &#8216;button_old&#8217; is updated to &#8216;pushed&#8217;. So, reversing &#8216;button&#8217; task can not work on second repeat.<\/p>\n<p>Could it be worked ? Yes there are wrong reactions sometimes.<\/p>\n<p>This is what you call &#8216;chattering&#8217;.<\/p>\n<\/div>\n<div id=\"chap_1\">\n<h2 class=\"h2_HLine mtm mbs\"><span class=\"ez-toc-section\" id=\"Chattering\"><\/span>Chattering<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-507 alignright\" src=\"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/chattering_anim.gif\" alt=\"chattering_anim\" width=\"300\" height=\"300\" \/><\/p>\n<p>A switch is very simple mechanism. It&#8217;s have two contact for electro and are energized by push.<\/p>\n<p>But it is bouncing after pushing or release at very short moment. This is like a phenomenon that let it fall a ball on the ground. It occurs under 100 millisecond. But Arduino resonse is so fast that tell the difference between bouncing.<\/p>\n<p>In short, &#8216;chattering&#8217; is a physical problem.<\/p>\n<\/div>\n<div id=\"chap_2\">\n<h2 class=\"h2_HLine mtm mbs\"><span class=\"ez-toc-section\" id=\"Well_known_methods\"><\/span>Well known methods<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>There are no &#8216;chattering&#8217; on your electronic products. Because they have took a countermeasure in advance for their product. You can see many methods for avoiding from &#8216;chattering&#8217; on Web.<\/p>\n<ul class=\"ls_algn\">\n<li><strong><strong>Electricity storage methods by condenser circuit.<\/strong><\/strong><\/li>\n<li><strong><strong>Schmitt trigger circuit by electronic parts.<\/strong><\/strong><\/li>\n<\/ul>\n<p>These are basic way to avoid from &#8216;chattering&#8217;. Also there are several ways to avoid by programming.<\/p>\n<ul class=\"ls_algn\">\n<li><strong><strong>Take a few &#8216;delay&#8217; after reading pins.<\/strong><\/strong><\/li>\n<li><strong><strong>Take samplings for several value of readings, and analyze the values.<\/strong><\/strong><\/li>\n<\/ul>\n<p>There are so many different ways for avoiding from &#8216;chattering&#8217; by detail. Please check them out at yourself.<\/p>\n<\/div>\n<div id=\"chap_3\">\n<h2 class=\"h2_HLine mtm mbs\"><span class=\"ez-toc-section\" id=\"To_avoid_from_%E2%80%98chattering_by_a_programming\"><\/span>To avoid from &#8216;chattering&#8217; by a programming<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 class=\"dot_rbox mts mbs\"><span class=\"ez-toc-section\" id=\"Typical_way\"><\/span>Typical way<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Before my theory, I show you\u00a0a typical example to avoid from &#8216;chattering&#8217; by using &#8216;delay&#8217;.<\/p>\n<pre class=\"lang:default mark:19 decode:true\" title=\"usual chattering avoidance\">#define LED 6\r\n#define SW  4\r\nboolean button = 0;\r\n\r\nvoid setup() {\r\n  pinMode(LED, OUTPUT);\r\n  pinMode(SW, INPUT_PULLUP);\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop() {\r\n\r\n  if (!digitalRead(SW))\r\n  {\r\n    button = !button;\r\n    Serial.println(button);\r\n  }\r\n  digitalWrite(LED, button);\r\n  delay(100);\r\n}<\/pre>\n<p>Arduino waits for a while after &#8216;digitalRead&#8217;. So, Arduino never encounters to the &#8216;chattering&#8217;. Some people uses interrupt timer, because it stops all task.<\/p>\n<p>But those methods can judge only in certain duration pushing. They cannot tell fastest finger move. I wanted to that. But I dislike to calculate on electronic circuit.<\/p>\n<p>I had a trial and error. Then I got a idea.<\/p>\n<h3 class=\"dot_rbox mtm mbs\"><span class=\"ez-toc-section\" id=\"%E2%80%9CJudging_by_gauge%E2%80%9D_methods\"><\/span>&#8220;Judging by gauge&#8221; methods<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"mtm mbl\"><em>I wrote <a href=\"https:\/\/jumbleat.com\/2017\/06\/26\/bye-bye_chattering_seriously_library\/\" target=\"_blank\" rel=\"noopener\">a chattering-less switch library<\/a> with &#8220;gauging&#8221; method.<br \/>\n (26.6.2017)<\/em><\/p>\n<p>I was inspired by a avoidance of condenser circuit.\u00a0The circuit is using storage effect of condenser.<\/p>\n<p>&#8220;It may work, if I reproduce the same thing on programming\u00a0?&#8221;<\/p>\n<p>This is a sketch of the idea.<\/p>\n<pre class=\"lang:default decode:true\" title=\"chatterless sketch by Gauge method\">#define LED 6\r\n#define SW  4\r\nboolean button = 0;\r\n\r\n#define PUSH_SHORT 100\r\n\r\nvoid setup() {\r\n  pinMode(LED, OUTPUT);\r\n  pinMode(SW, INPUT_PULLUP);\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop() {\r\n  unsigned long gauge = 0;\r\n\r\n  while (!digitalRead(SW))\r\n  {\r\n    gauge++;\r\n  }\r\n\r\n  if (gauge &gt; PUSH_SHORT)\r\n  {\r\n    button = !button;\r\n    Serial.print(button);\r\n    Serial.print(\":\");\r\n    Serial.println(gauge);\r\n  }\r\n  digitalWrite(LED, button);\r\n}<\/pre>\n<p>If there is a digital signal in pin 4, Arduino keep counting. If pin 4 has released, then it judge the gauge value. If gauge value reaches &#8216;PUSH_SHORT&#8217;, it becomes &#8216;push&#8217;.<\/p>\n<p>I think this works very well in spite of simplicity.\u00a0This sketch means &#8220;I count anyway, but I never admit it has pushed unless over the &#8216;push_short&#8221;. So, Arduino ignores &#8216;chattering&#8217; which is small count.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-514\" src=\"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/gauge_monitor_1.jpg\" alt=\"gauge_monitor_1\" width=\"908\" height=\"468\" srcset=\"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/gauge_monitor_1.jpg 908w, https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/gauge_monitor_1-300x155.jpg 300w, https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/gauge_monitor_1-768x396.jpg 768w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/p>\n<p>These are certified count values on Serial monitor by Arduino. I pushed a switch so fast, but these values are too large for Arduino. This values prove how human moves slow, to computers.<\/p>\n<p>By the way, you might have been noticed already to another merit.<\/p>\n<p><span style=\"font-size: 115%;\"><strong>You can tell long &#8216;push&#8217; by this methods.<\/strong><\/span><\/p>\n<pre class=\"lang:default mark:6,28-33 decode:true\" title=\"chatterless sketch by Gauge method 2\">#define LED 6\r\n#define SW  4\r\nboolean button = 0;\r\n\r\n#define PUSH_SHORT 100\r\n#define PUSH_LONG  140000\r\n\r\nvoid setup() {\r\n  pinMode(LED, OUTPUT);\r\n  pinMode(SW, INPUT_PULLUP);\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop() {\r\n  unsigned long gauge = 0;\r\n\r\n  while (!digitalRead(SW))\r\n  {\r\n    gauge++;\r\n  }\r\n\r\n  if (gauge &gt; PUSH_SHORT)\r\n  {\r\n    button = !button;\r\n    Serial.print(button);\r\n    Serial.print(\":\");\r\n    Serial.print(gauge);\r\n    if (gauge &gt; PUSH_LONG)\r\n    {\r\n      Serial.print(\"  LONG!\");\r\n    }else{\r\n      Serial.print(\"  SHORT!\");\r\n    }\r\n    Serial.println();\r\n  }\r\n  digitalWrite(LED, button);\r\n}<\/pre>\n<p>By define value of &#8216;LONG_PUSH&#8217;, it can take different action. I think it&#8217;s gonna be a hard sketch to tell a long &#8216;push&#8217; in ordinary ways. But in this methods, just set a &#8216;PUSH_LONG&#8217; value.<\/p>\n<p>It&#8217;s very simple and practical. But there are few cautions.<\/p>\n<ul class=\"ls_sml ls_algn\">\n<li>&#8216;Gauge&#8217; is not time counting, so its counting depends on microchips speed.\u00a0You need to tuning for each machine.<\/li>\n<li>In this example, Arduino can do nothing but count. He can know &#8216;push&#8217; after switch has released. If you want to do several task on the same time, you need another scheme on your sketch.<\/li>\n<\/ul>\n<p>Well, I introduced my unique way for a switch. And I have already used this methods on my DIY follow focus project <a href=\"https:\/\/jumbleat.com\/ar-focus\/\">&#8216;AR-FOCUS&#8217;<\/a>.\u00a0Off course, it has worked well, so far. Please check this out.<\/p>\n<p>There is <a href=\"https:\/\/jumbleat.com\/2016\/12\/01\/revision_of_avoiding_chatter\/\">new article<\/a> about this &#8216;gauging method&#8217;.<\/p>\n<p class=\"mtl mbn\">Finally, I introduce to you a small game sketch using this methods.<\/p>\n<\/div>\n<div id=\"chap_4\">\n<h2 class=\"h2_HLine mtn mbs\"><span class=\"ez-toc-section\" id=\"SHOOTER_%E2%80%98push_it_fast\"><\/span>SHOOTER &#8216;push it fast&#8217;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In japan, there was a famous game &#8216;sh-watch&#8217; once upon a time. This game counts how many times you pushed switches in ten seconds. I thought this gauging methods can reproduce the game easily.\u00a0So I did. All you need is\u00a0a switch and LED.<\/p>\n<p>How to play<\/p>\n<p>Push switch. Then it counts three and start game. This game compete how many times you can push the button in 10 seconds. You can see result and dialogs on Serial monitor of your Arduino IDE.<\/p>\n<p>If response of your switch is not good. to comment out 44 line. Because &#8220;Serial.print&#8221; has a delay.<\/p>\n<p>well, please enjoy it!<\/p>\n<pre class=\"lang:default decode:true \" title=\"Arduino shooting watch\">#define LED 6\r\n#define SW  4\r\n#define PUSH_SHORT 500\r\n\r\n\r\nvoid setup() {\r\n  pinMode(LED, OUTPUT);\r\n  pinMode(SW , INPUT_PULLUP);\r\n  Serial.begin(9600);\r\n  delay(100);\r\n  Serial.println(\"Shooting Watch GAME   ver 1.0\");\r\n}\r\n\r\nvoid loop() {\r\n  unsigned long time_to_go = millis();\r\n\r\n  \/\/start game if button is pushed\r\n  if (BUTTON())\r\n  {\r\n    Serial.print(\"Ready?\");\r\n\r\n    \/\/ 3 seconds pre-roll\r\n    for (byte i = 0 ; i &lt; 3 ; i++)\r\n    {\r\n      time_to_go = millis();\r\n      Serial.print(\".\");\r\n      while ((millis() - time_to_go) &lt;= 200) digitalWrite(LED, HIGH);\r\n      while ((millis() - time_to_go) &lt;= 800) digitalWrite(LED, LOW);\r\n    }\r\n\r\n    \/\/start\r\n    Serial.println(\"GO!!!\");\r\n    int count = 0;\r\n    unsigned long time_to_led;\r\n    time_to_go = millis();\r\n    digitalWrite(LED, HIGH);\r\n\r\n    \/\/counting\r\n    while ((millis() - time_to_go) &lt; (10 * 1000))\r\n    {\r\n      if (BUTTON())\r\n      {\r\n        count++;\r\n        Serial.println(count); \/\/ comment out here if you want precise counting\r\n        digitalWrite(LED, LOW);\r\n        time_to_led = millis();\r\n      }\r\n      if ((millis() - time_to_led) &gt;= 10) digitalWrite(LED, HIGH);\r\n    }\r\n\r\n    \/\/finish and judge\r\n    digitalWrite(LED, LOW);\r\n\r\n    Serial.println();\r\n    delay(500);\r\n    Serial.print(\"your record: \");\r\n    Serial.print(count \/ 10.0);\r\n    Serial.println(\" per sec\");\r\n    delay(500);\r\n    if (count &gt;= 160) Serial.print(\"Awesome!!!\");\r\n    else if (count &gt;= 110) Serial.print(\"Good job!\");\r\n    else if (count &gt;= 60) Serial.print(\"Try again...\");\r\n    Serial.println();\r\n    delay(1000);\r\n  }\r\n\r\n}\r\n\r\n\r\nboolean BUTTON() {\r\n  long gauge = 0;\r\n\r\n  while (!digitalRead(SW)) gauge++;\r\n\r\n  if (gauge &gt; PUSH_SHORT) return true;\r\n  else return false;\r\n}<\/pre>\n<\/div>\n<div id=\"epilog\"><\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Sorry, this entry is only available in \u65e5\u672c\u8a9e. For the sake of viewer convenience, the content is shown below in  &hellip; <a href=\"https:\/\/jumbleat.com\/en\/2016\/08\/19\/switch_without_chatter\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Avoiding from chattering by a programming<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":526,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5,8],"tags":[30,29,32,28,33,31,359,360,34],"class_list":["post-498","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-electric","tag-chattering","tag-switch","tag-tips","tag-28","tag-33","tag-31","tag-359","tag-360","tag-34"],"jetpack_featured_media_url":"https:\/\/jumbleat.com\/wp-content\/uploads\/2016\/08\/1608_sw_chatt_e_catch.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7JALB-82","jetpack_likes_enabled":false,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/posts\/498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/comments?post=498"}],"version-history":[{"count":4,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/posts\/498\/revisions"}],"predecessor-version":[{"id":7118,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/posts\/498\/revisions\/7118"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/media\/526"}],"wp:attachment":[{"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/media?parent=498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/categories?post=498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jumbleat.com\/en\/wp-json\/wp\/v2\/tags?post=498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}