infrarouge

Bonjour, je voudrais savoir pourquoi mon programme ne fonctionne pas, les erreurs qu'elles sont elles? Car je pouvais rajouter à ma bibliothéque le IRremote.h mais quand je le faisais cela me méttait des erreurs comme quoi des variables n'étaient pas définits. C'est pour cela que j'ai directement rajouté tous le programme et plus le programme que je devais écrire. Donc maintenat les variablent sont bien définient mais les erreurs ont bien changées.
Le programme etait celui la:
/*
Reception infrarouge
*/

#include <IRremote.h>

int broche_reception = 11; // broche 11 utilisée
IRrecv reception_ir(broche_reception); // crée une instance
decode_results decode_ir; // stockage données reçues

void setup()
{
Serial.begin(9600);
reception_ir.enableIRIn(); // démarre la réception
}

void loop()
{
if (reception_ir.decode(&decode_ir))
{
Serial.println(decode_ir.value, HEX);
reception_ir.resume(); // reçoit le prochain code
}
}

Mais j'ai rajouté tous le IRremote.h:
/*
Reception infrarouge
*/

/*

#ifndef IRremote_h
#define IRremote_h

// The following are compile-time library options.
// If you change them, recompile the library.
// If DEBUG is defined, a lot of debugging output will be printed during decoding.
// TEST must be defined for the IRtest unittests to work. It will make some
// methods virtual, which will be slightly slower, which is why it is optional.
// #define DEBUG
// #define TEST

// Results returned from the decoder
class decode_results {
public:
int decode_type; // NEC, SONY, RC5, UNKNOWN
unsigned int panasonicAddress; // This is only used for decoding Panasonic data
unsigned long value; // Decoded value
int bits; // Number of bits in decoded value
volatile unsigned int *rawbuf; // Raw intervals in .5 us ticks
int rawlen; // Number of records in rawbuf.
};

// Values for decode_type
#define NEC 1
#define SONY 2
#define RC5 3
#define RC6 4
#define DISH 5
#define SHARP 6
#define PANASONIC 7
#define JVC 8
#define SANYO 9
#define MITSUBISHI 10
#define UNKNOWN -1

// Decoded value for NEC when a repeat code is received
#define REPEAT 0xffffffff

// main class for receiving IR
class IRrecv
{
public:
IRrecv(int recvpin);
void blink13(int blinkflag);
int decode(decode_results *results);
void enableIRIn();
void resume();
private:
// These are called by decode
int getRClevel(decode_results *results, int *offset, int *used, int t1);
long decodeNEC(decode_results *results);
long decodeSony(decode_results *results);
long decodeSanyo(decode_results *results);
long decodeMitsubishi(decode_results *results);
long decodeRC5(decode_results *results);
long decodeRC6(decode_results *results);
long decodePanasonic(decode_results *results);
long decodeJVC(decode_results *results);
long decodeHash(decode_results *results);
int compare(unsigned int oldval, unsigned int newval);

}
;

// Only used for testing; can remove virtual for shorter code
#ifdef TEST
#define VIRTUAL virtual
#else
#define VIRTUAL
#endif

class IRsend
{
public:
IRsend() {}
void sendNEC(unsigned long data, int nbits);
void sendSony(unsigned long data, int nbits);
// Neither Sanyo nor Mitsubishi send is implemented yet
// void sendSanyo(unsigned long data, int nbits);
// void sendMitsubishi(unsigned long data, int nbits);
void sendRaw(unsigned int buf[], int len, int hz);
void sendRC5(unsigned long data, int nbits);
void sendRC6(unsigned long data, int nbits);
void sendDISH(unsigned long data, int nbits);
void sendSharp(unsigned long data, int nbits);
void sendPanasonic(unsigned int address, unsigned long data);
void sendJVC(unsigned long data, int nbits, int repeat); // *Note instead of sending the REPEAT constant if you want the JVC repeat signal sent, send the original code value and change the repeat argument from 0 to 1. JVC protocol repeats by skipping the header NOT by sending a separate code value like NEC does.
// private:
void enableIROut(int khz);
VIRTUAL void mark(int usec);
VIRTUAL void space(int usec);
}
;

// Some useful constants

#define USECPERTICK 50 // microseconds per clock interrupt tick
#define RAWBUF 100 // Length of raw duration buffer

// Marks tend to be 100us too long, and spaces 100us too short
// when received due to sensor lag.
#define MARK_EXCESS 100

#endif

int broche_reception = 11; // broche 11 utilisée
IRrecv reception_ir(broche_reception); // crée une instance
decode_results decode_ir; // stockage données reçues

void setup()
{
Serial.begin(9600);
reception_ir.enableIRIn(); // démarre la réception
}

void loop()
{
if (reception_ir.decode(&decode_ir))
{
Serial.println(decode_ir.value, HEX);
reception_ir.resume(); // reçoit le prochain code
}
}
Mais maintenat les erreurs sont:

programme_arduino_IR.cpp.o: In function __static_initialization_and_destruction_0': C:\arduino-1.0.5/programme_arduino_IR.ino:128: undefined reference to IRrecv::IRrecv(int)'
programme_arduino_IR.cpp.o: In function loop': C:\arduino-1.0.5/programme_arduino_IR.ino:139: undefined reference to IRrecv::decode(decode_results*)'
C:\arduino-1.0.5/programme_arduino_IR.ino:142: undefined reference to IRrecv::resume()' programme_arduino_IR.cpp.o: In function setup':
C:\arduino-1.0.5/programme_arduino_IR.ino:134: undefined reference to `IRrecv::enableIRIn()'

Bonjour,
Pour plus de lisibilité, il faut mettre ton code entre balise # ou encadrer ton code [code] ton code [/code]
Sans le underscore (_)
@+

Bonjour,
Pourquoi ne pas utiliser 'exemple donné par défaut dans la librairie?

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

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

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

fanny1111:
Bonjour, je voudrais savoir pourquoi mon programme ne fonctionne pas, les erreurs qu'elles sont elles?

Donnes nous tes erreurs sans mettre la lib dans le programme mais en utilisant #include <IRremote.h>

svp urgent

les erreurs quand je met le IRremote.h dans la bibliotheque sont:

sketch_may02a:8: error: 'IRrecv' does not name a type
sketch_may02a:9: error: 'decode_results' does not name a type
sketch_may02a.ino: In function 'void setup()':
sketch_may02a:14: error: 'reception_ir' was not declared in this scope
sketch_may02a.ino: In function 'void loop()':
sketch_may02a:19: error: 'reception_ir' was not declared in this scope
sketch_may02a:19: error: 'decode_ir' was not declared in this scope

De mémoire le problème a déjà été évoqué : il y a un conflit avec le core robot Arduino qui inclu la lib IRremote.h mise à jour, et certaines fonctions n'existent plus. La lib IRremote dans le dossier librairies n'est alors pas pris en compte (c'est le premier qui gagne à ce jeu la).

Si tu veux utiliser cette lib, il faut fermer l'IDE, renommer le .h et le .cpp (en IRre.h et IRre.cpp par exemple) et modifier le nom dans le .cpp (remplacer #include IRremote.h par #include IRre.h). Relance ensuite l'IDE et bien sur modifie en en-tête du programme #include IRremote.h en #include IRre.h