downloaded ken shiriffs code for IR remote and getting errors

I downloaded and copy and pasted his IR programming and I get errors. It's like the code is incomplete or something. Will anyone help?
"'decode_results' was not declared in this scope"

Is that the only error? Usually something like that indicates that the library is not correctly installed or misnamed.

Usually something like that indicates that the library is not correctly installed or misnamed.

Actually, it usually indicates a coding error, if that is the 1st message. If it isn't, then fixing the first one is well advised, before worrying about the 2nd or 3rd.

Yes that is the 1st error. it's listed multiple times too. Just about every code that I have downloaded of his gives me errors. nothing will compile.

Just about every code that I have downloaded of his gives me errors. nothing will compile.

Well, all of it does for me. So, there being no reason for have copied and pasted any code, perhaps you need to show WHAT you pasted.

/Here is one program/

/*

  • IRhashdecode - decode an arbitrary IR code.
  • Instead of decoding using a standard encoding scheme
  • (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.
  • An IR detector/demodulator must be connected to the input RECV_PIN.
  • This uses the IRremote library: A Multi-Protocol Infrared Remote Library for the Arduino
  • The algorithm: look at the sequence of MARK signals, and see if each one
  • is shorter (0), the same length (1), or longer (2) than the previous.
  • Do the same with the SPACE signals. Hszh the resulting sequence of 0's,
  • 1's, and 2's to a 32-bit value. This will give a unique value for each
  • different code (probably), for most code systems.
  • You're better off using real decoding than this technique, but this is
  • useful if you don't have a decoding algorithm.
  • Copyright 2010 Ken Shirriff
  • http://arcfn.com
    */

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
irrecv.enableIRIn(); // Start the receiver
Serial.begin(9600);
}

// Compare two tick values, returning 0 if newval is shorter,
// 1 if newval is equal, and 2 if newval is longer
// Use a tolerance of 20%
int compare(unsigned int oldval, unsigned int newval) {
if (newval < oldval * .8) {
return 0;
}
else if (oldval < newval * .8) {
return 2;
}
else {
return 1;
}
}

// Use FNV hash algorithm: FNV Hash
#define FNV_PRIME_32 16777619
#define FNV_BASIS_32 2166136261

/* Converts the raw code values into a 32-bit hash code.

  • Hopefully this code is unique for each button.
    /
    unsigned long decodeHash(decode_results results) {
    unsigned long hash = FNV_BASIS_32;
    for (int i = 1; i+2 < results->rawlen; i++) {
    int value = compare(results->rawbuf
    , results->rawbuf[i+2]);
  • // Add value into the hash*
    hash = (hash * FNV_PRIME_32) ^ value;
  • }*
  • return hash;*
    }
    void loop() {
  • if (irrecv.decode(&results)) {*
  • Serial.print("'real' decode: ");*
  • Serial.print(results.value, HEX);*
  • Serial.print(", hash decode: ");*
  • Serial.println(decodeHash(&results), HEX); // Do something interesting with this value*
  • irrecv.resume(); // Resume decoding (necessary!)*
  • }*
    }
    #define LEDPIN 13
    void blink() {
  • digitalWrite(LEDPIN, HIGH);*
  • delay(200);*
  • digitalWrite(LEDPIN, LOW);*
  • delay(200);*
    *} *
    // Blink the LED the number of times indicated by the Philips remote control
    // Replace loop() with this for the blinking LED example.
    void blink_example_loop() {
  • if (irrecv.decode(&results)) {*
  • unsigned long hash = decodeHash(&results);*
  • switch (hash) {*
  • case 0x322ddc47: // 0 (10)*
  • blink(); // fallthrough*
  • case 0xdb78c103: // 9*
  • blink();*
  • case 0xab57dd3b: // 8*
  • blink();*
  • case 0x715cc13f: // 7*
  • blink();*
  • case 0xdc685a5f: // 6*
  • blink();*
  • case 0x85b33f1b: // 5*
  • blink();*
  • case 0x4ff51b3f: // 4*
  • blink();*
  • case 0x15f9ff43: // 3*
  • blink();*
  • case 0x2e81ea9b: // 2*
  • blink();*
  • case 0x260a8662: // 1*
  • blink();*
  • break;*
  • default:*
  • Serial.print("Unknown ");*
  • Serial.println(hash, HEX); *
  • }*
  • irrecv.resume(); // Resume decoding (necessary!)*
  • }*
    }
  if (newval < oldval * .smiley-cool {

oldval times smiley-cool? WTF does that mean?

After fixing those two problems, caused by you not posting code correctly, and adding a cast to the call to compare, this code compiles:

/*
 * IRhashdecode - decode an arbitrary IR code.
 * Instead of decoding using a standard encoding scheme
 * (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.
 *
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * This uses the IRremote library: http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
 *
 * The algorithm: look at the sequence of MARK signals, and see if each one
 * is shorter (0), the same length (1), or longer (2) than the previous.
 * Do the same with the SPACE signals.  Hszh the resulting sequence of 0's,
 * 1's, and 2's to a 32-bit value.  This will give a unique value for each
 * different code (probably), for most code systems.
 *
 * You're better off using real decoding than this technique, but this is
 * useful if you don't have a decoding algorithm.
 *
 * Copyright 2010 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  irrecv.enableIRIn(); // Start the receiver
  Serial.begin(9600);
}

// Compare two tick values, returning 0 if newval is shorter,
// 1 if newval is equal, and 2 if newval is longer
// Use a tolerance of 20%
int compare(unsigned int oldval, unsigned int newval) {
  if (newval < oldval * 8)
  {
    return 0;
  }
  else if (oldval < newval * 8)
  {
    return 2;
  }
  else 
  {
    return 1;
  }
}

// Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
#define FNV_PRIME_32 16777619
#define FNV_BASIS_32 2166136261

/* Converts the raw code values into a 32-bit hash code.
 * Hopefully this code is unique for each button.
 */
