collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Dois receptores ir remote em um arduino???  (Lida 16663 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Dois receptores ir remote em um arduino???
« Responder #15 em: 14 de Julho de 2012, 14:13 »
O código da interrupção não é super complexo, simplesmente tens de fazer repetir o código todo na interrupção, quer dizer á outras maneiras de o fazer, mas a mais simples é essa.
Avr fanboy

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #16 em: 14 de Julho de 2012, 16:38 »
Ja agora podes colocar aqui o codigo ?!?
A biblioteca usa o timer 2 para interrupcao( 8 bits)... Por isso vou assumir que ainda temos o timer 1 livre ( que e 16 bits...) .
Outra pergunta...Em que pin estas a usar o segundo receptor ?!? O timer dois trabuca com o pin 11 e o pin 3...
« Última modificação: 14 de Julho de 2012, 16:45 por iyahdub »
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #17 em: 14 de Julho de 2012, 18:38 »
Ok aqui esta... Depois de alghuma pesquisa, descobri afinal quie a versao final da biblioteca tem a opcao para usar o timer 1 em ves do dois...Portanto acho que a mina opiniao seria, se preciso, apenas definir o timer 1 numa delas.( ja experiementaste o 2nd receptor no pino 3 e o 1ro no 11 ou vice versa lol?!?).

Deixo aqui a parte relevante para que possas ter algum avanco...
Como ves tem a opcao de usar os varios timers...
Por isso quer dizer que o trabalho ja esta feito...
Agora talvez o Senso possa responder se alguma coisa mais e preciso( basta descomentar ?!? Alterar o nome do #define de forma a podermos utiliza-lo no UNO ?!?

Código: [Seleccione]
// define which timer to use
//
// Uncomment the timer you wish to use on your board.  If you
// are using another library which uses timer2, you have options
// to switch IRremote to use a different timer.

// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#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

// Teensy 1.0
#elif defined(__AVR_AT90USB162__)
  #define IR_USE_TIMER1     // tx = pin 17

// Teensy 2.0
#elif defined(__AVR_ATmega32U4__)
  //#define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  #define IR_USE_TIMER4_HS  // tx = pin 10

// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
  //#define IR_USE_TIMER1   // tx = pin 25
  #define IR_USE_TIMER2     // tx = pin 1
  //#define IR_USE_TIMER3   // tx = pin 16

// Sanguino
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
  //#define IR_USE_TIMER1   // tx = pin 13
  #define IR_USE_TIMER2     // tx = pin 14

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #18 em: 14 de Julho de 2012, 19:37 »
O código da interrupção não é super complexo, simplesmente tens de fazer repetir o código todo na interrupção, quer dizer á outras maneiras de o fazer, mas a mais simples é essa.

"simplesmente tens de fazer repetir o código todo na interrupção", na biblioteca ou no codigo arduino?

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #19 em: 14 de Julho de 2012, 19:50 »
Ok aqui esta... Depois de alghuma pesquisa, descobri afinal quie a versao final da biblioteca tem a opcao para usar o timer 1 em ves do dois...Portanto acho que a mina opiniao seria, se preciso, apenas definir o timer 1 numa delas.( ja experiementaste o 2nd receptor no pino 3 e o 1ro no 11 ou vice versa lol?!?).

Deixo aqui a parte relevante para que possas ter algum avanco...
Como ves tem a opcao de usar os varios timers...
Por isso quer dizer que o trabalho ja esta feito...
Agora talvez o Senso possa responder se alguma coisa mais e preciso( basta descomentar ?!? Alterar o nome do #define de forma a podermos utiliza-lo no UNO ?!?

Código: [Seleccione]
// define which timer to use
//
// Uncomment the timer you wish to use on your board.  If you
// are using another library which uses timer2, you have options
// to switch IRremote to use a different timer.

// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#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

// Teensy 1.0
#elif defined(__AVR_AT90USB162__)
  #define IR_USE_TIMER1     // tx = pin 17

// Teensy 2.0
#elif defined(__AVR_ATmega32U4__)
  //#define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  #define IR_USE_TIMER4_HS  // tx = pin 10

// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
  //#define IR_USE_TIMER1   // tx = pin 25
  #define IR_USE_TIMER2     // tx = pin 1
  //#define IR_USE_TIMER3   // tx = pin 16

// Sanguino
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
  //#define IR_USE_TIMER1   // tx = pin 13
  #define IR_USE_TIMER2     // tx = pin 14

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif

este é o codigo usado no arduino com uma das bibliotecas editada. não está o meu codigo aí, porque esse era para testar, se funciona esse, tambem funcionará com o meu codigo. só não coloquei o meu codigo, porque é demasiado grande e ainda esta em testes, todo desorganizado e sem comentar. mas se for mesmo preciso colocar, coloco sem problema.

se for preciso fazer upload da biblioteca diz!

obrigado!

ps- esse codigo da escolha do timer, vai aonde?

ah, os ir's não os tenho nem na porta 3 nem na 11. tenho um na digital 2 e o outro na entrada analogica A5. funcionam bem se programado só com uma IRremote e claro um de cada vez, ou seja, ou fica a dar um ou outro. por isso o ter de crear outra biblioteca edentica e editar os nomes, mas falta o interruptor.

tambem funcionam os dois ao mesmo tempo se for programado com o codigo que tem o delay. mas esse codigo não me convem pelo demux 4051.

mais alguma coisa, diz

obrigado!!

/*
 * 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>
#include <IRremote2.h>
int RECV_PIN = 2;
int RECV_PIN2 = A5;
IRrecv irrecv(RECV_PIN);
IRrecv2 irrecv2(RECV_PIN2);
decode_results results;
decode_results2 results2;
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  irrecv.enableIRIn2(); // Start the receiver2
}

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

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #20 em: 14 de Julho de 2012, 19:55 »
Criar o mesmo codiigo com interrupcao diferente... Na biblioteca claro. Ao atribuires o pin respectivo aquele Timer, ele vai usar o prescaler predefinido pela biblioteca( no 3 e 11 o timer 2, etc...).
Tensz aqui outro ja acabado tb afinal, para timer 1 e 3
http://arduino.cc/playground/Code/Timer1...

PS Desculp[a, esquecime do link no outro post...lol
https://github.com/shirriff/Arduino-IRremote
« Última modificação: 14 de Julho de 2012, 19:58 por iyahdub »
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #21 em: 14 de Julho de 2012, 20:03 »
Criar o mesmo codiigo com interrupcao diferente... Na biblioteca claro. Ao atribuires o pin respectivo aquele Timer, ele vai usar o prescaler predefinido pela biblioteca( no 3 e 11 o timer 2, etc...).
Tensz aqui outro ja acabado tb afinal, para timer 1 e 3
http://arduino.cc/playground/Code/Timer1...

PS Desculp[a, esquecime do link no outro post...lol
https://github.com/shirriff/Arduino-IRremote

no primeiro link, não vi o codigo.

no segundo link, qual é...estou um pouco desorientado lol

não sei o que me passa hoje!!!

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #22 em: 14 de Julho de 2012, 20:06 »
Fui eu desculpa...
O segundo link e o do post anterior... ( https://github.com/shirriff/Arduino-IRremote )que ja e a ultima versao actualizada.
O que manipula os interrupts e neste ficheiro da biblioteca  IRremoteInt.h
o outro e apenas um adicional que entretanto achei !

Eu e que me esqueci de incluir o link da primeira vez, desculpa !
« Última modificação: 14 de Julho de 2012, 20:09 por iyahdub »
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #23 em: 14 de Julho de 2012, 20:14 »
Ok aqui esta... Depois de alghuma pesquisa, descobri afinal quie a versao final da biblioteca tem a opcao para usar o timer 1 em ves do dois...Portanto acho que a mina opiniao seria, se preciso, apenas definir o timer 1 numa delas.( ja experiementaste o 2nd receptor no pino 3 e o 1ro no 11 ou vice versa lol?!?).

Deixo aqui a parte relevante para que possas ter algum avanco...
Como ves tem a opcao de usar os varios timers...
Por isso quer dizer que o trabalho ja esta feito...
Agora talvez o Senso possa responder se alguma coisa mais e preciso( basta descomentar ?!? Alterar o nome do #define de forma a podermos utiliza-lo no UNO ?!?

Código: [Seleccione]
// define which timer to use
//
// Uncomment the timer you wish to use on your board.  If you
// are using another library which uses timer2, you have options
// to switch IRremote to use a different timer.

// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#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

// Teensy 1.0
#elif defined(__AVR_AT90USB162__)
  #define IR_USE_TIMER1     // tx = pin 17

// Teensy 2.0
#elif defined(__AVR_ATmega32U4__)
  //#define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  #define IR_USE_TIMER4_HS  // tx = pin 10

// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
  //#define IR_USE_TIMER1   // tx = pin 25
  #define IR_USE_TIMER2     // tx = pin 1
  //#define IR_USE_TIMER3   // tx = pin 16

// Sanguino
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
  //#define IR_USE_TIMER1   // tx = pin 13
  #define IR_USE_TIMER2     // tx = pin 14

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif

desculpa, mas acho que ainda não acordei lol, esse codigo, onde o coloco para fazer com que uma das bibliotecas funcione com o timer 1 em vez do 2?
se depois tiver de trocar os pinos dos ir's, tambem posso mudar( é que o arduino esta cheio), mas antes de mudar, testo assim aver se funciona.

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #24 em: 14 de Julho de 2012, 20:29 »
onde encontraste esse codigo de definir os timers, não o encontro nos ficheiros da biblioteca irremote no link que postaste


ah já vi onde foi, não li bem o teu post... ???
« Última modificação: 14 de Julho de 2012, 20:36 por Donvan »

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #25 em: 14 de Julho de 2012, 20:36 »
Se calhar fui eu que te confundi.
eu postei apenas um excerto do codigo do ficheiro IRremoteInt.h ( que e o que controla as interrupcoes do timer).
E esse que tens que manipular agora...
Criar uma segunda biblioteca para o 2ndo receptor, usando o pin correspondente( mais ou menos na mesma linha do que ja tinhas feito, mas desta vez teras a biblioteca de maneira correcta e usando o pin correcto).
Faz sentido ?!
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #26 em: 14 de Julho de 2012, 20:41 »
Se calhar fui eu que te confundi.
eu postei apenas um excerto do codigo do ficheiro IRremoteInt.h ( que e o que controla as interrupcoes do timer).
E esse que tens que manipular agora...
Criar uma segunda biblioteca para o 2ndo receptor, usando o pin correspondente( mais ou menos na mesma linha do que ja tinhas feito, mas desta vez teras a biblioteca de maneira correcta e usando o pin correcto).
Faz sentido ?!

sim, já estava a ver onde estava, testar e depois digo algo.

Só mais uma coisa, dizias que tinha de mudar o nome para arduino, porque nao tem arduino, so tem megas, duemilanove, etc... se poderes dizer qual deles altero e que nome colocar........mas pelo que estou a ver, lá diz "else" no final deles e no caso do duemilanove, etc, não tem nome, só diz defenir um timer ou outro, por isso penso que não tenho de alterar nenhum nome, só mesmo defenir o timer

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #27 em: 14 de Julho de 2012, 20:48 »
Ai ja tenho que pesquisar como e que o arduino usa esse define, ou se e so por timer... Por isso perguntei a opiniao do Senso... mas espera um bocado !! ( Papinha toda feita lol Na boa...No futiuro ajudas alguem tb)
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!

Donvan

  • Visitante
Re: Dois receptores ir remote em um arduino???
« Responder #28 em: 14 de Julho de 2012, 20:51 »
No que souber ajudo sem problema ningun.

Muito obrigado pela tua ajuda e no que precisares, aqui estarei.

vou fazer alguns testes e depois digo algo!!!

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: Dois receptores ir remote em um arduino???
« Responder #29 em: 14 de Julho de 2012, 20:51 »
Substitui mega por isto
Código: [Seleccione]
__AVR_ATmega168__) || defined(__AVR_ATmega328__ dentro dos parentesis...Sabes onde nao sabes ?!?
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__)



E ja deve dar !!

PS- Espero que assim nao vamos criar um conflito entre as duas... ... lembra-te de renomear a biblioteca para um dois por exemplo e depois inclui-la no codigo principal...
« Última modificação: 14 de Julho de 2012, 21:07 por iyahdub »
ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!