[Résolu] RF433 Mhz Reception de chiffre uniquement

Bonjour,
je me présente rapidement, je me suis mis à Arduino voila de cela 2 mois et je dois avouer que je trouve ça passionnant. Ancien codeur PHP, je trouve ce projet vraiment intuitif ! Seulement j'ai quelque lacune sur les variables je pense..
Je vous expose mon problème : je commence à m'amuser à transmettre avec mon arduino, cependant je reçois mes transmissions sous forme de chiffre. Je suppose donc à une erreur de conversion ? Voici les codes :
Reception :

#include <VirtualWire.h> // inclusion de la librairie VirtualWire
 
void setup() // Fonction setup()
{
    Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
    Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
 
    vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
    vw_rx_start();  // Activation de la partie réception de la librairie VirtualWire
}
 
void loop() // Fonction loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN]; // Tableau qui va contenir le message reçu (de taille maximum VW_MAX_MESSAGE_LEN)
    uint8_t buflen = VW_MAX_MESSAGE_LEN; // Taille maximum de notre tableau
 
    // REMARQUE ULTRA IMPORTANTE :
    //   Par le passé ces deux lignes se trouvaient en "haut de programme", c'était donc des variables globales.
    //   Elles ne doivent PAS être globales, c'est très important !
    //
    //    Pourquoi ?
    //    C'est très simple. Posez vous la question suivante : que vaut "buflen" si la réception d'un message échoue, 
    //    où qu'on reçoit un message de moins de VW_MAX_MESSAGE_LEN octets ?
    //    Au début "buflen" vaut VW_MAX_MESSAGE_LEN, mais après "buflen" vaudra une valeur < VW_MAX_MESSAGE_LEN.
    //    Et paf, la taille de votre buffer vient de diminuer pour la réception suivante, et ainsi de suite.
 
    if (vw_wait_rx_max(200)) // Si un message est reçu dans les 200ms qui viennent
    {
        if (vw_get_message(buf, &buflen)) // On copie le message, qu'il soit corrompu ou non
        {
            Serial.print("RX : ");
            for (byte i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
                Serial.print(buf[i]);
            Serial.println("");
        }
    }
}

Emetteur :

#include <VirtualWire.h> // inclusion de la librairie VirtualWire
 
const char *msg = "Arduino"; // Tableau qui contient notre message
 
void setup() // Fonction setup()
{
    Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
    Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
 
    vw_setup(2000);     // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
}
 
void loop() // Fonction loop()
{
    Serial.print("TX ... "); // On signale le début de l'envoi
    vw_send((uint8_t *)msg, strlen(msg)); // On envoie le message 
    vw_wait_tx(); // On attend la fin de l'envoi
    Serial.println("Done !"); // On signal la fin de l'envoi
    delay(1000); // Et on attend 1s pour pas flooder
}

Au lieu de recevoir "Tuto VirtualWire" , je reçois 65114100117105110111

Merci à vous :slight_smile:
Arthur

Salut,

tutur19:
Au lieu de recevoir "Tuto VirtualWire" , je reçois 65114100117105110111

Ca c'est normal : tu envois "Arduino" et effectivement Arduino en ASCII ça fait 65 114 100 117 105 110 111

Pour corriger fait :

for (byte i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
                Serial.print(char(buf[i]));
            Serial.println("");

Merci beaucoup, ça fonctionne ! Et en plus grace à toi, j'ai compris pourquoi :slight_smile: !
Un grand merci !