{"id":1266,"date":"2015-06-10T23:36:36","date_gmt":"2015-06-10T22:36:36","guid":{"rendered":"http:\/\/www.analysir.com\/blog\/?p=1266"},"modified":"2016-05-08T20:04:51","modified_gmt":"2016-05-08T19:04:51","slug":"simple-infrared-pwm-on-arduino-part-2-raw-ir-signals","status":"publish","type":"post","link":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/","title":{"rendered":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals"},"content":{"rendered":"<p>In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals &#8211; specifically a RAW NEC signal and a longer RAW Mitsubishi Air Conditioner signal. We have also improved the method shown in <strong><a href=\"https:\/\/www.analysir.com\/blog\/2015\/05\/12\/simple-infrared-pwm-on-arduino\/\" target=\"_blank\">Part 1<\/a> <\/strong>due to some issues we identified when sending &#8216;real&#8217; signals versus the &#8216;test&#8217; signal we used before. <em>(More on that later)<\/em>. In <strong><a href=\"https:\/\/www.analysir.com\/blog\/2015\/09\/01\/simple-infrared-pwm-on-arduino-part-3-hex-ir-signals\/\" target=\"_blank\">Part 3<\/a><\/strong>, we will take the signals from this post and show how to send them using their binary (or Hex) representation, which saves lots of SRAM.<\/p>\n<figure id=\"attachment_1276\" aria-describedby=\"caption-attachment-1276\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg\" target=\"_blank\" rel=\"attachment wp-att-1276\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1276 size-large\" src=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg\" alt=\"Original NEC 32-bit and Mitsubishi 88-bit Signals displayed using AnalysIR\" width=\"604\" height=\"341\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg 1024w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-300x169.jpg 300w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg 1360w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-1276\" class=\"wp-caption-text\">Original NEC 32-bit and Mitsubishi 88-bit Signals displayed using AnalysIR<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<p>The image above shows the 2 signals we will be using. The first is an NEC 32 bit signal from an LG TV, and includes one repeat header. The second is a signal from a Mitsubishi Air Conditioner with 88 bits of data.<\/p>\n<p><strong>Rationale<\/strong><br \/>\nThe reason for publishing this series includes:<\/p>\n<ul>\n<li>Providing a learning opportunity for those interested in IR remote control on Arduinos and other MCUs.<\/li>\n<li>Demonstrates a mechanism to send IR signals, without using off-the-shelf libraries which often use up valuable resources and peripherals on the Arduino. For example, many of the support requests on the Arduino forum, relating to IR remote control, are due to timer pin conflicts between libraries. Using this method you can use any available digital or analogue pin, without using any additional Timers or peripherals.<\/li>\n<li>Although, we would always recommend using IRremote or IRLib wherever possible, the methods shown is this series offer yet another option for makers and hobbyists.<\/li>\n<li>This series of posts is targeted at makers and hobbyists. Experienced or professional user, will likely already be familiar with this or better approaches.<\/li>\n<li>We will post a link to the complete Arduino sketch at the bottom of this post.<\/li>\n<\/ul>\n<p><strong>Definitions Setup<\/strong><br \/>\nBoth definitions and Setup remain largely the same as in Part 1. However, we have now defined the 2 RAW signals in buffers as below:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">unsigned long sigTime = 0; \/\/use in mark &amp; space functions to keep track of time\r\n\r\n\/\/RAW NEC signal -32 bit with 1 repeat - make sure buffer starts with a Mark\r\nunsigned int NEC_RAW&#x5B;] = {9000, 4500, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 39980, 9000, 2232, 560}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n\r\n\/\/RAW Mitsubishi 88 bit signal - make sure buffer starts with a Mark\r\nunsigned int Mitsubishi_RAW&#x5B;] = {3172, 1586, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 1182, 394, 1182, 394, 394, 394, 1182, 394, 394, 394, 1182, 394, 1182, 394, 1182, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1182, 394, 1182, 394, 394, 394, 1182, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 1182, 394, 394, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1182, 394, 394, 394, 394, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 1182, 394, 394, 394, 1182, 394, 1182, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1182, 394, 394, 394}; \/\/AnalysIR Batch Export (IRremote) - RAW<\/pre>\n<p>You should now get a sense that storing signals in buffers can result in running out of SRAM quickly, which is why we will show a better approach in Part 3. Both of these signals were recorded with AnalysIR and automatically exported in the C language format above. You will also notice the sigTime variable defined. SigTime is used, in the mark space functions described below, to keep a track of elapsed time throughout the signal and greatly improved the fidelity of the transmitted signal.<\/p>\n<p><strong>Loop<\/strong><br \/>\nFor demonstration purposes, we continually send the 2 IR signals with a 5 second gap in-between each one. The first one is an NEC signal from an LG TV and the second a Mitsubishi AC signal.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">void loop() {\r\n\/\/First send the NEC RAW signal above\r\nsigTime = micros();\r\nfor (int i = 0; i &lt; sizeof(NEC_RAW) \/ sizeof(NEC_RAW&#x5B;0]); i++) {\r\n    mark(NEC_RAW&#x5B;i++]);\r\n    if (i &lt; sizeof(NEC_RAW) \/ sizeof(NEC_RAW&#x5B;0])) space(NEC_RAW&#x5B;i]);\r\n}\r\ndelay(5000);\r\n\r\n\/\/Next send the Mitsubishi AC RAW signal above\r\nsigTime = micros(); \/\/keeps rolling track of signal time to avoid impact of loop &amp; code execution delays\r\nfor (int i = 0; i &lt; sizeof(Mitsubishi_RAW) \/ sizeof(Mitsubishi_RAW&#x5B;0]); i++) {\r\n    mark(Mitsubishi_RAW&#x5B;i++]);\r\n    if (i &lt; sizeof(Mitsubishi_RAW) \/ sizeof(Mitsubishi_RAW&#x5B;0])) space(Mitsubishi_RAW&#x5B;i]);\r\n}\r\ndelay(5000);\r\n}<\/pre>\n<p>Both signals use the same format for sending. We just iterate through the buffer and use the mark space functions to send the signal. Before we start sending a signal, we reset &#8216;sigTime&#8217; to the starting time of the signal, so we can use accurate timing for each mark or space instead of the less accurate approach shown in Part 1 (elapsed time + code delays). This new approach effectively eliminates any delays introduced by code execution time, as we send the signal.<\/p>\n<p><strong>Mark<\/strong><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">void mark(unsigned int mLen) { \/\/uses sigTime as end parameter\r\n  sigTime+= mLen; \/\/mark ends at new sigTime\r\n  unsigned long now = micros();\r\n  unsigned long dur = sigTime - now; \/\/allows for rolling time adjustment due to code execution delays\r\n  if (dur == 0) return;\r\n  while ((micros() - now) &lt; dur) { \/\/just wait here until time is up\r\n    digitalWrite(txPinIR, HIGH);\r\n    delayMicroseconds(HIGHTIME - 5);\r\n    digitalWrite(txPinIR, LOW);\r\n    delayMicroseconds(LOWTIME - 6);\r\n  }\r\n}<\/pre>\n<p>This method for sending a mark is very similar to that introduced in Part 1. Here we add mLen to sigTime to get the end time for the mark. By continually taking this approach we essentially, eliminate any additional delays (as in Part 1 approach) due to:<\/p>\n<ul>\n<li>Calling and returning from the mark function<\/li>\n<li>while loop overheads<\/li>\n<li>the remaining code in the mark function<\/li>\n<\/ul>\n<p>The reason for introducing this new approach in Part 2, is because when reviewing the signal using the approach from Part 1, we noticed that the 9000 uSec header mark of the NEC signal was being sent as a 9,380 uSec mark. That&#8217;s a whopping 380 uSecs overhead &#8211; enough to turn the signal into a bad NEC signal. In contrast, the new approach presented in this Part 2 delivers an almost perfect signal every time.<br \/>\n<strong>Space<\/strong><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">void space(unsigned int sLen) { \/\/uses sigTime as end parameter\r\n  sigTime+= sLen; \/\/space ends at new sigTime\r\n  unsigned long now = micros();\r\n  unsigned long dur = sigTime - now; \/\/allows for rolling time adjustment due to code execution delays\r\n  if (dur == 0) return;\r\n  while ((micros() - now) &lt; dur) ; \/\/just wait here until time is up\r\n}\r\n<\/pre>\n<p>To maintain consistency with the new mark function above and eliminate any code execution overheads, the new space function operates almost identically to the mark function. The only exception is that we do not need to generate any carrier for the space.<\/p>\n<p><strong>Example Images<\/strong><\/p>\n<figure id=\"attachment_1277\" aria-describedby=\"caption-attachment-1277\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-NEC-LG-TV-Signals.jpg\" target=\"_blank\" rel=\"attachment wp-att-1277\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1277 size-large\" src=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-NEC-LG-TV-Signals-1024x578.jpg\" alt=\"Original and re-transmitted NEC 32-bit signals\" width=\"604\" height=\"341\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-NEC-LG-TV-Signals-1024x578.jpg 1024w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-NEC-LG-TV-Signals-300x169.jpg 300w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-NEC-LG-TV-Signals.jpg 1360w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-1277\" class=\"wp-caption-text\">Original and re-transmitted NEC 32-bit signals as captured by AnalysIR<\/figcaption><\/figure>\n<figure id=\"attachment_1275\" aria-describedby=\"caption-attachment-1275\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-Mitsubishi-Aircon-Signals.jpg\" target=\"_blank\" rel=\"attachment wp-att-1275\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1275 size-large\" src=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-Mitsubishi-Aircon-Signals-1024x578.jpg\" alt=\"Original and re-transmitted Mitsubishi 88-bit signals\" width=\"604\" height=\"341\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-Mitsubishi-Aircon-Signals-1024x578.jpg 1024w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-Mitsubishi-Aircon-Signals-300x169.jpg 300w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Both-Mitsubishi-Aircon-Signals.jpg 1360w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-1275\" class=\"wp-caption-text\">Original and re-transmitted Mitsubishi 88-bit signals as captured by AnalysIR<\/figcaption><\/figure>\n<p><strong>Conclusion &#8211; Part 2 of 3<\/strong><br \/>\nIn this part we have taken real world signals and played them back using the code above and recorded that signal using AnalysIR. The images above are screenshots of the actual signal recorded using AnalysIR. A valuable lesson learned from part one, is that using &#8216;test&#8217; signals did not expose a weakness in the approach and this became very clear when using real-world captured signals. The slight overall timing differences visible in the screenshots above, may be accounted for by the clocks (crystals) on the emitter (Arduino) and IR recording device and is not material.<\/p>\n<p>Part 3 will show how to send the same NEC Mitsubishi Infrared signals from the binary or HEX value.<\/p>\n<p>What about other MCU platforms? This same method will work on any platform, with only a few minor adjustments.<\/p>\n<p>The complete source code for the sketch can be downloaded here:<br \/>\n<strong><a href=\"https:\/\/www.analysir.com\/blog\/?attachment_id=1283\" target=\"_blank\">Simple_infrared_PWM_Send_RAW.ino<\/a><\/strong> <em>(has some minor modifications to work on Photon)<\/em><\/p>\n<p><strong>Update for Photon<\/strong><br \/>\nWe have also included a sketch version for the Photon here:<br \/>\n<strong><a href=\"https:\/\/www.analysir.com\/blog\/?attachment_id=1314\" target=\"_blank\">Photon Version of this sketch<\/a><\/strong><\/p>\n<p><em>Please feel free to use the code in this blog post without restriction. If you gain any benefit please link back to this article credit the Author where possible.<\/em><\/p>\n<p><strong>Part 1 of this 3 part series can be<\/strong><strong><a href=\"https:\/\/www.analysir.com\/blog\/2015\/05\/12\/simple-infrared-pwm-on-arduino\/\" target=\"_blank\"> found here.<br \/>\n<\/a>Part 3 of this 3 part series can be<\/strong><strong><a href=\"https:\/\/www.analysir.com\/blog\/2015\/09\/01\/simple-infrared-pwm-on-arduino-part-3-hex-ir-signals\/\" target=\"_blank\"> found here<\/a>.<\/strong><a href=\"https:\/\/www.analysir.com\/blog\/2015\/05\/12\/simple-infrared-pwm-on-arduino\/\" target=\"_blank\"><br \/>\n<\/a><\/p>\n<p style=\"text-align: right;\"><strong><a href=\"https:\/\/www.analysir.com\/blog\/get-analysir\/\" target=\"_blank\">Get your own copy of AnalysIR here.<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals &#8211; specifically a RAW NEC signal and a longer RAW Mitsubishi Air Conditioner signal. We have also improved the method shown in Part 1 due &hellip; <a href=\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Simple Infrared PWM on Arduino, Part 2- RAW IR Signals<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,10],"tags":[197,4,285,7,97,6,5,268,85,8],"class_list":["post-1266","post","type-post","status-publish","format-standard","hentry","category-analysir-blog","category-arduino","tag-air-conditioner","tag-analysir","tag-arduino","tag-infrared","tag-ir-signals","tag-irlib","tag-irremote","tag-mitsubishi","tag-nec","tag-tv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog<\/title>\n<meta name=\"description\" content=\"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog\" \/>\n<meta property=\"og:description\" content=\"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\" \/>\n<meta property=\"og:site_name\" content=\"AnalysIR Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/chris.analysir\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/chris.analysir\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-10T22:36:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-05-08T19:04:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg\" \/>\n<meta name=\"author\" content=\"User Two\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AnalysIR\" \/>\n<meta name=\"twitter:site\" content=\"@analysir\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"User Two\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\"},\"author\":{\"name\":\"User Two\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13\"},\"headline\":\"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals\",\"datePublished\":\"2015-06-10T22:36:36+00:00\",\"dateModified\":\"2016-05-08T19:04:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\"},\"wordCount\":1283,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg\",\"keywords\":[\"Air Conditioner\",\"AnalysIR\",\"Arduino\",\"Infrared\",\"IR signals\",\"IRLib\",\"IRremote\",\"Mitsubishi\",\"NEC\",\"TV\"],\"articleSection\":[\"AnalysIR Blog\",\"Arduino\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\",\"url\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\",\"name\":\"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg\",\"datePublished\":\"2015-06-10T22:36:36+00:00\",\"dateModified\":\"2016-05-08T19:04:51+00:00\",\"description\":\"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage\",\"url\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg\",\"contentUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg\",\"width\":1360,\"height\":767,\"caption\":\"Original NEC 32-bit and Mitsubishi 88-bit Signals displayed using AnalysIR\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.analysir.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#website\",\"url\":\"https:\/\/www.analysir.com\/blog\/\",\"name\":\"AnalysIR Blog\",\"description\":\"All about infrared remote control, IR decoding and more\",\"publisher\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.analysir.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\",\"name\":\"AnalysIR\",\"url\":\"https:\/\/www.analysir.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png\",\"contentUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png\",\"width\":200,\"height\":200,\"caption\":\"AnalysIR\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/chris.analysir\",\"https:\/\/x.com\/analysir\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13\",\"name\":\"User Two\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g\",\"caption\":\"User Two\"},\"sameAs\":[\"http:\/\/www.AnalysIR.com\",\"https:\/\/www.facebook.com\/chris.analysir\",\"https:\/\/x.com\/AnalysIR\"],\"url\":\"https:\/\/www.analysir.com\/blog\/author\/analysir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog","description":"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/","og_locale":"en_US","og_type":"article","og_title":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog","og_description":"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.","og_url":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/","og_site_name":"AnalysIR Blog","article_publisher":"https:\/\/www.facebook.com\/chris.analysir","article_author":"https:\/\/www.facebook.com\/chris.analysir","article_published_time":"2015-06-10T22:36:36+00:00","article_modified_time":"2016-05-08T19:04:51+00:00","og_image":[{"url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg","type":"","width":"","height":""}],"author":"User Two","twitter_card":"summary_large_image","twitter_creator":"@AnalysIR","twitter_site":"@analysir","twitter_misc":{"Written by":"User Two","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#article","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/"},"author":{"name":"User Two","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13"},"headline":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals","datePublished":"2015-06-10T22:36:36+00:00","dateModified":"2016-05-08T19:04:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/"},"wordCount":1283,"commentCount":1,"publisher":{"@id":"https:\/\/www.analysir.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage"},"thumbnailUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg","keywords":["Air Conditioner","AnalysIR","Arduino","Infrared","IR signals","IRLib","IRremote","Mitsubishi","NEC","TV"],"articleSection":["AnalysIR Blog","Arduino"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/","url":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/","name":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals - AnalysIR Blog","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage"},"thumbnailUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR-1024x578.jpg","datePublished":"2015-06-10T22:36:36+00:00","dateModified":"2016-05-08T19:04:51+00:00","description":"In Part 1 of this series, we demonstrated how to send signals using simple Infrared PWM on Arduino. In this Part 2 post we look at sending RAW IR signals.","breadcrumb":{"@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#primaryimage","url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg","contentUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/06\/Original-2-Signals-AnalysIR.jpg","width":1360,"height":767,"caption":"Original NEC 32-bit and Mitsubishi 88-bit Signals displayed using AnalysIR"},{"@type":"BreadcrumbList","@id":"https:\/\/www.analysir.com\/blog\/2015\/06\/10\/simple-infrared-pwm-on-arduino-part-2-raw-ir-signals\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.analysir.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Simple Infrared PWM on Arduino, Part 2- RAW IR Signals"}]},{"@type":"WebSite","@id":"https:\/\/www.analysir.com\/blog\/#website","url":"https:\/\/www.analysir.com\/blog\/","name":"AnalysIR Blog","description":"All about infrared remote control, IR decoding and more","publisher":{"@id":"https:\/\/www.analysir.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.analysir.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.analysir.com\/blog\/#organization","name":"AnalysIR","url":"https:\/\/www.analysir.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png","contentUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/AnalysIR_and_IRToy.png","width":200,"height":200,"caption":"AnalysIR"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/chris.analysir","https:\/\/x.com\/analysir"]},{"@type":"Person","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13","name":"User Two","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8167f41ca01c8bf0646f87048aaf9e8f90e7d0b65650c0f8eaaf8002b288d6cb?s=96&d=identicon&r=g","caption":"User Two"},"sameAs":["http:\/\/www.AnalysIR.com","https:\/\/www.facebook.com\/chris.analysir","https:\/\/x.com\/AnalysIR"],"url":"https:\/\/www.analysir.com\/blog\/author\/analysir\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p42zhM-kq","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1515,"url":"https:\/\/www.analysir.com\/blog\/2015\/09\/01\/simple-infrared-pwm-on-arduino-part-3-hex-ir-signals\/","url_meta":{"origin":1266,"position":0},"title":"Simple Infrared PWM on Arduino, Part 3 &#8211; Hex IR Signals","author":"User Two","date":"September 1, 2015","format":false,"excerpt":"In Part 1 of this series, we demonstrated how to send signals using soft or Simple Infrared PWM on Arduino. In our Part 2 post we looked at sending RAW IR signals - specifically a RAW NEC signal and a longer RAW Mitsubishi Air Conditioner signal using soft PWM. We\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"NEC 32 bit IR signal generated using soft PWM on the A.IR shield","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/09\/NEC-Signal.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/09\/NEC-Signal.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/09\/NEC-Signal.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/09\/NEC-Signal.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1226,"url":"https:\/\/www.analysir.com\/blog\/2015\/05\/12\/simple-infrared-pwm-on-arduino\/","url_meta":{"origin":1266,"position":1},"title":"Simple Infrared PWM on Arduino","author":"User Two","date":"May 12, 2015","format":false,"excerpt":"We are often asked on discussion boards, about conflicts between IRremote or IRLib and other Arduino Libraries. In this post, we present a sketch for 'Simple Infrared PWM on Arduino'. This is the first part in a 3 part series of posts. Part 1 shows how to generate the Simple\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"Example 56kHz generated Infrared signal @ 50% duty cycle","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/05\/56kHz-50-percent.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/05\/56kHz-50-percent.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/05\/56kHz-50-percent.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/05\/56kHz-50-percent.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":640,"url":"https:\/\/www.analysir.com\/blog\/2014\/07\/06\/controlling-chigo-air-conditioner-via-infrared-smart-phone\/","url_meta":{"origin":1266,"position":2},"title":"Controlling Chigo Air Conditioner via Infrared from smart phone","author":"User Two","date":"July 6, 2014","format":false,"excerpt":"Anyone who has tried\u00a0 controlling an Air Conditioner unit using an Arduino, USB IR Toy, RPi or any MCU will know how difficult it can be to record the longer infrared signals they use. Typical TV systems use IR signals circa 32 bits long, while this Chigo AC unit uses\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"Samsung IR Remote app","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2014\/07\/SamsungIRremote0-168x300.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1682,"url":"https:\/\/www.analysir.com\/blog\/2015\/10\/12\/backdoor-upwm-hack-on-arduino-for-infrared-signals-using-uart\/","url_meta":{"origin":1266,"position":3},"title":"Backdoor uPWM Hack on Arduino for Infrared signals using UART","author":"User Two","date":"October 12, 2015","format":false,"excerpt":"In this blog post we follow up on our recent article about generation of infrared PWM from the Photon's UART where we suggested that it may be possible to achieve something similar with the Arduino. In our previous attempt the Arduino was only able to generate PWM at 40 kHz\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"Arduino uPWM Circuit Diagram","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/Arduino-uPWM-Circuit.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/Arduino-uPWM-Circuit.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/Arduino-uPWM-Circuit.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1638,"url":"https:\/\/www.analysir.com\/blog\/2015\/10\/02\/backdoor-upwm-hack-on-photon-for-infrared-signals-using-uart\/","url_meta":{"origin":1266,"position":4},"title":"Backdoor uPWM Hack on Photon for Infrared signals using UART","author":"User Two","date":"October 2, 2015","format":false,"excerpt":"Since we received our Photon several months ago it has been difficult to find a working example of Hardware PWM on the Photon. Initially, we ported our softPWM approach to the Photon, which is excellent. However, we figured it must be possible to use at least one of the spare\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"uPWM Circuit diagram for Photon","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/10\/uPWM-Photon-Circuit.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1996,"url":"https:\/\/www.analysir.com\/blog\/2016\/01\/14\/esp8266-nodemcu-infrared-decoding-added-to-analysir\/","url_meta":{"origin":1266,"position":5},"title":"ESP8266 NodeMCU Infrared decoding added to AnalysIR","author":"User Two","date":"January 14, 2016","format":false,"excerpt":"A few months ago a new user to AnalysIR, from Canada, asked us to assist in adding ESP8266 NodeMCU Infrared decoding over WiFi into\u00a0 AnalysIR. We set about making some upgrades to AnalysIR for this and in double quick time he had AnalysIR accepting IR signals from the ESP8266 over\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"AnalysIR supports ESP82266 NodeMCU","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/01\/NodeMCU.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/comments?post=1266"}],"version-history":[{"count":10,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1266\/revisions"}],"predecessor-version":[{"id":2391,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/1266\/revisions\/2391"}],"wp:attachment":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/media?parent=1266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/categories?post=1266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/tags?post=1266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}