bonjour,
je fais appel à vous pour un problème avec ma mega 2560 et la lib IRremote.
la lib est paramétrée pour une sortie sur la broche digital 3 de la uno.
sur ma mega j'ai lcd sensitif qui occupe cette broche.
comment modifier cette état de fait ??
merci de votre aide
Salut,
Il faut modifier le fichier arduino/librairies/IRremote/IRremoteInt.h
Le mega 2560 étant grosso modo similaire au 1280, il faut tripatouiller cette section :
...
// Arduino Mega
#if defined(__AVR_ATmega1280__)
//#define IR_USE_TIMER1 // tx = pin 11
#define IR_USE_TIMER2 // tx = pin 9
//#define IR_USE_TIMER3 // tx = pin 5
//#define IR_USE_TIMER4 // tx = pin 6
//#define IR_USE_TIMER5 // tx = pin 46
...
Par defaut sur les Uno, duemilanove et consors, c'est le port analogique 3 qui est utilisé.
@+
Zoroastre.
merci pour votre aide.
j'ai regarder le fichier arduino/librairies/IRremote/IRremoteInt.h
en effet j'ai trouver les lignes mentionnées.
d’après ce que j'ai vu je ne peux modifier 5 et 6 ils sont utilisés.
par contre 9 et 11 sont libre.
le fichier arduino/librairies/IRremote/IRremoteInt.h
voici les lignes ou l'on trouve la référence à la sortie 3 de la uno:
void IRsend::mark(int time) {
// Sends an IR mark for the specified number of microseconds.
// The mark output is modulated at the PWM frequency.
TIMER_ENABLE_PWM; // Enable pin 3 PWM output
delayMicroseconds(time);
}
/* Leave pin off for time (given in microseconds) */
void IRsend::space(int time) {
// Sends an IR space for the specified number of microseconds.
// A space is no output, so the PWM output is disabled.
TIMER_DISABLE_PWM; // Disable pin 3 PWM output
delayMicroseconds(time);
}
void IRsend::enableIROut(int khz) {
// Enables IR output. The khz value controls the modulation frequency in kilohertz.
// The IR output will be on pin 3 (OC2B).
// This routine is designed for 36-40KHz; if you use it for other values, it's up to you
// to make sure it gives reasonable results. (Watch out for overflow / underflow / rounding.)
// TIMER2 is used in phase-correct PWM mode, with OCR2A controlling the frequency and OCR2B
// controlling the duty cycle.
// There is no prescaling, so the output frequency is 16MHz / (2 * OCR2A)
// To turn the output on and off, we leave the PWM running, but connect and disconnect the output pin.
// A few hours staring at the ATmega documentation and this will all make sense.
// See my Secrets of Arduino PWM at http://arcfn.com/2009/07/secrets-of-arduino-pwm.html for details.
// Disable the Timer2 Interrupt (which is used for receiving IR)
TIMER_DISABLE_INTR; //Timer2 Overflow Interrupt
pinMode(TIMER_PWM_PIN, OUTPUT);
digitalWrite(TIMER_PWM_PIN, LOW); // When not sending PWM, we want it low
// COM2A = 00: disconnect OC2A
// COM2B = 00: disconnect OC2B; to send signal set to 10: OC2B non-inverted
// WGM2 = 101: phase-correct PWM with OCRA as top
// CS2 = 000: no prescaling
// The top value for the timer. The modulation frequency will be SYSCLOCK / 2 / OCR2A.
TIMER_CONFIG_KHZ(khz);
}
comment procède t-on ?
merci encore
Ba! Par defaut sur une mega, c'est la pin 9 qui est utilisée.
(...)
Faut peut-être modifier le fichier .h pour qu'il reconnaisse le 2560.
Une main heureuse passera peut-être par ici...
bonjour,
merci pour votre éclairage.
j'ai résolu le problème.
Grâce notamment à Paul Stoffregen
IRremote Library, Send & Receive Infrared Remote Control .
son code ma mis sur la voie.
# Include <IRremote.h>
const int RECV_PIN = 6;
IRrecv irrecv (RECV_PIN);
decode_results résultats;
void setup ()
{
Serial commencer (9600).;
. irrecv enableIRIn (); / / démarrer le récepteur
. irrecv blink13 (true);
}
etc.
voilà si ça peut servir à d'autre.
Bonjour je debute et j'essais desesperement de faire fonction mon emeteur infra rouge a partir de ma carte arduino mega2560. J'ai bien telecharger la bibliotheque IRremote connecter ma led IR sur la sortie PWM 3 (et pas a l'envers) j'ai essais l'exmeple IR sendDemo mais ce dernier me pose deja un probleme lorsque je compile avec IDE une erreur apparait jusque apres la declaration de la bibliotheque a cette ligne : IRsend irsend;
IRsendDemo:11: error: "irsend" does not name a type
IRsendDemo.ino: In fonction 'void loop()':
IRsendDemo:21:error 'irsend' was not declared in this scope
Déja un probleme sans rien faire !!!
La reception fonctionne bien et j'ai recuperé les codes de ma telecomande d'origine que je veux reproduire (enfin, juste 9 touches)
sur mon programme j'ai la meme erreur lors de la compile, ca marche pas !!! ARGH !!!!
Si vous avez des reponses a m'aporter j'en serai ravi Merci d'avance a tous .
Mon prog en pieces jointe
PS: Merci de m'expliquer ou mieux me donner la solotion et de ne pas m'envoyer sur des sites anglophone je ne suis pas tres a l'aise avec cette langue merci
monprogmirroirmagiqueaBP.ino (3.56 KB)
bonjour,
compilé chez moi pas de soucis ???
ide 1.05
Merci pour ta reponse LCD j'ai trouvé pour la bibliotheque c'est simplement une version ancienne que j'avais j'a donc effacé et recharger la derniere version je peux compiler . Mais mainteant il me reste que je ne peut pas emettre avec ma mega 2506 par la sortie PWM N°3 (ni autre part d'ailleur) comme il est preciseé dans la bibliotheque. Apparament je ne suis pas le seul a avir se probleme j'y comprend rien c'est surrement que je suis debutant avec l'arduino.
monprogmirroirmagiqueaBP.ino (7.21 KB)
regarde le post au dessus ou je mets une solution.
Merci pour les infos
Mon probleme est resolu ;;;
Il suffisait de connecter la LED infra rouge a la pin PWM N°9 (anode sur pin n°9 et la Cathode à la pin GND) de L'arduino Mega 2560 et non a la pin PWM N°3. Tout simple mais j'ai cherchépendant un momment !!!