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:
et la partie intéressante du LOOP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ensuite j'ai une batterie de IF sur la variable "messagerecu" qui me permettent de déclencher des actions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
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,
Partager