Problème liaison entre 2 cartes arduino myserial.write

salut à tous,
j'ai un petit soucis pour communiquer avec 2 carte arduino. sur le simulateur tinkercad j'arrive bien à envoyer et recevoir des caractères sur la carte esclave mais j'ai il me semble un soucis de rafraichissement des données car quand je veux envoyer un autre caractère après un autre, j'ai toujours l'autre caractère qui s'envoie de temps à autre.
j'utilise le myserial.write
voici mon problème je veux "simuler" un un de chantier (rouge vert) avec un feu maitre :
qui envoi un caractère quand il est au rouge donc le feu esclave doit se mettre au vert quand il reçoit se caractère
qui envoi un autre caractère quand il est au vert et le feu esclave doit donc se mettre au rouge : voici les codes utilisés :

// C++ code
// programme maitre
#include <SoftwareSerial.h>
String readString;
SoftwareSerial mySerial(10,11); //rx tx

// déclaration de l'etat des LED
int EtatLedV;
int EtatLedR;

//sortie des LED
int feurouge1 = 8;
int feuvert1 = 7;
  



void setup()
{
  mySerial.begin(9600);
 Serial.begin(57600); //vitesse de transmission baud
  pinMode(feurouge1 , OUTPUT);
  pinMode(feuvert1 , OUTPUT);
  Serial.println("demarrage Programme Feu chantier");
  //lecture de l'etat des sorties
  
   
  
}

void loop()
{
 
  digitalWrite(feurouge1,HIGH);
  digitalWrite(feuvert1,LOW);
  for (int i=0; i <= 20; i++) 
  {
  mySerial.write("FFFFFF\n"); //envoi de la chaine de caractère 
    Serial.println("envoi F");
  }
  delay(1000);
   for (int i=0; i<= 200; i++)
  {
  mySerial.write("OOOOO\n"); //envoi de la chaine de caractère 
  Serial.println("envoi O");
  }
  
  digitalWrite(feurouge1,LOW);
  digitalWrite(feuvert1,HIGH);
  delay(1000);
 
}

// C++ code
// programme esclave

#include <SoftwareSerial.h>
String readString;
SoftwareSerial mySerial(10,11); //rx tx

int feurouge2 = 8;
int feuvert2 = 7;

void setup()
{
  mySerial.begin(9600);
 Serial.begin(57600); //vitesse de transmission baud
  Serial.println("demarrage de Programme");
  pinMode(feurouge2 , OUTPUT);
  pinMode(feuvert2 , OUTPUT);
}

void loop()
{

  
  while(mySerial.available()){
    delay(10);
    char c = mySerial.read();
      readString += c;
  }
  
  Serial.println(readString);
  
  if(readString.indexOf("F")!=-1)
  {
    digitalWrite(feurouge2,LOW);
    digitalWrite(feuvert2,HIGH);
  } delay(10);
  if(readString.indexOf("O")!=-1)
  {
    digitalWrite(feurouge2,HIGH);
    digitalWrite(feuvert2,LOW);
  } delay(10);
  
 
}

Si vous voulez explorer comment écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

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