crankyoldgit / IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
GNU Lesser General Public License v2.1
2.98k stars 832 forks source link

multiple receivers #497

Closed tragedart closed 6 years ago

tragedart commented 6 years ago

Hi, I am searching for IRremoteESP8266 multiple receiver support. To test a single receiver connected to 3 different gpio pins simultanously. Here see Arduino-IRremote meets; https://github.com/etix/Arduino-IRremote/commit/23caf5a832d05cfaf87fe8b792c5caf83b51afe8 https://github.com/Neco777/Arduino-IRremote

crankyoldgit commented 6 years ago

Sorry, but multiple receivers isn't supported in this Library in software. See https://github.com/markszabo/IRremoteESP8266/issues/93#issuecomment-315305550 for more details. I've tried and it didn't end well. It needs an entire re-write of how we do capture presently.

IF you don't mind giving up the ability to distinguish which receiver received the message and can live with a mangled message if two (or more) receivers get overlapping messages, then you can do this in hardware and share a single GPIO/Interrupt pin. People have reported success following that path.

If IRAM (special ram needed for interrupt code) was not a such a limitation on the ESP8266 and if we didn't have a historical API for receiving, then yes we could probably do something. Alas, a lot of popular projects that already use this library already have IRAM shortage issues so I am very reluctant to increase it's usage, and the extra latency it would add in capture timings resolution.

So, yes it is possible to add. I'm happy to help you if you want to add it in your own fork of the library, but I haven't found a nice & clean way to do it for this library without breaking backwards compatibility. i.e. If you are doing it just for your self, you don't have to worry about that issue.