Partage
  • Partager sur Facebook
  • Partager sur Twitter

Communication BT android arduino

    20 janvier 2019 à 11:48:40

    Bonjour à tous,

    Je fais actuellement un robot commandé grâce à mon téléphone qui communique avec un arduino UNO en Bluetooth avec un HC 05.

    J'ai fait un petit programme simple pour tester de commander la vitesse d'un moteur en envoyant un entier par BT et le convertir en tension via la PWM ! 

    Mais le problème est que lorsque j'envoie un simple 1 à l'arduino avec mon téléphone voici ce que le port série m'affiche : 

    voici mon code :

    //Bibliothèque
    #include <SoftwareSerial.h>
    
    SoftwareSerial BTserie(10, 11); // (RX, TX) (pin Rx BT, pin Tx BT)
    
    //moteur avant
    int vitesseMoteurGauche = 5;
    
    //moteur avant gauche
    int motorAVGPin1 = 8;
    int motorAVGPin2 = 9;
    
    //variable
    int vitesseGauche = 0;
    
    void setup()
    {
      // Ouvre la voie série avec l'ordinateur
      Serial.begin(9600);
      // Ouvre la voie série avec le module BT
      BTserie.begin(9600);
    
      //sortie arduino
      pinMode(vitesseMoteurGauche, OUTPUT);
      pinMode(motorAVGPin1, OUTPUT);
      pinMode(motorAVGPin2, OUTPUT);
    }
    
    void loop()
    {
      digitalWrite(motorAVGPin1, LOW);
      digitalWrite(motorAVGPin2, HIGH);
    
      if (BTserie.available()) {
        // Lecture du message envoyé par le BT
        vitesseGauche = BTserie.read();
    
        //affichage du message recu
        Serial.println(vitesseGauche);
    
        //Envoie vitesse au moteur
        analogWrite(vitesseMoteurGauche, vitesseGauche);
      }
      delay(100);
    }



    Si vous avez des explications, je suis preneur !

    Et si vous avez des questions je vous répondrai au plus vite, en tout cas merci d'avance pour votre aide.

    MagretsDeCanard.

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2019 à 12:03:38

      Bonjour,

      les codes affichés correspondent au code ASCII de la chaîne de caractères émise par le smartphone

      • 49 = 0x31 => chiffre 1
      • 13 = 0x0D => retour à la ligne (carriage return)
      • 10 = 0x0A => passage à la ligne suivante (Line Feed)
      • Partager sur Facebook
      • Partager sur Twitter
        21 janvier 2019 à 13:40:50

        Pour que ton code fonctionne, il faudrait recomposer le nombre coté arduino en sachant qu'il peut y avoir plusieurs caractères pour un seul nombre.

        Voici ce que tu pourrais faire :

        int rxnb = 0;
        
        void loop()
        {
        
          digitalWrite(motorAVGPin1, LOW);
          digitalWrite(motorAVGPin2, HIGH);
         
          if ( BTserie.available() ) {
        
            char c = BTserie.read();
        
            if ( ( c >= '0' ) && ( c <= '9' ) ) {
              rxnb = ( ( rxnb * 10 ) + ( c - '0' ) );
            }
        
            if ( c == '\n' ) {
              vitesseGauche = rxnb;
              rxnb = 0;
              Serial.println(vitesseGauche);
              analogWrite(vitesseMoteurGauche, vitesseGauche);
            }
        
          }
        
        }



        • Partager sur Facebook
        • Partager sur Twitter

        Communication BT android arduino

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown