Bonjour à tous, je suis novice sur arduino (uno) et j'ai quelques petits soucis avec mon petit bout de code. Le but de mon programme étant de récupérer ma position gps pour l'envoyer par module radio à un autre arduino (uno). Seulement voilà, j'arrive a émettre et recevoir un entier avec un programme et à avoir ma position avec un autre programme, mais de faire les deux à la fois dans un même programme ne fonctionne pas, je tiens à préciser que comme je suis novice les deux programmes (émetteur/récepteur et gps) ne sont pas les miens ils ont été modifié pour répondre à mes attentes.
Voici mon programme du récepteur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*********************
 * gps
 *10 to GPS Module TX*
 *09 to GPS Module RX*
 *emetteur
 *
 *********************/
#include <VirtualWire.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
 
SoftwareSerial mySerial(10, 9);
TinyGPS gps;
 
void gpsdump(TinyGPS &gps);
 
 
void setup()  
{
 
  Serial.begin(9600);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  delay(1000);
  Serial.println("emetteur gps");
  //vw_setup(2000);
  Serial.println("Go !"); 
}
 
 
 
 
void loop() // run over and over
{
  bool newdata = false;
  unsigned long start = millis();
  // Every 5 seconds we print an update
  while (millis() - start < 5000) 
  {
    if (mySerial.available()) 
 
    {
      char c = mySerial.read();
      Serial.print(c);  // uncomment to see raw GPS data
      if (gps.encode(c)) 
      {
        newdata = true;
        break;  // uncomment to print new data immediately!
      }
    }
  }
  if (newdata) 
  {
    Serial.println("Acquired Data");
    Serial.println("-------------");
    gpsdump(gps);
    Serial.println("-------------");
    Serial.println();
  }
 
}
 
void gpsdump(TinyGPS &gps)
{
 
  long lat, lon;
 
 
  gps.get_position(&lat, &lon);
  Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); 
 
  Serial.print("debut");
  vw_send((byte *) &lat, sizeof(lat)); // On envoie le message
  vw_wait_tx(); // On attend la fin de l'envoi
  Serial.print("fin");
 
 
}
le soucis est quand je met vw_setup(2000); le programme stop lors de l'envoi du message.
et celui du récepteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * Exemple de code pour la bibliothèque VirtualWire – Serveur d'envoi de variable
 */
 
#include <VirtualWire.h>
 
void setup() {
  Serial.begin(9600);
 
  // Initialisation de la bibliothèque VirtualWire
  // Vous pouvez changez les broches RX/TX/PTT avant vw_setup() si nécessaire
  vw_setup(2000);
  vw_rx_start(); // On peut maintenant recevoir des messages
 
  Serial.println("Go !"); 
}
 
void loop() {
  float valeur;
  byte taille_message = sizeof(float);
 
  /* 
   La variable "taille_message" doit impérativement être remise à 
   la taille de la variable avant de pouvoir recevoir un message. 
   Le plus simple est d'utiliser une variable locale pour ne pas
   avoir à réassigner la valeur à chaque début de loop().
   */
 
  // On attend de recevoir un message
  vw_wait_rx();
 
  if (vw_get_message((byte *) &valeur, &taille_message)) {
    // On copie le message, qu'il soit corrompu ou non
 
    Serial.println(valeur); // Affiche le message
  }
}
Je vous remercie d'avance pour l'aide que vous m'apporterez, dans l'attente de vos réponses.