Je m'intéresse à la librairie VirtualWire pour une liaison RF 433 MHz entre deux Arduino.
Après l'avoir correctement déclarer (merci fdufnews et 68tjs) et mis le code suivant :
Extrait de mon code ne concernant que la partie 433 Mhz :
#include "VirtualWire.h"//RF433
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
void RF433RX() {
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]); //Conversion ASCII
{ Serial.print(buf[i] - '0'); //Conversion ASCII des chiffres 0-9
}
Serial.println("");
}
}
}
void setup() {
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
vw_set_rx_pin(11);
}
void loop() {
RF433RX();
}
L'IDE me renvoit les erreurs suivantes :
C:\Users\Malo\AppData\Local\Temp\ccEzVDkE.ltrans0.ltrans.o: In function `main':
ccEzVDkE.ltrans0.o:(.text.startup+0x180): undefined reference to `vw_setup'
ccEzVDkE.ltrans0.o:(.text.startup+0x184): undefined reference to `vw_rx_start'
ccEzVDkE.ltrans0.o:(.text.startup+0x18a): undefined reference to `vw_set_rx_pin'
ccEzVDkE.ltrans0.o:(.text.startup+0x68a): undefined reference to `vw_wait_rx_max'
ccEzVDkE.ltrans0.o:(.text.startup+0x69a): undefined reference to `vw_get_message'
collect2.exe: error: ld returned 1 exit status
J'ignore totalement la signification ce qui est inscrit ci dessus. Si quelqu'un avait l'amabilité de m'orienter, cela m’avancerais bien.
Les messages d'erreurs montrent que des fonctions de la bibliothèques virtualwire ne sont pas reconnues par le compilateur c'est à dire qu'elles n'ont pas étée correctement déclarées
Je dirai deux choses :
le programme "réel" que l'IDE transmet au compilateur ne se limite pas aux fonctions setup() et loop().
L'IDE construit un vrai programme qui répond aux normes du C/C++ et qui donc contient une fonction main() qui appelle toutes les autres fonctions.
AMHA c'est mieux de connaître la structure d'un programme C/C++.
Pour en savoir plus sur les programmes en C/C++ consulter des sites d'initiation au C/C++ comme OpenClassRoom.
Ce que je t'ai dit à propos des < > ou des " " est général et s'applique quand on veut décomposer son programme en plusieurs fichiers.
Néanmoins vu que le compilateur ne retrouve pas toutes les déclarations dont il a besoin c'est qu'il lui manque encore quelque chose.
Plutôt que de perdre du temps à trouver quoi le mieux est de rentrer dans le rang et de faire comme tu l'a conseillé fdufnews c'est à dire d'installer la bibliothèque virtualwire là où l'IDE s'attend à la trouver c'est à dire dans le sous-répertoire "librairies" qui se trouve dans le répertoire "arduino" où sont rangé les projets personnels. Et bien sur modifier les " xxx.h" en <xxx.h>
CelticLord:
Et si tu met #include <VirtualWire.h>
ca change quelque chose ?
Vu qu'il nous a dit qu'il a installé les fichiers de la bibliothèque virtualWire dans le même répertoire que le fichier *.ino celà ne donnera pas de résultat positif.