Go Down

Topic: IMU 9D0F (Read 1 time) previous topic - next topic

Flooow

Code: [Select]

#include <SoftwareSerial.h>

SoftwareSerial Heol_bluetooth(10, 11);
SoftwareSerial IMU(8, 9);

char IMUData = ' ';

void setup()
{
  Serial.begin(115200);
}

void loop()
{
    /* Begin the IMU Serial and if data is available, capture this */
    IMU.begin(57600);
   
    if (IMU.available())
    {
      IMUData = (char)IMU.read();
      IMU.end();
    }

    /* Now begin the Bluetooth Serial and send the IMUData is data is available on BL Flow */
    Heol_bluetooth.begin(115200);
   
    if (Heol_bluetooth.available())
    {
      Heol_bluetooth.print(IMUData);
      Heol_bluetooth.end();
    }
}


J'ai donc réessayer le BL et comme je m'y attendais, cela ne fonctionne pas.
Pourtant j'ai essayer ce code, qui est censé arrêté la liaison une fois que la donnée IMU est capturé avant de commencer celle du BL, mais rien n'y fait.

J'ai donc essayer de prendre la liaison série direct de l'arduino avec le code suivant:

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

SoftwareSerial Heol_bluetooth(10, 11);
SoftwareSerial IMU(8, 9);

char IMUData = ' ';

void setup()
{
  Serial.begin(115200);
  Heol_bluetooth.begin(115200);
}

void loop()
{
    /* Begin the IMU Serial and if data is available, capture this */   
    if (Serial.available())
      IMUData = (char)Serial.read();

    /* Now begin the Bluetooth Serial and send the IMUData is data is available on BL Flow */   
    if (Heol_bluetooth.available())
      Heol_bluetooth.print(IMUData);
}



Je reçoit bien une donnée sur le BL, mais complètement inexploitable:


Une idée ?

Merci

J-M-L

#16
Feb 18, 2017, 05:59 pm Last Edit: Feb 18, 2017, 06:04 pm by J-M-L
cf post #3 --> software serial est très touchy quand vous en avez 2 en même temps

il faut bien séparer les communications, utiliser listen() etc. cf la doc

à mon sens il vous faut mettre l'IMU sur du software Serial et le BT sur le hardware serial, une fois déconnecté le câble USB

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Flooow

Code: [Select]

#include <SoftwareSerial.h>

SoftwareSerial IMU(8,9);

char bluetoothData = ' ';
char imuData = ' ';

void setup()
{
  Serial.begin(115200);
  IMU.begin(57600);
}

void loop()
{
  IMU.listen();

  if(IMU.available())
    imuData = (char)IMU.read();

  if(Serial.available())
    bluetoothData = (char)Serial.read();

  if(bluetoothData == 'a')
  {
    Serial.print(imuData);
  }
 
}


Ce code est en parti fonctionnel, à savoir si le BL reçoit a, il envoi les données de l'IMU, mais juste une question:

Pourquoi quand je rajoute dans le if bluetoothData == 'a' un bluetoothData = ' ' à la fin, pour qu'il ne me l'envoi qu'une fois le temps qu'il n'y a pas de relecture, cela ne fonctionne plus ?

Je reçoit un vide (c'est à dire qu'il rentre dans le if mais ne m'envoi un blanc), très étrange ...

Flooow

J'ai donc corrigé 3/4 du problème.

Un dernier soucis, lorsque je suis connecté à L'IMU en direct, le moniteur m'affiche une donnée par ligne, alors que lorsque je les lit sur le BL, j'ai 1 donnée, plein de ligne blanche, 1 donnée etc ...

Savez vous d'ou peut venir ce soucis ?

Merci. Bon Dimanche

J-M-L

si vous faites cela
Code: [Select]
#include <SoftwareSerial.h>
SoftwareSerial IMU(8, 9);

void setup()
{
  Serial.begin(115200); // le BT
  IMU.begin(57600); // l'IMU
}

void loop()
{
  int imuData;

  if (IMU.available()) {
    imuData = IMU.read();
    if (imuData != -1) Serial.print((char)imuData);
  }
}
ça donne quoi? (avec le BT connecté sur les pins 0 et 1 du port série matériel)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Flooow

C'est beaucoup mieux, effectivement je n'avais pas pensé à faire cela.

Merci bien, sujet résolu ;)

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up