Exemple de radiocommande une voie avec ma bibliothèque et le composant nrf24l01p ! ^_^
Imaginons que vous voulez transmettre la valeur d'un potentiomètre à votre modèle, ça donne ceci:
Code : Tout sélectionner
#include "../module/Nrf24L01P.h"
#include "../module/AnalogRead.h"
int main()
{
Nrf24L01P canal = Nrf24L01P (1);
AnalogRead potar = AnalogRead (15);
Nrf24L01P::start (1, 86400312, true);
while (true)
{
potar.state();
canal.transmit (potar.value);
}
return 0;
}
Et à l'autre bout, on fait bouger un servo avec la valeur du potentiomètre qu'on reçois par radio:
Code : Tout sélectionner
#include "../module/Nrf24L01P.h"
#include "../module/PwmWrite.h"
int main()
{
Nrf24L01P canal = Nrf24L01P (1);
PwmWrite servo = PwmWrite (1, 0, 500, 1000);
Nrf24L01P::start (1, 86400312, true);
PwmWrite::start (50);
while (true)
{
canal.receive();
servo.pulse (canal.value);
}
return 0;
}
C'est pas plus compliqué que ça, mais avec ce modeste code vous avez déjà une radiocommande 1 voie
A noter que "86400312" c'est un identifiant unique sur 32 bits (une clé réseau si vous voulez), que vous choisissez à votre guise pour sécuriser la communication entre les deux nrf24l01p.
Les possibilités sont vraiment grandes, vous pouvez émettre, transmettre à la suite dans n'importe quel ordre, j'ai essayé par exemple des configurations un peu délicates à savoir:
incrément d'une valeur (par exemple le temps qui passe)
transmission de cette valeur d'un module 1 à un autre module 2
réception de la valeur depuis le module 2 puis émission vers le module 1
réémission de la valeur reçue du module 1 vers le module 2
réémission de la valeur du module 2 vers le module 1
affichage de la valeur sur un afficheur à leds via le module 1
Et ça marche vraiment impec sans bugs, avec une latence de l'ordre du millième de secondes, et avec une portée d'au moins 1km bien-sûr
Les données utiles qui transitent sont sur 32 bits signés (+ 8 bit pour le canal ou l'adresse).
A vous de jouer
