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 ![]()
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.