Optimiser une communication Bluetooth
Bonjour,
Mon programme tournant sur une MEGA 2560 réceptionne par Bluetooth les ordres venant d'un Smartphone, puis il les traite.
Même si pour l'instant je me contente de retransmettre les ordres reçus sur le moniteur série (j'intègrerai ça dans mon vrai programme plus tard), ça fonctionne parfaitement avec un HC-06.
Le problème est que c'est trop lent: il se passe environ 1 seconde entre l'appui sur le bouton et l'affichage sur le moniteur série.
Je sais que d'autres ont eu le même problème (forums U.S., mais je n'ai pas vraiment compris) mais je cherche juste une solution simple pour accélérer les choses: pas envie de monter une usine à gaz.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
String Incoming_value; // déclare "Incoming_value" comme une CHAINE qui recevra le nom du bouton du smartphone
//on ne l'initialise pas semble-t-il
void setup()
{
Serial.begin(9600); // on définit la vitesse à 9600 sur le moniteur série ? ou sur la lecture HC06 ?
// pinMode(13, OUTPUT); // on connectera la LED de contrôle sur la pin 13 de l'Arduino
}
void loop()
{
if(Serial.available() > 0) // quand on appuiera sur un bouton du Smartphone, cette valeur deviendra forcément supérieure à 1
// et ça voudra dire qu'une valeur reçue est disponible
{
Incoming_value = Serial.readString(); // une valeur ayant été reçue, on la transfère dans notre chaine "incoming value"
// mais pas sûr que ça lise la chaine d'un coup....
Serial.print("RX recu = "); // essaie pour faire afficher ça sur le Moniteur serie
Serial.print(Incoming_value); // Envoie la valeur de Incoming_value reçue sur le Moniteur série
Serial.print("\n"); // on fait un retour à la ligne pour que la prochaine valeur s'affiche sur la ligne d'après
if (Incoming_value.equals("REWIND")) // pour comparer une chaine decaractères dans un IF, le + simple est d'utiliser la fonction".equals" comme indiquée
{
// Serial.print(Incoming_value); // Envoie la valeur de Incoming_value reçue sur le Moniteur série
Serial.print("Appui sur Button1: REWIND"); // on envoie sur le Moniteur Série qu'on a détecté l'appui sur Button1
Serial.print("\n"); // on fait un retour à la ligne pour que la prochaine valeur s'affiche sur la ligne d'après
}
if (Incoming_value.equals("PLAY")) // pour comparer une chaine decaractères dans un IF, le + simple est d'utiliser la fonction".equals" comme indiquée
{
// Serial.print(Incoming_value); // Envoie la valeur de Incoming_value reçue sur le Moniteur série
Serial.print("Appui sur Button2: PLAY"); // on envoie sur le Moniteur Série qu'on a détecté l'appui sur Button2
Serial.print("\n"); // on fait un retour à la ligne pour que la prochaine valeur s'affiche sur la ligne d'après
} |
J'ai tronqué le code puisque les tests qui suivent sont similaires.
Comment faire pour optimiser la vitesse de traitement ??
Merci !