Le code fonctionne mais des "parasites" s'affichent dans le moniteur série

Bonjour,

J'ai réalisé ce code pour faire tourner deux moteurs électriques. Il fonctionne et répond bien à mes attentes. En revanche dans le moniteur série j'ai des logo, parasites qui s'affichent.

Quelle est l'origine de ses "parasites"?
Et comment puis je les supprimer?

Par avance merci

#include <Sabertooth.h>
 int seuil = 3;
int duree = 50;
int vmax ;
int vmin;
int distancetemps = 2000;
int E=0;
Sabertooth ST(128); // The Sabertooth is on address 128. We'll name its object ST.
                   

void setup()
{
  Serial.begin(9600); 
  SabertoothTXPinSerial.begin(9600); // 9600 is the default baud rate for Sabertooth packet serial.
  //ST.autobaud(); 
  ST.drive(0); // The Sabertooth won't act on mixed mode packet serial commands until
  ST.turn(0);  // it has received power levels for BOTH throttle and turning, since it
               // mixes the two together to get diff-drive power levels for both motors.
}

void marche_avant()
{
  int power;  
  // Don't turn. Ramp from going backwards to going forwards, waiting 20 ms (1/50th of a second) per value.
  for (power = vmin; power <= vmax; power ++)
  {
    ST.drive(power);
    //ST.drive(power);
    delay(duree);
  }
  for (power = vmax; power >=vmin; power --)
  {
    ST.drive(power);
    //ST.drive(power);
    delay(duree);
  }
}  

void marche_arriere()
{
  int power;  
  // Don't turn. Ramp from going backwards to going forwards, waiting 20 ms (1/50th of a second) per value.
  for (power = vmin; power >= -vmax; power --)
  {
    ST.drive(power);
    
    delay(duree);
  }
  for (power = -vmax; power <=vmin; power ++)
  {
    ST.drive(power);
    //ST.drive(power);
    delay(duree);
  }
}  

void tourne_droit()
{
  int power;
  
  // Faire une rotation complète vers la gauche en augmentant progressivement la vitesse de rotation.
  for (power = vmin; power <= vmax; power++)
  {
    ST.turn(power); // Définir la vitesse de rotation pour le moteur gauche (M1) et le moteur droit (M2).
    delay(duree); // Attendre 50 ms pour chaque itération.
  }

  for (power = vmax; power >= vmin; power--)
  {
    ST.turn(power); // Définir la vitesse de rotation pour le moteur gauche (M1) et le moteur droit (M2).
    delay(duree); // Attendre 50 ms pour chaque itération.
  }
}

void tourne_gauche()
{
  int power;
  
  // Faire une rotation complète vers la gauche en augmentant progressivement la vitesse de rotation.
  for (power = vmin; power <= vmax; power++)
  {
    ST.turn(-power); // Définir la vitesse de rotation pour le moteur gauche (M1) et le moteur droit (M2).
    delay(duree); // Attendre 50 ms pour chaque itération.
  }

  for (power = vmax; power >= vmin; power--)
  {
    ST.turn(-power); // Définir la vitesse de rotation pour le moteur gauche (M1) et le moteur droit (M2).
    delay(duree); // Attendre 50 ms pour chaque itération.
  }
}



void loop() {

Serial.print(E);
  if (E>seuil)
  { 
    vmax = 30;
    vmin= 0;
    tourne_gauche();
  }
    
  else if (E > 0)
  {
  vmax = 15;
  vmin= 0;
  tourne_gauche();  
  }
  
E = E +1;  
delay(5000);  

}
 


Bonjour. Des parasites peuvent s'introduire au départ après le Serial.begin(9600);. Pour cela, un delay(1000); peut largement suffire.
Mais ça n'élimine que ceux du départ.

Gardez en tête que ce n'est pas un caractère mais une variable stockant un nombre entier.

je ne connais pas ça mais j'en déduis que c'est un autre liaison série.
Si les broches 0 et 1 (TX et RX, mais pas forcément dans l'ordre) sont utilisés, alors il faudra déplacer ces câbles ailleurs sur d'autres broches.

Et aussi vérifiez si le câble est d'assez bonne qualité, on sait jamais.

J'ai ajouté delay(1000); mais aucune amélioration.
Après exécuté le code partie par partie, j'ai pu mettre en évidence que ces lignes for (power = vmin; power <= vmax; power++) { //ST.turn(-power); // Définir la vitesse de rotation pour le moteur gauche (M1) et le moteur droit (M2).

Sont à l'origine du problème. il me reste à résoudre ce mystère..

Bonjour proteca

Pour moi, ce ne sont pas des caractères parasites, l'affichage est régulier et a toujours la même "mise en page"
Ces "parasites" sont des caractères affichés avec le mauvais format de bits et ou mauvaise parité.

As tu lu les explications de l'exemple BaudRate.ino de la bibliothèque?

Cordialement
jpbbricole

si vous avez connecté Arduino TX (pin 1) ➜ Sabertooth S1et que vous avez aussi la console série ouverte, les caractère bizarres que vous voyez passer sont les commandes qui vont vers votre Sabertooth

en passant avec Software Serial vous pourrez peut être vous en sortir

#include <SoftwareSerial.h>
#include <Sabertooth.h>
SoftwareSerial SWSerial(NOT_A_PIN, 11); // RX inutilisé, TX sur pin 11 (➜  S1).
Sabertooth ST(128, SWSerial); // Address 128, et on utilise SWSerial comme UART.

void setup() {
  Serial.begin(115200); // pas la peine d'aller doucement pour le debug 

  SWSerial.begin(9600);
  ST.autobaud();
  •••
}

vous utilisez alors la pin 11 au lieu de la 1 pour connecter le Sabertooth

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.