Bonjour,
Je suis complètement débutante sur Arduino, j'ai commencé il y a seulement quelques jours alors je vous prie de m'excuser si tout n'est pas très clair dans mon explication.
J'ai à disposition une Arduino Mega 2560 et un Bluetooth shield V2.2 (itead). Pour commencer, je souhaite tester des échanges de messages très simples entre mon PC connecté en USB à la Arduino et mon téléphone Android connecté en Bluetooth. Après de nombreuses recherches sur divers sites et forums, j'ai trouvé plusieurs fois ce code qui devrait fonctionner:
#include <SoftwareSerial.h>
#define rxPin 4
#define txPin 5
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
char myChar ;
void setup() {
Serial.begin(38400);
Serial.println("Hello world!"); // ok
mySerial.begin(38400);
mySerial.println("Hello, world?"); // ok
}
void loop(){
while(mySerial.available()){
myChar = mySerial.read();
Serial.print(myChar); // no
}
while(Serial.available()){
myChar = Serial.read();
mySerial.print(myChar); // ok
}
}
J'ai déjà réussi à configurer comme je le souhaite le module HC-05 grâce aux commandes AT (j'ai finalement remis les paramètres par défaut) et j'ai ensuite bien pensé à mettre le switch sur DAT et changé les jumpers de place sur le multiplexer UART (j'ai choisi D4-TX et D5-RX).
En testant le code ci-dessous, j'arrive bien à envoyer des messages du moniteur série de mon ordinateur à mon téléphone via USB->Arduino->Bluetooth mais lorsque j'essaye d'envoyer des messages de mon téléphone via Bluetooth->Arduino->USB->Moniteur série du PC, je ne reçois rien du tout...
Je crois que j'ai épuisé tout ce que j'ai pu trouver sur les forums, les sites, les blogs... J'ai essayé d'autres pins (5,6,7), j'ai vérifié que je n'avais pas d'autre appareil connecté à l'Arduino, j'ai aussi essayé de m'inspirer d'un code exemple de Tom Igoe sur "SerialEvent" que voici (j'ai ajouté BTSerial):
/*
Serial Event example
When new serial data arrives, this sketch adds it to a String.
When a newline is received, the loop prints the string and
clears it.
A good test for this is to try it with a GPS receiver
that sends out NMEA 0183 sentences.
Created 9 May 2011
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/SerialEvent
*/
#include <SoftwareSerial.h>
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
SoftwareSerial BTSerial(4, 5); // RX , TX
void setup() {
// initialize serial:
Serial.begin(38400); // original 9600
BTSerial.begin(38400);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
// print the string when a newline arrives:
if (stringComplete) {
BTSerial.println("You sent:");
BTSerial.println(inputString);
// clear the string:
inputString = "";
stringComplete = false;
}
}
/*
SerialEvent occurs whenever a new data comes in the
hardware serial RX. This routine is run between each
time loop() runs, so using delay inside loop can delay
response. Multiple bytes of data may be available.
*/
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
Mais cela ne fonctionne plus du tout avec mes modifications (ni dans un sens ni dans l'autre).
Selon vous, d'où vient le problème ?
Merci d'avance et bonne journée. ![]()
Asteria