Réception Bluetooth sur Nano
Bonjour,
Je me replonge dans un programme que j'avais fait marcher avec succès il y a 1 an sur une MEGA, mais que je n'arrive plus à faire fonctionner sur ma NANO, le temps ayant passé et mes souvenirs sont devenus parcellaires...
Il reçoit les caractères Bluetooth depuis un module HC-06 via un Smartphone (désormais un HC-08 mais c'est pareil).
Les pattes TX et RX du HC08 sont connectées aux pins RX et TX de la Nano.
La connexion entre Smartphone et HC-08 s'établit correctement (la LED devient fixe).
Voici le code Arduino du Setup qui passe à la compilation:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
void setup()
{
pinMode(0, INPUT); // définit la pin 0 de la Nano en Input, puisque c'est RX
pinMode(1, OUTPUT); // définit la pin 1 de la Nano en Output puisque c'est TX
HC06.begin(115200); // communication avec le Bluetooth
Serial.begin(115200); // figurait dans le code open classroom pour recevoir les commandes Bluetooth
// et aussi dans mon programme gérant l'I.R.: Démarre le Moniteur Série pour voir les résultats sur PC
// on passe la vitesse à 115.200 car ça a été validé avec "Test_HC08_v120.ino"
// Il faut penser à passer la fenêtre du Moniteur Série sur 115200 si on veut voir apparaître les résultats correctement
// Serial3.begin(9600); Cette instruction (mis dan sla version MEGA du prog) n'est peut-être pas nécessaire sur NANO ?? La valeur définissant la vitesse max,
// la NANO devrait
// être capable de recevoir les données du HC-08 même si on a mis 115.200 dans le Serial.begin avant
// permet d'initialiser le port série Serial3 sur lequel est connecté le HC08
// les pins RX et TX du HC08 sont donc respectivement connectées aux Pins D14 (TX de Serial3) et D15 (RX de Serial3)
// Sur la NANO le HC-08 est connecté à RX et TX, il n'y a qu'un seul Serial donc enlever Serial3.
// VOIR S'IL FAUT FORCER LE HC-08 à 115.200 par une commande AT , ou pas ?
IrReceiver.enableIRIn(); // Starts the IR receiver
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // c'est l'instruction de remplacement donné par le Wiki Youtube
// On définit les pins MOTOR de la MEGA en Output--> Rouvrir un pgm de la Nano pour voir la syntaxe |
et la partie intéressante du LOOP:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
void loop()
{
// while(HC06.available()) // Je le laisse ne commentaire pour la NANO mais je ne sais pas s'il faut le réactiver ??
// à supprimer selon moi car remplacé par le "Serial.available" ci-dessous.
while(HC06.available()) // ici on met HC06 puisqu'on a définit "SoftwareSerial HC06(0,1)" plus haut
{
delay(3);
char c = HC06.read(); // ici on lit le contenu de HC08
messageRecu += c;
if(c == 'Z') // si le caratère reçu est 'Z' cela signifie que la commande est complète (j'utilise 'Z' car je n'arrive pas à détecter '\n')
{
// Serial.println(messageRecu); // en commentaire imprime donc la commande reçue du Smartphone qui est entière, par ex.: STOPZ
break; // et on sort de la boucle While puisque la commande est complète et donc prête à être interprétée pour declencher des actions
}
} |
Ensuite j'ai une batterie de IF sur la variable "messagerecu" qui me permettent de déclencher des actions.
Mais rien ne se passe quand mon Smartphone envoie des caractères, on dirait que le HC08 ne transmet rien à la Nano: avez-vous une idée ?
Dans l'intervalle je vais refaire un programme archi-basique faisant imprimer sur le Moniteur série les caractères reçus par Bluetooth, histoire de repartir du début.
Merci pour vos réponses,