Hi all,
So i had this idea on creating a small box that i can place in my room to control my Aircon.
However, im having issue even at the start.
So before i being, here’s what i am going to do.
I have divided my project into 3 phase
- Decoding the IR Signals from my aircon REMOTE (Reverse Engineering method)
- Try sending the same signals from my photon via a IR Emitter
- Hooking it up to a Web service to change my aircon here and there.
So the problem is that, after spending hours, i still cant seemed to have any progress. I tried looking into codes from different site.Still no progress.
-
http://www.instructables.com/id/Air-Conditioning-web-controlled-by-Arduino/?ALLSTEPS
Tried following this, but even thought i changed the pins into D0, D1, D2, D3… still no progress. It shows me in the console of the photon to press my remote. but it doesn’t seemed to be able to read a valid signal. i even tried a OLD TV remote. -
Photon: Sending Infrared remote control signals
Tried following this too, but still no hope. Either i got lost somewhere or somewhere i missed out.
To begin now,
this is my current code below…
I have also attached the + pin into 3v3 instead of a 5v as i dun have one.
Any solutions here?
/*
Author: AnalysIR
Revision: 1.0
This code is provided to overcome an issue with Arduino IR libraries
It allows you to capture raw timings for signals longer than 255 marks & spaces.
Typical use case is for long Air conditioner signals.
You can use the output to plug back into IRremote, to resend the signal.
This Software was written by AnalysIR.
Usage: Free to use, subject to conditions posted on blog below.
Please credit AnalysIR and provide a link to our website/blog, where possible.
Copyright AnalysIR 2014
Connections:
IR Receiver Arduino
V+ -> +5v
GND -> GND
Signal Out -> Digital Pin 2
(If using a 3V Arduino, you may connect V+ to +3V)
*/
int LEDPIN = D0;
//you may increase this value on Arduinos with greater than 2k SRAM
.#define maxLen 800
volatile unsigned int irBuffer[maxLen]; //stores timings - volatile because changed by ISR
volatile unsigned int x = 0; //Pointer thru irBuffer - volatile because changed by ISR
void setup() {
Serial.begin(9600); //change BAUD rate as required
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//set up ISR for receiving IR signal
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(F("Press the button on the remote now - once only"));
delay(5000); // pause 5 secs
if (x) { //if a signal is captured
digitalWrite(LEDPIN, HIGH);//visual indicator that signal received
Serial.println();
Serial.print(F("Raw: (")); //dump raw header format - for library
Serial.print((x - 1));
Serial.print(F(") "));
detachInterrupt(0);//stop interrupts & capture until finshed here
for (int i = 1; i < x; i++) { //now dump the times
if (!(i & 0x1)) Serial.print(F("-"));
Serial.print(irBuffer[i] - irBuffer[i - 1]);
Serial.print(F(", "));
}
x = 0;
Serial.println();
Serial.println();
digitalWrite(LEDPIN, LOW);//end of visual indicator, for this time
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//re-enable ISR for receiving IR signal
}
}
void rxIR_Interrupt_Handler() {
if (x > maxLen) return; //ignore if irBuffer is already full
irBuffer[x++] = micros(); //just continually record the time-stamp of signal transitions
}