Go Down

Topic: Emetteur - Récepteur 433 mhz (Read 1 time) previous topic - next topic

DamDamDam

Salut à tous, pour tester mon programme j'ai besoin de déconnecter l'Arduino de mon pc tout en ayant accès au moniteur série pour pouvoir lire en temps réel les informations envoyer par mon capteur de vibration et ainsi le régler correctement.

J'ai fait plusieurs essais avec plusieurs programmes et vidéos trouver sur le net mais rien de concluant, pour l'instant mon récepteur lit bien le message " measurement " et l'affiche à très grande vitesse sur le moniteur série mais aucune valeur venant du détecteur de vibration et indiquer.

Voici mes codes si quelqu'un peut m'aider je le remercie !

Émetteur :

Code: [Select]
#include <VirtualWire.h>

int vibra = 3;

void setup()
{
  vw_setup(2000);
  vw_set_tx_pin(12);
  pinMode(vibra, INPUT);
}

long TP_init()
{
  delay(10);
  long measurement = pulseIn (vibra, HIGH);
  return measurement;
}

void loop()
{
  long measurement = TP_init();
  delay(100);

  const char *Message = "measurement";
  vw_send((uint8_t *)Message, strlen(Message));
  vw_wait_tx();
  delay(200);
}


Récepteur :

Code: [Select]
#include <VirtualWire.h>

uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

void setup()
{
  Serial.begin(9600);
  Serial.println("--------Mesure des Vibrations-------");
  vw_setup(2000);
  vw_set_rx_pin(11);
  vw_rx_start();

}

void loop()
{
  long measurement;
  if (vw_get_message(buf, &buflen))
    delay(250);

  Serial.print("measurment = ");
  Serial.println(measurement);

}


Merci.

kamill

Bonjour,

Ca parait assez normal tu envois la chaine "measurement, tu reçois la chaine "measurement".

Essaie ça:

émission:
Code: [Select]
void loop()
{
  long measurement = TP_init();
  delay(100);
  vw_send((uint8_t *)&measurement, sizeof measurement);
  vw_wait_tx();
  delay(200);
}


réception:
Code: [Select]
void loop()
{
  long measurement;
  uint8_t lg=sizeof measurement;
  
  if (vw_get_message((uint8_t *)&measurement, &lg))
    delay(250);

  Serial.print("measurment = ");
  Serial.println(measurement);

}

kamill

Je pense qu'il y a une autre erreur dans la réception. Tu as sans goute voulu afficher si tu reçois ce qui donne:
Code: [Select]
void loop()
{
  long measurement;
  uint8_t lg=sizeof measurement;
 
  if (vw_get_message((uint8_t *)&measurement, &lg))
  {
    Serial.print("measurment = ");
    Serial.println(measurement);
  }
}

DamDamDam

Merci d'avoir répondu, sur ton premier code, il affiche " measurement = 11010048 " dans le moniteur série et défile à l'infinie à très grande vitesse.
Dans le deuxième code rien ne ce passe, je ne c'est pas comment résoudre sa et je ne trouve rien sur le net qui correspond un minimum à mon besoin !

kamill

Si rien ne  se passe dans le 2eme programme c'est que tu ne reçoit rien. Tes modules radio fonctionnent?

DamDamDam

oui je l'ai et tester avec un code trouver sur le net !!!

DamDamDam

J'ai fini par tout reprendre à zéro et je me suis rendu compte que seulement l'une des deux pattes en data du récepteur fonctionne, donc tes codes marche parfaitement !
Merci à toi, si je peux te rendre service à mon tour hésite pas à me contacter, je fait de l'impression 3D !

kamill


Go Up