Arduino <== RS232 ==> Arduino

Plop,

Bon , je viens d'essayer ceci :

//Carte Uno sous-marin

void setup() {
  
  Serial.begin(9600); //Lancer le mode série
  
  pinMode(13, OUTPUT);
  
  delay(50);
}

void loop() {
  
  String str = "";
  
  if(Serial.available()){
    
    delay(20);
    
    while(Serial.available()) {
      
      str+=(char)Serial.read();
    }
    
    if(str.equals("[ON]")) {
      digitalWrite(13, HIGH);
    }
  
    if(str.equals("[OFF]")) {
      digitalWrite(13, LOW);
    }
  }
}

Pourquoi je me suis lever les bras en l'air en criant "Ça marche ! Ça marche !"...

Merci pour le coup de pouce :slight_smile:

A partir de là, je pense faire ceci:

  • Si on a bien un signal -> if(Serial.available()){
  • Si on a bien reçu le premier caractère "<"
  • Boucler tant que l'on a pas reçu le dernier caractère ">"
  • Récupérer la chaîne, parser les commandes "organe:numéro/option:valeur" Si pas d'option, se laisser la possibilité de mettre "organe:numero"

D'une manière générale, je vais faire un code tournant, c'est à dire passé commande par commande, plutôt que tout à la fois. Ainsi, j'aurais:
Mot1:1.5
Mot2:1.5
Ser1:2
Ser2:1
Ser3:1.5
Pre1:Lock ou Pre1:Unlock
Lig1:On ou Lig1:Off (pour les lights)

C'est qu'un exemple mais je pense que ça peut se faire, sinon, je part avec des valeurs fixes. Genre on envoie <00000000000000000000> On sait qu'on a une balise entrante, 20 caractères, balise fermante. Si on a une liaison défectueuse, à ce moment là, la uno aquite le défaut et passe en mode sécu. Vidage du ballast, mise en marche des feux d'erreurs.