Go Down

Topic: Serial Read () (Read 117 times) previous topic - next topic

Harrysky

Bonjour,
je suis en projet de terminale et je suis face a un petit soucis, je souhaite envoyer des données a partir de la carte 1 (Arduino Mega) jusqu'à la carte 2 (Arduino UNO) par liaison serie. J'arrive a envoyer une valeur, et la lire sur la deuxieme carte. Voici les deux programmes :
Carte 1 (Envoie)
Code: [Select]

#include <stdio.h>

char result[3] = "";
float tempf = 23.2;
int tempff = tempf*10;
void setup() {
  // Begin the Serial at 9600 Baud
    Serial.begin(9600);
  Serial1.begin(9600);
//  dtostrf(tempff, 3,0, result);
}

void loop() {
Serial1.write (tempff);
Serial.println(tempff); //Print data on Serial Monitor
delay(50);
}


Voici le deuxième code (recevoir) :
Code: [Select]

int val ;
float tempf;

void setup() {
  // Begin the Serial at 9600 Baud
  Serial.begin(9600);
}

void loop() {

//  Serial.readBytes (result,3);
if (Serial.available() > 0) {
               
 val = Serial.read();
 tempf = val;
 tempf = tempf/10;
  Serial.println(tempf);
  delay(50);}
  //Serial.readBytes(result,4); //Read the serial data and store in var
//  Serial.println(tempf); //Print data on Serial Monitor

}


Ces deux codes fonctionnent parfaitement, mais c'etait que des test, en effet j'ai plein de variables a envoyer et, là est ma question, comment faire pour les envoyer et les ranger des que je les recois (quand je dis ranger, c'est comme le val = Serial.read();
 tempf = val;)

J-M-L

#1
Apr 04, 2019, 09:51 am Last Edit: Apr 04, 2019, 09:51 am by J-M-L
Il faut définir une syntaxe d'émission et écrire un petit analyseur syntaxique coté réception

Si vous voulez comprendre comment bien écouter le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Harrysky

Bonjour,d'après ce que j'ai compris, je ne peux pas envoyer plusieurs INT et les "ranger" derrière ?

J-M-L

#3
Apr 05, 2019, 12:22 pm Last Edit: Apr 05, 2019, 12:24 pm by J-M-L
Vous pouvez faire ce que vous voulez d'un moment que c'est décodable, par exemple pour envoyer 10 11 et 12 vous pouvez envoyer en ASCII la chaîne {10,11,12} comme ça vous avez un joli marqueur de début (le '{'), de fin (le '}') et des séparateurs (la virgule), mais si vous balancez 101112 du côté du récepteur vous aurez du mal à savoir ce qui a été envoyé. Est 101 puis 112 et il manque un nombre ou 10 puis 1 puis 112 etc... --> besoin d'une syntaxe

Si vous voulez envoyer en binaire il vous faut un marquage de début de trame qui ne peut pas se produire avec vos nombres à transmettre.. par exemple trois 0x00 à la suite si ce cas ne se produit jamais dans la transmission
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up