{"id":2304,"date":"2016-04-11T23:33:03","date_gmt":"2016-04-11T22:33:03","guid":{"rendered":"https:\/\/www.analysir.com\/blog\/?p=2304"},"modified":"2018-04-12T22:16:19","modified_gmt":"2018-04-12T21:16:19","slug":"sending-long-ac-signals-flash-irremote","status":"publish","type":"post","link":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/","title":{"rendered":"Sending long AC Signals from Flash with IRremote"},"content":{"rendered":"<p style=\"padding-left: 30px;\">One of the most popular projects involving Infrared remote control, is to use an Arduino to control an Air conditioner (AC) system. However, AC signals are usually very long and take up a lot of SRAM on a standard Arduino. Experienced users will go about reverse engineering the AC protocol to make the sketch fit within the 2K Bytes of SRAM. Many hobbyists will struggle, even with the help of tools like <strong><a href=\"https:\/\/www.analysir.com\/blog\/get-analysir\/\" target=\"_blank\" rel=\"noopener\">AnalysIR <\/a><\/strong>to guide them. In this post we cover sending long AC Signals from Flash with<a href=\"https:\/\/github.com\/z3t0\/Arduino-IRremote\" target=\"_blank\" rel=\"noopener\"> IRremote<\/a>. IRremote (along with <a href=\"https:\/\/github.com\/cyborg5\/IRLib\" target=\"_blank\" rel=\"noopener\">IRLib<\/a>) is a popular open-source library for sending and receiving IR remote control signals with Arduino. The demo code covered in this sketch extends our previous <a href=\"https:\/\/github.com\/z3t0\/Arduino-IRremote\/tree\/master\/examples\/IRsendDemo\" target=\"_blank\" rel=\"noopener\">sendRAW example<\/a> by demonstrating how to store many long AC signals in Flash with little or no SRAM overhead.<\/p>\n<figure id=\"attachment_2316\" aria-describedby=\"caption-attachment-2316\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\" rel=\"attachment wp-att-2316\"><img decoding=\"async\" class=\"size-full wp-image-2316\" src=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\" alt=\"AnalysIR screen-shot showing the signals captured from the sendRAW_Flash sketch\" width=\"600\" srcset=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg 1724w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot-300x110.jpg 300w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot-768x282.jpg 768w, https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot-1024x376.jpg 1024w\" sizes=\"(max-width: 1724px) 100vw, 1724px\" \/><\/a><figcaption id=\"caption-attachment-2316\" class=\"wp-caption-text\">AnalysIR screen-shot showing the signals captured from the sendRAW_Flash sketch (click or more detail)<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<p style=\"padding-left: 30px;\">Standard Arduinos (aka Genuinos) typically have 32kB of Flash and 2kB of SRAM and one AC signal can use up all of the available SRAM &#8211; leaving little or no SRAM for the rest of the application. In the example sendRAW sketch (IRremote), it is not possible to compile 2 of these long AC signals with the SRAM available. Our example sketch (sendRAW_Flash) takes a different approach by storing the signals in Flash memory and using some IRremote internals to send the signals direct from Flash, instead of SRAM. This allows storage of many more long\u00a0 AC signals. Of course, experienced users may chose to reverse engineer the AC protocol and write a dedicated sketch that also uses less SRAM and Flash and there are several examples of these approaches to be found by <a href=\"https:\/\/www.analysir.com\/blog\/sitemap\/\" target=\"_blank\" rel=\"noopener\">searching our blog<\/a>.<\/p>\n<blockquote>\n<p style=\"padding-left: 30px;\">Sending long AC Signals from Flash with IRremote<\/p>\n<\/blockquote>\n<p style=\"padding-left: 30px;\">Below we step thru the main components of the example sketch and provide a download link for the complete source code. We plan to submit this example for inclusion in the IRremote library which will complement the sendRAWdemo we contributed previously.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"classic\">#include &lt;IRremote.h&gt;<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"classic\">IRsend irsend;<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"classic\">\/\/Example signals from various Hitachi AC units (very long signals)\r\n const unsigned int AC_irSignal1[] PROGMEM = {3344,1672,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,418,418,1254,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n const unsigned int AC_irSignal2[] PROGMEM = {3344,1672,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n const unsigned int AC_irSignal3[] PROGMEM = {3344,1672,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n const unsigned int AC_irSignal4[] PROGMEM = {3344,1672,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n const unsigned int AC_irSignal5[] PROGMEM = {3344,1672,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,1254,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,418,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,418,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,1254,418,1254,418,1254,418,1254,418,1254,418,1254,418}; \/\/AnalysIR Batch Export (IRremote) - RAW\r\n void setup() {\r\n &amp;nbsp; \/\/insert your own setup code here\r\n }<\/pre>\n<p>We start off by including the IRremote library and creating an irsend instance to use later on. Next we define a number of long AC signals using &#8220;PROGMEM&#8221; and &#8220;const&#8221; to ensure they are stored in flash and not SRAM. For our example we do not need to place any code in the setup function, but most users should place their own setup code here as is normal. As a minimum you should configure your IR send pin as output &amp; LOW. Feel free to change the signal names to suit your application, but remember to change the names everywhere in your sketch. You should be able to fit a large number of signals into FLASH on a standard Arduino and even more on an Arduino Mega 1280\/2560.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvoid loop() {\r\n&amp;nbsp; \/\/replace this with your own code.\r\n&amp;nbsp; while (true){ \/\/loop forever sending the test signals, with 5 second gaps\r\n&amp;nbsp; sendRAW_Flash(AC_irSignal1, sizeof(AC_irSignal1)\/sizeof(int),33); \/\/send AC signal #1 @ 33kHz\r\n&amp;nbsp; delay(5000); \/\/a good idea to have gaps between signals\r\n&amp;nbsp;\r\n&amp;nbsp; sendRAW_Flash(AC_irSignal2, sizeof(AC_irSignal2)\/sizeof(int),36); \/\/send AC signal #2 @ 36kHz\r\n&amp;nbsp; delay(5000); \/\/a good idea to have gaps between signals\r\n&amp;nbsp;\r\n&amp;nbsp; sendRAW_Flash(AC_irSignal3, sizeof(AC_irSignal3)\/sizeof(int),38); \/\/send AC signal #3 @ 38kHz\r\n&amp;nbsp; delay(5000); \/\/a good idea to have gaps between signals\r\n&amp;nbsp;\r\n&amp;nbsp; sendRAW_Flash(AC_irSignal4, sizeof(AC_irSignal4)\/sizeof(int),40); \/\/send AC signal #4 @ 40kHz\r\n&amp;nbsp; delay(5000); \/\/a good idea to have gaps between signals\r\n&amp;nbsp;\r\n&amp;nbsp; sendRAW_Flash(AC_irSignal5, sizeof(AC_irSignal5)\/sizeof(int),56); \/\/send AC signal #3 @ 56kHz\r\n&amp;nbsp; delay(5000); \/\/a good idea to have gaps between signals\r\n&amp;nbsp; }\r\n}\r\n<\/pre>\n<p>Next we see the &#8220;loop&#8221; function where we simply create an endless loop to send each of our 5 example signals directly from flash. You will note how we automatically calculate the size of the signal buffer using the compiler (sizeof). In addition, every signal is sent at different carrier frequencies representing each of the standard IR frequencies &#8211; i.e. 30, 33, 36, 38, 40 &amp; 56 kHz. Individual signals are sent using our &#8220;sendRAW_Flash&#8221; function call, which passes the signal buffer, the signal length and carrier frequency as parameters. Users should replace our example code and signals with their own. Tip: you can use AnalysIR to record longer signals than can be recorded with libraries. You will also find an <a href=\"https:\/\/www.analysir.com\/blog\/2014\/03\/19\/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino\/\" target=\"_blank\" rel=\"noopener\">example sketch on our blog which records longer AC signals <\/a>more accurately.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nvoid sendRAW_Flash(const unsigned int * signalArray, unsigned int signalLength, unsigned char carrierFreq) {\r\n\r\n&amp;nbsp; irsend.enableIROut(carrierFreq); \/\/initialise the carrier frequency for each signal to be sent\r\n&amp;nbsp;\r\n&amp;nbsp; for (unsigned int i=0;i\r\n&amp;nbsp;&amp;nbsp;\u00a0 if (i &amp; 1) irsend.space(pgm_read_word_near(&amp;signalArray&#x5B;i]));\r\n&amp;nbsp;&amp;nbsp;\u00a0 else irsend.mark(pgm_read_word_near(&amp;signalArray&#x5B;i]));\r\n&amp;nbsp; }\r\n&amp;nbsp; irsend.space(1);\/\/make sure IR is turned off at end of signal\r\n\r\n}\r\n<\/pre>\n<p>Finally, we see the &#8220;sendRAW_Flash&#8221; function call. First we set the carrier frequency for transmission using the IRremote function &#8220;irsend.enableIROut&#8221;. Then we iterate through the signal buffer in flash and send the individual marks and spaces using the internal IRremote functions for mark &amp; space. You will also note the use of the special functions to read directly from Flash (aka PROGMEM). If you are not familiar with these you can search online for details. Finally we send a space of 1 microsecond duration to\u00a0 ensure the IR carrier is turned off at the end of the signal.<\/p>\n<p>The code above is essentially a very simple sketch which makes use of existing libraries and functions to deliver impressive benefits by saving users valuable SRAM in their sketches. Although the motivation for writing this sketch was primarily for AC signals, it could be used for TV style IR protocols or protocols that are not directly supported by IRremote.<\/p>\n<p>If you are unsure of which pin is the output pin for your IR LED then we suggest a search online or use our <strong><a href=\"https:\/\/www.analysir.com\/blog\/irforum\/\" target=\"_blank\" rel=\"noopener\">IRforum <\/a><\/strong>for assistance.<\/p>\n<h2>Download the sketch<\/h2>\n<p><strong><a href=\"https:\/\/www.analysir.com\/blog\/sendraw_flash-ino\/\" target=\"_blank\" rel=\"noopener\">You can download the full source code for the sketch by clicking here.<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the most popular projects involving Infrared remote control, is to use an Arduino to control an Air conditioner (AC) system. However, AC signals are usually very long and take up a lot of SRAM on a standard Arduino. Experienced users will go about reverse engineering the AC protocol to make the sketch fit &hellip; <a href=\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Sending long AC Signals from Flash with IRremote<\/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,15],"tags":[197,198,4,285,272,338,7,33,97,6,5,9],"class_list":["post-2304","post","type-post","status-publish","format-standard","hentry","category-analysir-blog","category-arduino","category-analysir-ir-infrared-projects","tag-air-conditioner","tag-aircon","tag-analysir","tag-arduino","tag-carrier-frequency","tag-flash","tag-infrared","tag-ir","tag-ir-signals","tag-irlib","tag-irremote","tag-remote-control"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sending long AC Signals from Flash with IRremote - AnalysIR Blog<\/title>\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\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sending long AC Signals from Flash with IRremote - AnalysIR Blog\" \/>\n<meta property=\"og:description\" content=\"One of the most popular projects involving Infrared remote control, is to use an Arduino to control an Air conditioner (AC) system. However, AC signals are usually very long and take up a lot of SRAM on a standard Arduino. Experienced users will go about reverse engineering the AC protocol to make the sketch fit &hellip; Continue reading Sending long AC Signals from Flash with IRremote &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\" \/>\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=\"2016-04-11T22:33:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-12T21:16:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.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\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\"},\"author\":{\"name\":\"User Two\",\"@id\":\"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13\"},\"headline\":\"Sending long AC Signals from Flash with IRremote\",\"datePublished\":\"2016-04-11T22:33:03+00:00\",\"dateModified\":\"2018-04-12T21:16:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\"},\"wordCount\":1061,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\",\"keywords\":[\"Air Conditioner\",\"AirCon\",\"AnalysIR\",\"Arduino\",\"Carrier frequency\",\"Flash\",\"Infrared\",\"IR\",\"IR signals\",\"IRLib\",\"IRremote\",\"Remote control\"],\"articleSection\":[\"AnalysIR Blog\",\"Arduino\",\"Projects\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\",\"url\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\",\"name\":\"Sending long AC Signals from Flash with IRremote - AnalysIR Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\",\"datePublished\":\"2016-04-11T22:33:03+00:00\",\"dateModified\":\"2018-04-12T21:16:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage\",\"url\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\",\"contentUrl\":\"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg\",\"width\":1724,\"height\":633,\"caption\":\"AnalysIR screen-shot showing the signals captured from the sendRAW_Flash sketch\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.analysir.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sending long AC Signals from Flash with IRremote\"}]},{\"@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":"Sending long AC Signals from Flash with IRremote - AnalysIR Blog","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\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/","og_locale":"en_US","og_type":"article","og_title":"Sending long AC Signals from Flash with IRremote - AnalysIR Blog","og_description":"One of the most popular projects involving Infrared remote control, is to use an Arduino to control an Air conditioner (AC) system. However, AC signals are usually very long and take up a lot of SRAM on a standard Arduino. Experienced users will go about reverse engineering the AC protocol to make the sketch fit &hellip; Continue reading Sending long AC Signals from Flash with IRremote &rarr;","og_url":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/","og_site_name":"AnalysIR Blog","article_publisher":"https:\/\/www.facebook.com\/chris.analysir","article_author":"https:\/\/www.facebook.com\/chris.analysir","article_published_time":"2016-04-11T22:33:03+00:00","article_modified_time":"2018-04-12T21:16:19+00:00","og_image":[{"url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.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\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#article","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/"},"author":{"name":"User Two","@id":"https:\/\/www.analysir.com\/blog\/#\/schema\/person\/16a6d94c57d4f2629096ab80a7b36e13"},"headline":"Sending long AC Signals from Flash with IRremote","datePublished":"2016-04-11T22:33:03+00:00","dateModified":"2018-04-12T21:16:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/"},"wordCount":1061,"commentCount":0,"publisher":{"@id":"https:\/\/www.analysir.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage"},"thumbnailUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg","keywords":["Air Conditioner","AirCon","AnalysIR","Arduino","Carrier frequency","Flash","Infrared","IR","IR signals","IRLib","IRremote","Remote control"],"articleSection":["AnalysIR Blog","Arduino","Projects"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/","url":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/","name":"Sending long AC Signals from Flash with IRremote - AnalysIR Blog","isPartOf":{"@id":"https:\/\/www.analysir.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage"},"image":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage"},"thumbnailUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg","datePublished":"2016-04-11T22:33:03+00:00","dateModified":"2018-04-12T21:16:19+00:00","breadcrumb":{"@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#primaryimage","url":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg","contentUrl":"https:\/\/www.analysir.com\/blog\/wp-content\/uploads\/2016\/04\/HitachiAC296_AnalysIR_Screenshot.jpg","width":1724,"height":633,"caption":"AnalysIR screen-shot showing the signals captured from the sendRAW_Flash sketch"},{"@type":"BreadcrumbList","@id":"https:\/\/www.analysir.com\/blog\/2016\/04\/11\/sending-long-ac-signals-flash-irremote\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.analysir.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Sending long AC Signals from Flash with IRremote"}]},{"@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-Ba","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":507,"url":"https:\/\/www.analysir.com\/blog\/2014\/03\/19\/air-conditioners-problems-recording-long-infrared-remote-control-signals-arduino\/","url_meta":{"origin":2304,"position":0},"title":"Air Conditioners: Recording long Infrared Remote control signals with Arduino","author":"User Two","date":"March 19, 2014","format":false,"excerpt":"hRecently we have been helping several members on the Arduino forum to record and playback their remote control signals from their Air Conditioners. These signals are typically much longer than those of TVs or common media devices. The 2 most popular libraries for Arduino, IRremote & IRlib are excellent, but\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2014\/03\/airconremote.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2014\/03\/airconremote.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2014\/03\/airconremote.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":640,"url":"https:\/\/www.analysir.com\/blog\/2014\/07\/06\/controlling-chigo-air-conditioner-via-infrared-smart-phone\/","url_meta":{"origin":2304,"position":1},"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":455,"url":"https:\/\/www.analysir.com\/blog\/2014\/03\/05\/arduino-10-common-pitfalls-infrared-remote-control\/","url_meta":{"origin":2304,"position":2},"title":"Arduino: 10 common pitfalls with Infrared Remote Control","author":"User Two","date":"March 5, 2014","format":false,"excerpt":"Over the last few months we have been regular contributors to the Arduino and other forums, answering questions about Infrared remote control projects. It became apparent that beginners typically trip up on many common 'pitfalls'. So we decided to list off our 'Top 10'. \u00a0 (Note a PDF of this\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: 10 common pitfalls with Infrared Remote Control","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2014\/03\/VideoThumbnail-300x168.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":4598,"url":"https:\/\/www.analysir.com\/blog\/2019\/05\/09\/ir-signal-plotter-for-irremote-arduino\/","url_meta":{"origin":2304,"position":3},"title":"IR Signal Plotter for IRremote &#038; Arduino","author":"AnalysIR","date":"May 9, 2019","format":false,"excerpt":"We are delighted to present here a new sketch which implements a basic IR Signal plotter for IRremote. The sketch runs on and Arduino and makes use of the Serial Plotter of the Arduino IDE. Although there is no comparison to our powerful AnalysIR application, it may provide useful for\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"Screenshot of IR Signal Plotter for IRremote","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":4732,"url":"https:\/\/www.analysir.com\/blog\/2019\/07\/06\/kontrolir-the-first-arduino-compatible-ir-remote-control\/","url_meta":{"origin":2304,"position":4},"title":"KontroLIR &#8211; the first  Arduino compatible IR remote control","author":"AnalysIR","date":"July 6, 2019","format":false,"excerpt":"KontroLIR We are excited to announce our newest product KontroLIR - the first Arduino compatible IR remote control. Users can now design their very own Infrared remote to work exactly how they want. The possibilities are unlimited. Customize the fully featured firmware within the Arduino IDE to your own needs\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"KontrolIR_parts_view4","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/07\/KontrolIR_parts_view4.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/07\/KontrolIR_parts_view4.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/07\/KontrolIR_parts_view4.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2019\/07\/KontrolIR_parts_view4.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1463,"url":"https:\/\/www.analysir.com\/blog\/2015\/08\/31\/preview-a-ir-shield-a-high-end-infrared-shield-for-analysir-irremote-irlib\/","url_meta":{"origin":2304,"position":5},"title":"Preview: A.IR Shield Nano, a high-end Infrared Shield for AnalysIR, IRremote &#038; IRLib","author":"User Two","date":"August 31, 2015","format":false,"excerpt":"The fifth member of our MakeIR series of devices & kits is the A.IR Shield Nano. This shield works out of the box with AnalysIR and is essentially plug & play , with additional prototyping options. The shield comes attached to an Arduino nano compatible device (clone). Although designed specifically\u2026","rel":"","context":"In &quot;AnalysIR Blog&quot;","block_context":{"text":"AnalysIR Blog","link":"https:\/\/www.analysir.com\/blog\/analysir-blog\/"},"img":{"alt_text":"A.IR block diagram","src":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/08\/A.IR-block-diagram.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/08\/A.IR-block-diagram.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.analysir.com\/blog\/wp-content\/uploads\/2015\/08\/A.IR-block-diagram.png?resize=525%2C300 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/2304","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=2304"}],"version-history":[{"count":10,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/2304\/revisions"}],"predecessor-version":[{"id":3909,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/posts\/2304\/revisions\/3909"}],"wp:attachment":[{"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/media?parent=2304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/categories?post=2304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.analysir.com\/blog\/wp-json\/wp\/v2\/tags?post=2304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}