Go Down

Topic: Problème code source MRF89XA (Read 255 times) previous topic - next topic

Val52100

Bonjour,
Je voudrais faire communiquer deux Arduinos (uno et nano) en RF à l'aide de module MRF89XA.

Le site Arduino propose un code d'interface à cette adresse :
https://playground.arduino.cc/InterfacingWithHardware/MRF89XA

J'ai télécharger les librairies RadioHead (qui ne sont plus disponible depuis la page arduino)

Le problème est que certaines structure du code fourni ne sont pas reconu par le logiciel Arduino.

Voici un copier-collé du message d'erreur :



Arduino : 1.8.4 (Windows 7), Carte : "Arduino/Genuino Uno"

Bip_pnp:31: error: no matching function for call to 'RH_MRF89::RH_MRF89(int, int, int, int)'

 RH_MRF89 driver(3, 5, 4, 2);

                           ^

D:\Documents\Cesi\pnp\Bip_pnp\Bip_pnp.ino:31:27: note: candidates are:

In file included from D:\Documents\Cesi\pnp\Bip_pnp\Bip_pnp.ino:21:0:

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:428:5: note: RH_MRF89::RH_MRF89(uint8_t, uint8_t, uint8_t, RHGenericSPI&)

     RH_MRF89(uint8_t csconPin = SS, uint8_t csdatPin = 9, uint8_t interruptPin = 2, RHGenericSPI& spi = hardware_spi);

     ^

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:428:5: note:   no known conversion for argument 4 from 'int' to 'RHGenericSPI&'

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:377:7: note: constexpr RH_MRF89::RH_MRF89(const RH_MRF89&)

 class RH_MRF89 : public RHNRFSPIDriver

       ^

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:377:7: note:   candidate expects 1 argument, 4 provided

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:377:7: note: constexpr RH_MRF89::RH_MRF89(RH_MRF89&&)

C:\Program Files (x86)\Arduino\libraries\MRF89XA/RH_MRF89.h:377:7: note:   candidate expects 1 argument, 4 provided

Bip_pnp:48: error: 'RH_MRF89XA_MAX_MESSAGE_LEN' was not declared in this scope

 uint8_t buf[RH_MRF89XA_MAX_MESSAGE_LEN];

             ^

D:\Documents\Cesi\pnp\Bip_pnp\Bip_pnp.ino: In function 'void loop()':

Bip_pnp:69: error: 'buf' was not declared in this scope

         uint8_t len = sizeof(buf);

                              ^

exit status 1
no matching function for call to 'RH_MRF89::RH_MRF89(int, int, int, int)'

Si quelqu'un peut me prêter son aide je lui en serai extrêmement reconnaissant. :)
Merci.



lesept

Je n'ai jamais utilisé ces modules et je ne connais pas cette bibliothèque, donc je ne garantis pas ce qui suit.


En regardant le fichier RH_MRF89.h on trouve ceci :

Code: [Select]
    /// Constructor. You can have multiple instances, but each instance must have its own
    /// interrupt and 2 slave select pins. After constructing, you must call init() to initialise the interface
    /// and the radio module. A maximum of 3 instances can co-exist on one processor, provided there are sufficient
    /// distinct interrupt lines, one for each instance.
    /// \param[in] csconPin the Arduino pin number connected to the CSCON pin of the MRF89XA.
    /// Defaults to the normal SS pin for your Arduino (D10 for Diecimila, Uno etc, D53 for Mega, D10 for Maple)
    /// \param[in] csdatPin the Arduino pin number connected to the CSDAT pin of the MRF89XA.
    /// Defaults to 9.
    /// \param[in] interruptPin The interrupt Pin number that is connected to the IRQ1 pin of the MRF89XA.
    /// Defaults to pin 2. (IRQ0 pin of the MRF89XA does not need to be connected).
    /// \param[in] spi Pointer to the SPI interface object to use.
    ///                Defaults to the standard Arduino hardware SPI interface
    RH_MRF89(uint8_t csconPin = SS, uint8_t csdatPin = 9, uint8_t interruptPin = 2, RHGenericSPI& spi = hardware_spi);

    /// Initialise the Driver transport hardware and software.
    /// Make sure the Driver is properly configured before calling init().


Les arguments passés dans la déclaration du module RF sont les pins SS, CS, IRQ et SPI de l'arduino. On ne peut pas mettre n'importe quoi ici, comme c'est expliqué dans ces lignes.
Par exemple, la pin SS du Nano est la D10. Le IRQ serait le D2...

Pour les autres, je ne sais pas trop. Peut-être d'autres membres du forum pourront te les indiquer. Il y a des indications ici pour le UNO : https://playground.arduino.cc/InterfacingWithHardware/MRF89XA
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up