Je rencontre une difficulté à trouver le code nécessaire pour créer un ordre et le réaliser.
En fait, le projet que je réalise est un robot qui roule et qui prend des mesures. Pour la partie moteur et sonde, le code est terminé mais je n'arrive pas trouver les commandes qui permettent de mettre en marche le tout grâce au bluetooth.
Je suis capable de communiquer entre le téléphone et le module grâce à l'application "Bluetooth Terminal HC-05". (dans le moniteur série)
De plus, même avec la commande "SoftwareSerial mySerial(10, 11);" je ne peux que communiquer par l'entrée Rx-0 et la sortie Tx-1.
En pièce jointe, j'ai mis un programme venant d'un site qui est censé faire fonctionner ou pas une led depuis le smartphone. Cependant, le code fonctionne mais impossible d'allumer la led.
Je suis bien à 9600 bauds. Le delay(1000); ne sert bien à rien, je me suis documenté puis je l'ai supprimé du code. J'ai du donner une version antérieure.
Oui j'arrive à m'appairer et à communiquer avec le HC-05.
Le problème étant que je ne sais pas comment m'y prendre pour vérifier le slave/master. En effet, j'ai essayé diverses techniques trouvée sur le web mais aucune ne m'a permis de vérifier ou même paramétrer le mode.
dans : while (!mySerial.available()); , il y a quelque chose qui me gène : le ! .....
Regarde dans la référence arduino de l'ide ou sur le net à quoi correspond ce point d'exclamation.
Pierre
Pierre le while (!mySerial.available());veut simplement dire ne rien faire et attendre tant qu’il n’y a rien à lire sur le port série. . C’est tout à fait acceptable (pas efficient mais acceptable)
Voici le câblage de l'expérience (code au dessus).
J'ai mis le RX et le TX sur 0;1.
C'est un contre sens au code car il est prévu de les mettre sur 10;11 mais la communication entre tél/hc05 ne fonctionne que quand les pins sont sur 0;1, ce qui est étrange.
il faut brancher sur 10 et 11... c'est ce que vous écoutez dans le code...
les pins 0 et 1 sont connectée au port USB et donc à ce que vous échangez avec la console série de l'IDE
Oui mais le soucis c'est que l'expérience ne fonctionne ni sur 0;1 ni sur 10;11.
J'ai même tenté toutes les combinaisons de câbles (inversement, 3.3V, 5V, 0;1, 10;11) et cela ne marche toujours pas.
En fait, je débute donc je n'y connais vraiment pas grand chose. C'est mon premier projet avec arduino.
Je ne savais pas qu'il fallait croiser les Rx et Tx donc merci de l'info.
Cependant, je suis au courant que faire passer une tension trop forte peut endommager les composants électroniques. Je me suis informé auprès de la fiche technique du constructeur qui me dit que je peux aller jusque 6.6V à l'entrée du composant. C'est donc sans crainte.
A propos du code de l'expérience que je souhaite faire fonctionner grâce à votre aide, une application android était fournie d'office avec le programme.
L'ensemble est sur ce site.
Pour ce qui est du module, son rôle est à 0 (slave) et il est à 9600 bauds.
Quand je dis que j'arrive à m'appairer et à communiquer avec le module, c'est quand le code de l'expérience est transversé sur la carte. Enfin, du moins la bibliothèque qui est activée.
J'ai sur le tél une appli qui s'appelle "bluetooth terminal hc05" qui me permet de communiquer entre le moniteur série et le tél.
De plus, ce matin, j'ai enfin réussi à faire les manips pour accéder au paramétrage du bluetooth donc possibilité de changer sa vitesse, son rôle, nom...
Les manips que j'évoque ne sont pas le sujet. En effet, elles ne sont là que pour le paramétrage du module bluetooth.
Mon soucis est en partie réglé car je peux maintenant utiliser l'application Bluetooth Terminal HC-05 pour communiquer avec le module, donc lui faire exécuter certaines actions. Cependant, l'utilisation de App Inventor pour les applications sur smartphone est encore un autre problème à résoudre.
#include <SoftwareSerial.h>
String c;
int LED = 13;
SoftwareSerial mySerial(10, 11);
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available()>0){
c = mySerial.readString();
Serial.println(c);
if (c.substring(0,1) == "1")
{
digitalWrite(LED, HIGH);
}
if (c.substring(0,1) == "0")
{
digitalWrite(LED, LOW);
}
}
if (Serial.available()>0){
c = Serial.readString();
Serial.println(c);
if (c.substring(0,1) == "1")
{
digitalWrite(LED, HIGH);
}
if (c.substring(0,1) == "0")
{
digitalWrite(LED, LOW);
}
}
}
Dans ce code, on peut communiquer pour éteindre ou allumer la led aussi bien par le bluetooth que par le moniteur série.