Liaison série avec deux arduino uno problème sur le Serial.println()

Bonjour à toute et à tous,

Je débute sur arduino et je dois l’utiliser dans le cadre d’un projet où je suis contraint de mettre en série 2 arduino uno.

Je dois simplement envoyer la valeur d’un capteur analogique (comprise entre 0 et 1023) relevé par une arduino uno à une autre arduino uno qui doit comparer cette valeur avec un seuil fixé manuellement. En soit rien de très compliqué.

Cependant, pour une valeur fixe prise par mon capteur, le Serial.println() affichant la valeur prise par mon capteur semble être aléatoire et ne correspond pas du tout à la valeur de base sachant qu’en plus le moniteur série montre que cette valeur est comprise entre 0 et 255.

J’ai essayé avec Serial.write cependant j’aimerai envoyer plus d’un octet à la fin de mon projet.

Je pense ne pas avoir bien saisie la liaison série vu que pour envoyer la valeur du capteur et l’afficher j’utilise la même commande …

J’ai joint ci dessous mes deux programmes, j’espère que l’un de vous pourra m’éclairer merci d’avance pour votre réponse

Voici le code de l’arduino émettrice

int led = 13; // Led pin 13
int pinCap=0; // le capteur analogique est sur le pin A0
int valCap=0; // variable stockant la valeur renvoyée par le capteur (valeur comprise entre 0 et 1023)
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}

void loop() { //-- Toutes les 2 secondes envoi d’un message
valCap=analogRead(A0); //Lecture de la valeur du capteur positionné sur le ping A0
digitalWrite(led, HIGH); // Pendant l’envoi allume la LED
Serial.println(valCap); // Envoie de la valeur du capteur
delay(1000); // Attente de 1 secondes avant de recommencer
digitalWrite(led, LOW);

}

Et celui de l’arduino réceptrice
int led = 13; // Led pin 13
int valCap=0; // variable stockant la valeur renvoyée par le capteur (valeur comprise entre 0 et 1023)
int Seuil=255; // On règle le seuil du capteur
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
Serial.println(“Attente réception !”);
}

void loop() {
// Si des données sont présentes
if (Serial.available()) {// Affichage sur la console des données

valCap=Serial.read(); // On relève la valeur du capteur
Serial.println(valCap); // On affiche sur le moniteur série la valeur du capteur
if (valCap>Seuil) {
Serial.println(“Seuil dépassé”);
digitalWrite(led,HIGH); // La led s’allume si le seuil est dépassé

}
digitalWrite(led,LOW);
}
}

Envoie.ino (623 Bytes)

Reception.ino (984 Bytes)

lisez comment utiliser le forum (les posts épinglés en haut du forum comme “Bien éditer son post pour les nuls” , “Faire un Nouveau Sujet ou le corriger avec les Balises...” et “Règles du forum francophone”), et faites un post “propre”

(et lisez ce que fait Serial.read())

Si vous voulez comprendre comment bien écouter le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet

Dans le code de réception, essayer de remplacer par

 if (Serial.available() > 0) { //Faire quelque chose }

Ou alors
While (Serial.available() >0) { code}

Pour envoyer plusieurs messages avec l'aide de Serial.write tu peux utiliser un séparateur
Et le détecté en réception

C'est à dire Serial.write("message:message2:message3=")

En gros à chaque réception de : (ou autre caractère tu change de variable de réception
Et lorsque tu reçois = c'est la fin su message

Hum... ma reco est de commencer par lire mon tuto (ou un autre) sur le port série

+1
et de lire le post #1 ou (presque) tout est déjà dit.