unsigned long decodeHash(decode_results *results) {
  unsigned long hash = FNV_BASIS_32;
  for (int i = 1; i+2 < results->rawlen; i++) {
    int value =  compare((unsigned int)results->rawbuf, results->rawbuf[i+2]);
    // Add value into the hash
    hash = (hash * FNV_PRIME_32) ^ value;
  }
  return hash;
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.print("'real' decode: ");
    Serial.print(results.value, HEX);
    Serial.print(", hash decode: ");
    Serial.println(decodeHash(&results), HEX); // Do something interesting with this value
    irrecv.resume(); // Resume decoding (necessary!)
  }
}

#define LEDPIN 13
void blink() {
  digitalWrite(LEDPIN, HIGH);
  delay(200);
  digitalWrite(LEDPIN, LOW);
  delay(200);
} 

// Blink the LED the number of times indicated by the Philips remote control
// Replace loop() with this for the blinking LED example.
void blink_example_loop() {
  if (irrecv.decode(&results)) {
    unsigned long hash = decodeHash(&results);
    switch (hash) {
    case 0x322ddc47: // 0 (10)
      blink(); // fallthrough
    case 0xdb78c103: // 9
      blink();
    case 0xab57dd3b: // 8
      blink();
    case 0x715cc13f: // 7
      blink();
    case 0xdc685a5f: // 6
      blink();
    case 0x85b33f1b: // 5
      blink();
    case 0x4ff51b3f: // 4
      blink();
    case 0x15f9ff43: // 3
      blink();
    case 0x2e81ea9b: // 2
      blink();
    case 0x260a8662: // 1
      blink();
      break;
    default:
      Serial.print("Unknown ");
      Serial.println(hash, HEX);   
    }
    irrecv.resume(); // Resume decoding (necessary!)
  }
}

There is something wrong with the way you installed the library.

Just about every code that I have downloaded of his gives me errors. nothing will compile.

Hmmm. FYI: The IRremote author has made a significant contribution to the community in publishing this robust code. It has been used sucessfully by countless satisfied users.

When I continue to get problems with new pieces of software I usually question my own approach first, before the 3rd party free software or its author.

In my experience problems such as you reported are 99%+ of the time due to inexperience of the user or failure to read up first.

....like for example not reading or ignoring the guidelines in this forum for including source code within code tags, before posting.

350boatracing:
I downloaded and copy and pasted his IR programming and I get errors. It's like the code is incomplete or something. Will anyone help?
"'decode_results' was not declared in this scope"

Looks like a failure to realize a library needs to be installed.

Read this: http://arduino.cc/en/Guide/Libraries