Aide pour variable et IR

Après de longues recherches sur le web, je n'ai pas trouvé comment envoyer des variables par IR. J'aurais besoin de votre aide. Mon projet consiste à utiliser une station météo sur une Arduino Nano, qui enverrait les données à une Arduino Mega

Vous n'allez pas aller très loin en IR.... pas de possibilité de mettre un fil ou d'utiliser le WiFi ?

la bibliothèque IRremote peut être utilisée pour envoyer des codes — à vous de définir un protocole si vous voulez envoyer des payloads "complexes"

d'accord pour la limitation en distance, surtout en fonction de la pollution lumineuse alentour

mais ça, pour envoyer des données, c'est une presse de 10 tonnes pour enfoncer une punaise, alors que l'UART modulé par un timer à 38 kHz suffit.

bof je n'ai jamais essayé mais la bibliothèque devrait savoir envoyer 8 bits — un truc du genre

  for (size_t i = 0; i < sizeof(Payload); i++) {
    irSender.sendNEC(payloadBytes[i], 8);
    delay(10); 
  }

et vous faites cela comment?

moi non plus, et je ne la connais pas, mais sachant qu'elle sert à envoyer des codes pré-formatés je doute qu'elle sache envoyer des données brutes ... (ce n'est que mon avis)



1 timer réglé à 38 kHz, PWM à 50 %.

1 UART réglé en bas débit, car il faut prévoir au moins 15 impulsions par largeur de bit : pour 38 kHz avec un calcul rapide à la louche il ne faut pas dépasser 2400 baud.

en réception : un TSOP38238 (récupérable sur quasiment tous les téléviseurs du commerce) directement sur RX.

en émission : la DEL I.R. et sa résistance de limitation de courant, anode vers la sortie PWM et cathode vers la sortie TX ; on peut aussi prévoir une protection de la DEL (au cas où elle ne supporte pas les 5 V en inverse) avec 2 diodes type 4148.

une fois la sortie PWM configurée, elle fonctionne en continu, on ne s'en occupe plus ; l'UART est utilisé de façon classique, il sera modulé par le 38 kHz.
la DEL ne peut émettre que lorsque TX est à '0' et PWM à '1' ; le reste du temps elle est éteinte.

Non ça n'envoie pas des codes pré-formatés. ça encode la commande que vous voulez dans le format NEC ou SONY ou autre. Ce n'est peut être pas juste un octet comme je l'ai écrit (faudrait que je regarde) mais on peut envoyer ce que l'on veut.


intéressant le montage


EDIT: je suis allé voir

vous pouvez faire un truc comme cela:

uint16_t address = 0x0102;
uint8_t command = 0x34;
IrSender.sendNEC(address & 0xFF, command, 0);

vous pouvez conserver l'adresse constante et faire passer vos octets dans la commande

merci, mais ça reste un truc classique pour tout électronicien de base.



j'ai également jeté un œil (en fait, non, j'ai gardé mon œil, bien trop précieux) :
si je retire les commentaires, vire les lignes vides et compacte les lignes qui peuvent l'être, il reste encore + de 300 lignes de code, dont beaucoup très touffues ...
je me contente de ça :

/*
 * EMETTEUR.cpp
 *
 * Created: 21/10/2024 20:41:43
 * Author : 5_cylindres
 */ 

#include <avr/io.h>


int main(void)
{
	DDRB  |= 0b00001000 ;
	TCCR2A = 0b01000010 ;
	TCCR2B = 0b00000001 ;
	OCR2A  = 209 ;

	while (1)
	{
	}
}


à quoi il faut bien sûr ajouter l'init de l'UART et l'envoi des données ...

Si tu veux un code le plus compacte possible tu n'a d'autre moyen que d'encoder toi même et de décoder de l'autre coté.

ok merci mais finalement je me suis tourner ver du wifi.