Bonjour, pour un projet j'ai à mettre en place deux modems et une arduino nano.
Le premier modem est branché à mon pc et envoie depuis un terminal série un caractère.
Le deuxième est branché à un max23é et à mon arduino nano pour recevoir ce caractère.
Une fois le caractère testé je voudrais le tester : si a est envoyé on écrit dans le terminal série "j'ai envoyé a".
Voici mon code, savez vous pourquoi cela ne fonctionne pas ?
(idéalement cela devrait être une chaine de caractère du style j'envoie stop et on écrit dans le terminal série "j'ai envoyé stop".
Merci d'avance
char recu;
void setup() {
Serial.begin(19200);
}
void loop()
{
if (Serial.available() > 0)
{
delay(100);
//Serial.println("je rentre dans le loop");
while(Serial.available() > 0) // tant qu'il y a des caractères à lire
{
recu=Serial.read();
Serial.print(recu);
if(recu=="a")
{
Serial.println("c'est a");
}
}
}
}
effectivement merci !
Je voudrais maintenant tester une chaine de caractère j'ai donc fait ce code :
char recu;
void setup() {
Serial.begin(19200);
}
void loop()
{
if (Serial.available() > 0)
{
delay(100);
//Serial.println("je rentre dans le loop");
while(Serial.available() > 0) // tant qu'il y a des caractères à lire
{
recu=Serial.read();
Serial.print(recu);
if(recu=="go")
{
Serial.println("c'est go");
}
}
}
}
Bin non, y'a pas de miracle...
Avec Serial.read(), tu reçois un caractère. Un seul.
Donc pour recevoir "go", il va falloir passer 2 fois par Serial.read() !
Alors, la 1ère fois, tu ranges le caracthère reçu -> tu le mets dans une autre variable
char premier_recu = recu
puis tu refais Serial.read(), et ensuite, tu testes
if ( premier_recu == 'g' && recu == 'o' ) { ...
Par ailleurs, selon ce que fait l'emetteur, il peut y avoir des caractères "non-affichables" à la suite (en particulier Carriage Return et Line Feed c-à-d Retour Charriot et A La Ligne - vieux souvenir des machines à écrire mécaniques)
Tu vas devoir en tenir compte.