En verdad para lo que tú quieres hacer, entiendo que cada led IR estaría orientado a su receptor individual y que cada receptor solo vería su led. Si es así, no necesitas dos frecuencias, te vale con una sola. Incluso sin generar frecuencia, te podría servir un encendido y apagado multiplexado de ambos led.
De todas formas yo te lo explico generando las 2 frecuencias, tú ya luego decides cómo hacerlo en función de lo que quieres hacer y como están orientados los led y los receptores y que ve o no ve cada uno de ellos.
La frecuencia la tienes que generar con el pwm. Solo con uno es suficiente.
La forma en que yo lo haría es mediante multiplexado.
Conectar los ánodos de ambos led’s IR al mismo pwm. (El pwm que quieras o el que haya).
Los cátodos los pones cada uno a un puerto, por ejemplo el cátodo del led1 al puerto B1 , el cátodo del led2 al puerto B2.
Los receptores los pones en otros dos puertos, los que quieras.
La secuencia en el software sería:
Inicia el programa con los dos catodos a nivel alto (ambos led’s apagados).
- pongo la frecuencia de 1 khz en el pwm.
- Pongo a nivel bajo el cátodo del led1 ( El led1 ahora está emitiendo 1 Khz, mientras que el led2 está apagado).
- leo ahora el receptor del led1.
- para hacer la lectura lo ideal es utilizar un Timer para determinar el periodo de la señal que está recibiendo el receptor y comprobar que es 1 Khz y así validarla y tomar las acciones requeridas.
- pongo a nivel alto el cátodo del led1. (El led1 deja de emitir).
- cambio la frecuencia del pwm a 2 Khz.
- pongo el cátodo del led2 a nivel bajo. (Ahora el led2 está emitiendo 2 Khz mientras que el led1 está apagado).
- leo el receptor del led2 y lo mismo, le capturo el periodo con un timer, compruebo que son 2 Khz y lo valido.
Y así sucesivamente.
Si te das cuenta incluso con un único receptor es posible saber cuál de los dos leds es el que ha sido interceptado por que estoy emitiendo 1 Khz por el led1 y comprobando que el receptor recibe ese Khz y seguidamente estoy apagando ese led y emitiendo 2 Khz en el otro led.
Si al momento de leer el receptor, tú estabas emitiendo 1 Khz por el led1, tu programa debe esperar recibir ese Khz. Si no es así significa que el led1 está interceptado y su luz no llega al receptor.
Lo mismo cuando emites 2 Khz por el otro.
Eso es multiplexar. A la vista humana es como si ambas señales se estuviesen emitiendo y recibiendo siempre de forma simultánea. Pero la magia de la velocidad de un microcontrolador y el poder de la multiplexacion es la clave de lo que necesitas.
Saludos.