Arduino nano ne veut pas interpréter les données reçues en Bluetooth

Bonjour j'essaye de crée une voiture télécommandé via mon téléphone en Bluetooth.
Mais lorsque que j'essaye de piloter mes différentes sortie via la console (en enlevant toutes la partie BT du code) cela marche mais lorsque que j'utilise le code ci dessous je recois les donnés BT dans la console mais celle-ci ne sont pas traiter par le programme.

Après plusieurs heure de recherche j'ai pu constituer ce code a l'aide d'internet et de chat GPT

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX, TX

const int IN1 = 5;
const int IN2 = 6;
const int IN3 = 7;
const int IN4 = 8;

void setup() {
  // Définir la vitesse de communication Bluetooth (9600 bauds)
  BTSerial.begin(9600);
  
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  if (BTSerial.available()) {
    char data = BTSerial.read(); // Lire les données depuis le module Bluetooth

    // Vérifier s'il s'agit d'un caractère de fin de ligne ("\n" ou "\r\n")
    if (data == '\n' || data == '\r') {
      // Ne rien faire avec les caractères de fin de ligne, les ignorer
    } else {
      // Traiter les autres caractères ici
      switch (data) {
        case '1': // forwards
          digitalWrite(IN1, HIGH);
          digitalWrite(IN2, LOW);
          digitalWrite(IN3, HIGH);
          digitalWrite(IN4, LOW);
          Serial.println("Avancer");
          break;
        
        case '2': // right
          digitalWrite(IN1, HIGH);
          digitalWrite(IN2, LOW);
          digitalWrite(IN3, LOW);
          digitalWrite(IN4, HIGH);
          Serial.println("Tourner à droite");
          break;
        
        case '3': // left
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, HIGH);
          digitalWrite(IN3, HIGH);
          digitalWrite(IN4, LOW);
          Serial.println("Tourner à gauche");
          break;
        
        case '4': // back
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, HIGH);
          digitalWrite(IN3, LOW);
          digitalWrite(IN4, HIGH);
          Serial.println("Reculer");
          break;
        
        case '5': // stop
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, LOW);
          digitalWrite(IN3, LOW);
          digitalWrite(IN4, LOW);
          Serial.println("Arrêt");
          break;
        
        default:
          Serial.println("Commande non reconnue");
          // Si la commande n'est pas reconnue, aucune action n'est effectuée.
          break;
      }
    }
  }
}


ça veut dire quoi? vous voyez Avancer ou Tourner à droite qui s'affiche mais les moteurs ne fonctionnent pas ?

Non je vois la valeur transmise par mon tel (az1234...) mais au niveau du programme rien ne ce passe

vous la voyez vous ? le code que vous donnez ne l'imprime pas...
soyez précis SVP...

Le téléphone, il envoie la valeur numérique 1 ou le caractère 1?

bonne question

si c'est la valeur numérique il faut changer les case

        case '1': // forwards

devient

        case 1: // forwards

➜ on met le chiffre au lieu du caractère ASCII

Je viens d'essayer d'enlever les ' mais le problème reste le même.


Je pense le caractère vue que j'utilise le clavier du téléphone

J'envoie des caractère (1234...) Mais le programme ne réagit pas même la ligne default qui est censé m'indiquer que le programme ne reconnait pas la valeur ne réagit pas default: Serial.println("Commande non reconnue"); // Si la commande n'est pas reconnue, aucune action n'est effectuée. break;

Bonjour @zevalox
Évitez de poster des captures d'écran de codes et/ou de textes. C'est illisible, surtout pour ceux qui lisent sur smartphone. Copiez collez directement dans vos messages, c'est plus simple.

Si ce n'est pas déjà fait, lisez Les bonnes pratiques du Forum Francophone.

Merci et bonne journée

Cordialement
Pandaroux007

Répondez à cela

Cette ligne est parfaitement inutile.
Le traitement de ces valeurs pourrait se faire dans le switch soit par deux case, soit tout simplement par default:

Disons qu’elle évite l’impression du message d’erreur si juste default, ensuite c’est vrai que cheat jaipété aurait pu mettre cela dans le switch

oui je m'en suis rendu compte mais même avant de la rajouter le code ne fonctionnait pas.

Merci a toutes les personnes qui m'ont aider et accordé leur temps je vient de trouve la solution a mon problème, physiquement j'utilisait les port RX et TX mais chat GPT avais assigner les port 2 et 3 au lieu du 1 et du 0 qui correspondent au RX, TX

Oui, parce qu'il n'utilise pas la liaison série standard mais une liaison série émulée en utilisant la librairie SoftwareSerial.

Ceci vous permet d’utiliser la console série pour le debug

Si vous branchez sur 0 et 1 vous pouvez avoir des soucis au téléchargement du code et lors de l’usage du moniteur série…

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.