Envoie d'information vers l'application mobile par bluetooth

Bonjour a toute et a tous,

Pour mon projet de terminale SIN, je dois prendre l’information capter par le micro puis l’envoyer via bluetooth a mon application mobile faite sur app inventor 2.
Le problème que je rencontre est que j’ai bien la valeur capter par le micro dans le terminal, mais je n’arrive pas a l’envoyer et l’afficher sur l’application mobile.

Voici le code arduino:

#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11);
const int pinAdc = A0;
void setup()
{
    Serial.begin(9600);
    BTserial.begin(9600);
    //Serial.println("Grove - Sound Sensor Test...");
}

void loop()
{
    long sum = 0;
    for(int i=0; i<35; i++)
    {
        sum += analogRead(pinAdc);
    }

    sum >>= 5;

if (sum<130){
  Serial.print("Pas de bruit :");
  Serial.println(sum);
  BTserial.write(4);}
if (sum>130){{
  Serial.print("Bruit :");
  Serial.println(sum);}
  BTserial.write(5);
  while(1){
  delay(6000);
  break;}
 }
 
    delay(1000);

}

En espérant recevoir de l’aide
Merci d’avoir lu ce post en espérant avoir été le plus clair possible :wink:

Je refresh le post car toujours pas de solution trouvée

Je pense que ton problème viens de ta réception de données sur appinventor. Mais tu as quand même des erreurs après ton (sum>130) tu as deux accolades ouvrantes et tu as un while(1) suivi d'un délai de 6s mais la boucle while(1) est une boucle infinie donc tu ne dois pas sortir de celle ci une fois entrée dedans. Et tu devrais faire des recherches sur Google avant de poser des questions sur le forum Arduino il te manque toute une partie pour la transmission bluetooth.

Non le code est OK ... à part les 2 accolades ridicules, le while 1 (mais il y a un break) qui ne sert à rien, un else ne ferait pas de mal histoire d'avoir un truc à faire pour la valeur 130 et ne pas exécuter 2 tests dont un pour rien, la boucle for qui ne devrait aller que jusque à 32 au lieu de 35 vu le >>5 plus tard, et tous les delay qui ne servent à rien...

Vérifiez que votre BT est bien branché, son TX à la Pin 10 et son RX à la Pin 11, que votre module supporte le 5V, et qu'il est configuré correctement à 9600 bauds et appairé bien sûr et que votre app est sur le bon port

Ensuite côté appInventor testez vous si vous recevez Le caractère '4' et '5' ou un octet valant 4 ou 5? (Vous n'envoyez pas le caractère)

Merci a vous de vos réponses,

Comme j'ai du le dire je ne m'y connais pas trop niveau transmission bluetooth et je pensais qu'en postant sur le forum arduino on pourrait m'aider.

Ça dois faire 2 semaine que je cherche le bonnes lignes de codes pour pouvoir envoyer une information de la carte arduino au téléphone mais je ne trouve pas. Je vous demande donc un petit peu d'aide si possible ::slight_smile:

Merci a vous

Votre code est globalement Fonctionnel - juste pas top à cause des points mentionnés ci dessus

Si rien ne se passe c'est sans doute un pb ailleurs - vous n'avez pas répondu à mes questions du post #3

J-M-L:
Non le code est OK ... à part les 2 accolades ridicules, le while 1 (mais il y a un break) qui ne sert à rien, un else ne ferait pas de mal histoire d'avoir un truc à faire pour la valeur 130 et ne pas exécuter 2 tests dont un pour rien, la boucle for qui ne devrait aller que jusque à 32 au lieu de 35 vu le >>5 plus tard, et tous les delay qui ne servent à rien...

Vérifiez que votre BT est bien branché, son TX à la Pin 10 et son RX à la Pin 11, que votre module supporte le 5V, et qu'il est configuré correctement à 9600 bauds et appairé bien sûr et que votre app est sur le bon port

Ensuite côté appInventor testez vous si vous recevez Le caractère '4' et '5' ou un octet valant 4 ou 5? (Vous n'envoyez pas le caractère)

Alors pour le while, c'est que je voudrais dès que ca détecte un bruit au dessus de 130, ça se bloque pendant un temps défini par le delay, pour pouvoir envoyer l'information au téléphone. Pour le 35, je l'ai modifié par 32 comme indiqué par vous

Au niveau du branchement j'ai bien fait attention et j'ai fais vérifier par le professeur, tout est ok.

Je pense que c'est au niveau de appinventor que je maîtrise partiellement que ça cloche

Merci de votre aide en espérant avoir répondu a vos questions

essayez avec ce code plus propre

Assurez vous que la pin 10 de l’arduino est connecté au Tx du BT
Assurez vous que la pin 11 de l’arduino est connecté au Rx du BT
Mettre la console Arduino à 115200
Assurez vous que le serial du BT est réglé à 9600 bauds

#include <SoftwareSerial.h>

SoftwareSerial BTserial(10, 11);
// Assurez vous que la pin 10 de l'arduino est connecté au Tx du BT
// Assurez vous que la pin 11 de l'arduino est connecté au Rx du BT

const byte pinAdc = A0;

void setup()
{
  Serial.begin(115200); // mettre la console arduino a 115200
  BTserial.begin(9600); // Assurez vous que le serial du BT  est réglé à 9600 bauds
}

void loop()
{
  int v = analogRead(pinAdc);
  if (v < 130) {
    Serial.print("Pas de bruit :"); Serial.println(v);
    // BTserial.write('4'); // si vous voulez envoyer une valeur qui est la représentation ASCII caractère '4'
    BTserial.write(4); // si vous voulez envoyer la valeur (chiffre) 4
  } else  {
    Serial.print("Bruit :"); Serial.println(v);
    // BTserial.write('5'); // si vous voulez envoyer une valeur qui est la représentation ASCII caractère '5'
    BTserial.write(5); // si vous voulez envoyer la valeur (chiffre) 5
  }
  delay(1000); // si vous voulez envoyez les infos toutes les secondes
}

vérifiez si votre code appinventor attend un caractère ou une valeur