I am looking to determine the different frequencies coming from an inferred emitter. I also need something to output these frequencies. If anyone has suggestions on a library I should use or code to determine these frequencies please let me know. Thank you.
emgeiger:
I need to have 4 channels and on the IR reciver all it says is 38 kHz i dont know if that means maximum or minimum but thats what is says
An IR Remote receiver has a built-in demodulator. It turns 38 kHz pulse trains into a HIGH signal and anything else into a LOW signal. The IR Remote sends bursts of 38 kHz in a timed pattern to convey data. Generally the pattern starts with a relatively long period of ON signal to train the receiver to the signal level. Then a series of OFF and ON periods to convey the data. Often a period that is 2/3 OFF and 1/3 ON conveys a 0 bit and 1/3 OFF and 2/3 ON conveys a 1 bit.
IRrecord:26: error: 'IRsend' does not name a type
IRrecord.ino: In function 'void sendCode(int)':
IRrecord:104: error: 'irsend' was not declared in this scope
IRrecord:108: error: 'irsend' was not declared in this scope
IRrecord:114: error: 'irsend' was not declared in this scope
IRrecord:129: error: 'irsend' was not declared in this scope
IRrecord:132: error: 'irsend' was not declared in this scope
IRrecord:139: error: 'irsend' was not declared in this scope
im assuming theirs a problem with the code, which was one of the examples here;
/*
IRrecord: record and play back IR signals as a minimal
An IR detector/demodulator must be connected to the input RECV_PIN.
An IR LED must be connected to the output PWM pin 3.
A button must be connected to the input BUTTON_PIN; this is the
send button.
A visible LED can be connected to STATUS_PIN to provide status.
// Storage for the recorded code
int codeType = -1; // The type of code
unsigned long codeValue; // The code value if not raw
unsigned int rawCodes[RAWBUF]; // The durations if raw
int codeLen; // The length of the code
int toggle = 0; // The RC5/6 toggle state
// Stores the code for later playback
// Most of this code is just logging
void storeCode(decode_results *results) {
codeType = results->decode_type;
int count = results->rawlen;
if (codeType == UNKNOWN) {
Serial.println("Received unknown code, saving as raw");
codeLen = results->rawlen - 1;
// To store raw codes:
// Drop first value (gap)
// Convert from ticks to microseconds
// Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
for (int i = 1; i <= codeLen; i++) {
if (i % 2) {
// Mark
rawCodes[i - 1] = results->rawbuf*USECPERTICK - MARK_EXCESS;
Serial.print(" m");*
}*
else {*
// Space* rawCodes[i - 1] = results->rawbufUSECPERTICK + MARK_EXCESS;
_ Serial.print(" s");_
_ }_
_ Serial.print(rawCodes[i - 1], DEC);_
_ }_
_ Serial.println("");_
_ }_
_ else {_
_ if (codeType == NEC) {_
_ Serial.print("Received NEC: ");_
_ if (results->value == REPEAT) {_
_ // Don't record a NEC repeat value as that's useless._
_ Serial.println("repeat; ignoring.");_
_ return;_
_ }_
_ }_
_ else if (codeType == SONY) {_
_ Serial.print("Received SONY: ");_
_ }_
_ else if (codeType == RC5) {_
_ Serial.print("Received RC5: ");_
_ }_
_ else if (codeType == RC6) {_
_ Serial.print("Received RC6: ");_
_ }_
_ else {_
_ Serial.print("Unexpected codeType ");_
_ Serial.print(codeType, DEC);_
_ Serial.println("");_
_ }_
_ Serial.println(results->value, HEX);_
_ codeValue = results->value;_
_ codeLen = results->bits;_
_ }_
_}_ void sendCode(int repeat) {
_ if (codeType == NEC) {_
_ if (repeat) {_
_ irsend.sendNEC(REPEAT, codeLen);_
_ Serial.println("Sent NEC repeat");_
_ }_
_ else {_
_ irsend.sendNEC(codeValue, codeLen);_
_ Serial.print("Sent NEC ");_
_ Serial.println(codeValue, HEX);_
_ }_
_ }_
_ else if (codeType == SONY) {_
_ irsend.sendSony(codeValue, codeLen);_
_ Serial.print("Sent Sony ");_
_ Serial.println(codeValue, HEX);_
_ }_
_ else if (codeType == RC5 || codeType == RC6) {_
_ if (!repeat) {_
_ // Flip the toggle bit for a new button press*_ * toggle = 1 - toggle;* * }* * // Put the toggle bit into the code to send* * codeValue = codeValue & ~(1 << (codeLen - 1));* * codeValue = codeValue | (toggle << (codeLen - 1));* * if (codeType == RC5) {* * Serial.print("Sent RC5 ");* * Serial.println(codeValue, HEX);* * irsend.sendRC5(codeValue, codeLen);* * }* * else {* * irsend.sendRC6(codeValue, codeLen);* * Serial.print("Sent RC6 ");* * Serial.println(codeValue, HEX);* * }* * }* _ else if (codeType == UNKNOWN /* i.e. raw /) {_
_ // Assume 38 KHz*_ * irsend.sendRaw(rawCodes, codeLen, 38);* * Serial.println("Sent raw");* * }* } int lastButtonState; void loop() { * // If button pressed, send the code.* * int buttonState = digitalRead(BUTTON_PIN);
_ if (lastButtonState == HIGH && buttonState == LOW) {_
_ Serial.println("Released");_
_ irrecv.enableIRIn(); // Re-enable receiver*_ * }* * if (buttonState) {* * Serial.println("Pressed, sending");* * digitalWrite(STATUS_PIN, HIGH);
_ sendCode(lastButtonState == buttonState);_
digitalWrite(STATUS_PIN, LOW);
_ delay(50); // Wait a bit between retransmissions*_ * }* * else if (irrecv.decode(&results)) {* * digitalWrite(STATUS_PIN, HIGH);
_ storeCode(&results);_
_ irrecv.resume(); // resume receiver*_ * digitalWrite(STATUS_PIN, LOW);
_ }_
_ lastButtonState = buttonState;_
_}*_