La différence entre la photodiode et le récepteur infrarouge est importante. En effet, non seulement ce dernier est de type tout-ou-rien, mais en plus il ne fonctionne que s’il reçoit la lumière infrarouge sous forme de signal (état haut, état bas) cadencé à 38KHz environ (soit toutes les 26 millisecondes environ). Il sert surtout de capteur de télécommande infrarouge (ou de tout ce qui émet un code infrarouge à la bonne fréquence, donc un autre Arduino par exemple).
Voici un exemple de récepteur infrarouge : le TSOP38238.

Et voici un lien vers la datasheet du TSOP38238.
Il fait l'objet d'un chapitre complet dans le cours de perfectionnement avec des exemples de lectures de codes de télécommande et de simulation d'une télécommande par l'Arduino.
Voici tout de même une explication sur la façon dont on le connecte :

La patte 1 (OUT) se connecte sur un pin numérique de l'Arduino (en effet c'est un capteur tout-ou-rien), la patte 2 sur le ground et la patte 3 sur le 5V. Voici un mini-programme qui montre les réactions de TSOP38238 :
Ce programme ne donnera pas de réaction si vous mettez une LED IR devant le TSOP et que vous passez la main entre les deux. Ce capteur ne peut pas servir de capteur pour barrière IR. En revanche, si vous dirigez une télécommande infrarouge (celle de votre télévision, de votre chaîne hifi ou de votre lit à bulles) vers le capteur et que vous appuyez sur l'un des boutons, vous verrez des 0 et des 1 se succéder sur la console. Le capteur reçoit bien le code.
Voici un autre code qui vous montre que les valeurs ne sont pas liées au hasard. Il permet d’afficher des “temps fictifs” d’états haut et bas en fonction du signal reçu par le récepteur infrarouge.
Ce code ne donne qu'une une approximation des temps où le signal est aux états haut et bas et ne peut pas servir des données utilisables. En revanche il montre la procédure utilisée pour décrypter un code. Pour avoir des temps plus exacts, il faut utiliser les registres de l'Arduino, c'est à dire lui parler directement sans passer par des fonctions. En effet, la fonction digitalRead()
est bien trop lente pour lire correctement le pin 7. Nous y reviendrons dans dans le cours de perfectionnement.
À noter tout de même : l'utilisation de la boucle
qui permet de réaliser un bloc de code tant que la condition est vérifiée et qui sort de la boucle lorsqu'elle ne l'est plus. C'est une alternative au
qui permet de réaliser une boucle lorsqu'on connaît la valeur finale.
Quand utiliser un récepteur infrarouge ?
Ce récepteur fait souvent partie des kits que l'on trouve dans le commerce, c'est pour ça que je vous en parle ici. En revanche, son utilisation (envoi de code IR ou réception de code IR) n'est pas accessible au débutant (à moins de copier bêtement du code ). Je donnerai des exemples d'utilisation et de programmes dans le cours de perfectionnement, vous pourrez y faire un tour si ça vous intéresse !