Je travaille sur un projet dans lequel je dois afficher une consommation énergétique.
Je reçois cette consommation grâce à une liaison série entre une carte Arduino UNO et une carte Arduino YUN.
Sauf que mon problème est pour intégrer ce que je reçois en liaison série dans une chaine de caractère.
Pour l'instant, j'ai ce code mais ça ne donne rien :
Un char c'est un caractère unique. Ce que tu reçois c'est une chaîne de caractères c'est à dire une suite de caractères.
Le plus simple pour recevoir une chaine de caractères c'est d'utiliser readBytes()
char s[20]; // à dimensionner en fonction de la chaine espérée
if (mySerial.available())
{
int n = mySerial.readBytes(s, sizeof s - 1);
s[n] = 0; // marque la fin de la chaine
Serial.println(s);
}
dans ton code, tu declares un pointeur char* s;
Puis, tu lis un caractère et tu le stockes à l’adresse définie par ce pointeur *s=(char)Serial.read();
Sauf que … tu n’as jamais défini quelle adresse est pointée par le pointeur.
Donc ton caractère est stocké … n’importe où. Il y a des chances que ce soit à l’adresse 0, mais par sûr.
Donc, fais simple :
char mystr[5] = "Hello"; //String data
void setup() {
// Begin the Serial at 9600 Baud
Serial.begin(9600);
}
void loop() {
Serial.write(mystr,5); //Write the serial data
delay(1000);
}
Récepteur:
char mystr[10]; //Initialized variable to store recieved data
void setup() {
// Begin the Serial at 9600 Baud
Serial.begin(9600);
}
void loop() {
Serial.readBytes(mystr,5); //Read the serial data and store in var
Serial.println(mystr); //Print data on Serial Monitor
delay(1000);
}
Maintenant, mon problème est que je n'arrive pas à envoyer et recevoir une variable (Un analogRead par exemple) .... Donc si jamais tu as une piste, ou quelqu'un d'autre
Avez vous pensé, si vous souhaitez décoder proprement (i.e sans perte de caractères; sans horreurs qui sont presque aussi nombreuses que les lois de Murphy) à regarder: