I need help with a library i found to send/recive ir

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.

moderator: fixed your title as proposed

I don't have the answer but if you modify your title to include the words infra red you might better attract the attention of someone who does.

...R

How many different frequencies are you expecting from your IR emitter? What range of frequencies do you expect?

And lets be clear here:
Do you mean the frequency of the IR modulation (i.e., 19 kHz)
or the frequency (wavelength) of the IR itself?

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

and also another thing, how do you include two or more conditions in an if statement, ive tried

if ([condition] , [condition]){

and

if(([condition]) && ([condition)){

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.

This Thread may be of interest.

And there is an Arduino library to decode the signals from many different remote-controls.

...R

emgeiger:
and also another thing, how do you include two or more conditions in an if statement, ive tried

if ([condition] , [condition]){

and

if(([condition]) && ([condition)){

The second should work. What error did you get? It should look like:

if ((x==1) && (y==2)) 
{ 
    dosomething();
}

I was not getting an error when i did that it just seemed like it wasn't working, It ran the condition when only one of them was true

Thanks for the link to the forum

im trying to use the ir send/recive library by Ken Sheriff( link; A Multi-Protocol Infrared Remote Library for the Arduino ) and i get this error;

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.
  • The logic is:
  • If the button is pressed, send the IR code.
  • If an IR code is received, record it.
  • Version 0.11 September, 2009
  • Copyright 2009 Ken Shirriff
  • http://arcfn.com
    */

#include <IRremote.h>

int RECV_PIN = 11;
int BUTTON_PIN = 12;
int STATUS_PIN = 13;

IRrecv irrecv(RECV_PIN);
IRsend irsend;

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(BUTTON_PIN, INPUT);
pinMode(STATUS_PIN, OUTPUT);
}

// 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;_
    _
    }*_

Can anyone help me? please