Je souhaite faire communiquer deux modules bluetooth HC-05 : le master lit la tension d'un potentiomètre et l'envoie au slave pour commander un servo-moteur.
Les modules sont déjà paramétrés et il ne me manque que les commandes qui envoie les valeurs d'un module à l'autre.
Pour le moment, ils communiquent partiellement (le slave reçoit les valeurs 0, 248 et parfois 120) selon le code utilisé mais ne reçoit pas les valeurs souhaités (entre 0 et 256)
Les deux codes sont en dessous, merci d'avance
Si besoin, je peux joindre des schéma du circuit.
//MASTER
int valPot=0; //variable pour récupérer la tension aux bornes du potentiomètre traduite par le CAN . On l’initialise à 0.
void setup() {
Serial.begin(38400); //Initialisation de la communication avec la console
}
void loop() {
valPot=analogRead(A0); //lit la tension, la convertit en valeur numérique et la stocke dans valeurPot
Serial.write(valPot/4);
Serial.println(valPot/4);
}
//SLAVE
#include <Servo.h>
Servo MyServo;
unsigned int vit = 0;
int vitmap = 0;
#define ent 9
void setup() {
pinMode(ent, OUTPUT); // put your setup code here, to run once:
MyServo.attach(ent);
Serial.begin(38400);
}
void loop() {
vit = 0;
while (Serial.available() >=1) {
vit = Serial.read();
Serial.println(vit);
delay(10);
}
delay(10);
MyServo.write(vit);
}
Les modules Bluetooth HC05 & 06 communiquent via la liaison série. L'Arduino communique avec le PC aussi via cette liaison (pour téléverser un programme ou utiliser la console). Si tu as besoin de faire les deux en même temps et que tu utilises la même liaison, il y a conflit. Sur le Uno, les broches sont les RX (pin 0) et TX (1).
Pour éviter le conflit, il faut utiliser un autre port série pour le Bluetooth. Su le Mega, il y en a plusieurs, mais pas sur les autres Arduino, donc il faut en créer un virtuel : c'est ce que fait le bibliothèque SoftwareSerial.
Tu déclares un nouveau port série, tu lui donnes un nom et tu l'utilises comme le port série habituel. Regarde les exemples, tu comprendras mieux
J'ai créer dans chacun de mes programmes un port série qui s'appelle bluetooth.
J'ai essayé d'envoyer ma valeur grâce aux commandes bluetooth.write() et bluetooth.print() (car j'ai vu que parfois bluetooth.write() pouvait causer des problèmes) mais je reçoit toujours la même valeur : -1.
Et je ne comprend pas où est le problème...
//MASTER
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(5, 6); // RX, TX
int pot = A0;
void setup() {
Serial.begin(38400);
bluetooth.begin(38400);
}
void loop() { // run over and over
int val = analogRead(pot)/4;
bluetooth.print(val);
delay(20);
}