[Non réglé] Liaison Bluetooth - Carte Romeo

Bonjours à vous, Je possède une Carte Arduino Romeo ( V2.0 ), un moteur pas à pas ( on a réalisé un programme le faisant tourner comme on le souhaitait ) et un Module Xbee Bluetooth ( sur lequel on arrive à se connecter avec l'application ).
Je cherche à faire un programme pour faire tourner un moteur pas à pas ( dans un sens et dans l'autre ) lorsqu'on appuie sur un bouton d'une application Android ( déjà réalisé ), qui envoie un bit 49 et 50.
Mais pour arriver à mes fins, il me faudrais trouver les commandes permettant d'assurer les envoie d'informations de l'application Android vers la carte Arduino ( Romeo ).
En espérant que vous puissiez m'aider, merci d'avance à bientôt.

Bonjour,
Peux-tu nous mettre ce que vous avez déjà réalisé ?

Voici le programme que nous avons réalisé :

#include <Stepper_Romeo.h>
Stepper_Romeo myStepper(200,7,6,4,5);

int state;

void setup(){
  Serial.begin(9600);
  myStepper.setSpeed(150);
  myStepper.setTorque(170);  
}

void loop(){


  Serial.println(49);


  if(Serial.available() >= 0){     
    state = Serial.read();
  }

  if (state == 49) {
    myStepper.step(150);
    delay(2000);
    Serial.println(0);
  }

  if(Serial.available() >= 0){     
    state = Serial.read();
  }

  if (state == 50){
    myStepper.step(-150);
    delay(2000);
    Serial.println(0);
  }
  
  if(Serial.available() >= 0){     
    state = Serial.read();
  }

  if (state == 0){
    myStepper.stop();
    delay(2000);
  }

  if(Serial.available() >= 0){     
    state = Serial.read();
  }

}[list]
[li][/li]
[li][/li]
[/list]

UP

Bonjour reavn77,

Votre projet semble intéressant et dans la mesure du possible réalisable avec le programme que vous avez déjà réalisé. Toutefois, vous ne disposez pas du bon matériel. C'est-à-dire que vous devez posséder la carte suivante:
Teemino - carte compatible Arduino et Android ADK

La Teemino est une carte basée sur Arduino Mega 2560 et compatible avec la spécification Android ADK. Vous pouvez la trouver à l'adresse suivante: Teemino - carte compatible Arduino et Android ADK

Je reste à votre disposition pour d'autres questions,
Cordialement Utopie.

Il n'y a pas de raison que ce soit ma carte le problème, puisque la Romeo et le Module Xbee sont de la même marque ( DFRobot ).
J'ai vérifié à l'aide d'un oscilloscope si les information envoyé arrivé bien sur la carte, et il s'est averré que oui, elles sont bien reçues.
Donc le soucis viens forcement de la commande qui doit lire l'information reçue

reavn77,

Ce n'est pas la compatibilité inter-carte le problème, mais plutôt de pouvoir contrôler ton moteur avec ta carte Romeo.
Cette dernière n'est pas compatible avec les système Android ( App Inventor, Téléphones ).
Pour cet usage, soit tu passe l'information sur ta carte UNO, soit tu utilise la carte sur le lien précédent qui est prévue à cet effet.

J'espère que ces informations t'aideront sur ton projet, je reste disponible.
Cordialement Utopie.

Je ne peux pas brancher mon Moteur sur la carte Arduino Uno, c'est pour cela que j'ai opté pour une Romeo.

Finalement, j'étais bourré ce matin. J'avais trop bu de lait ce matin ]:smiley:

Oubliez cette suggestion mais vous pouvez peut-être trouver une solution dans la forêt en cherchant un mogglie.

Bananaaaa!

reavn77:
Il n'y a pas de raison que ce soit ma carte le problème, puisque la Romeo et le Module Xbee sont de la même marque ( DFRobot ).
J'ai vérifié à l'aide d'un oscilloscope si les information envoyé arrivé bien sur la carte, et il s'est averré que oui, elles sont bien reçues.
Donc le soucis viens forcement de la commande qui doit lire l'information reçue

Donc l'appairage entre l'appareil Androïd et ta carte Romeo est fonctionnel?
Es-tu certain que le débit de 9600 bauds soit correcte? Coté Androïd c'est bien la vitesse qui est programmée?
Puisque tu as regardé à l'oscilloscope, tu devrais pouvoir vérifier la vitesse de transmission en mesurant la largeur des impulsions reçues.

Déjà je changerais le programme et ne ferais pas de Serial.read() 4 fois dans la même boucle:

#include <Stepper_Romeo.h>
Stepper_Romeo myStepper(200,7,6,4,5);

int state;

void setup(){
  Serial.begin(9600);
  myStepper.setSpeed(150);
  myStepper.setTorque(170);  
}

void loop(){


  // Serial.println(49); // je ne comprends pas ce que ça vient faire ici


  if(Serial.available() >= 0){ // on guette une réponse     
    state = Serial.read();     // si réponse on la stocke  

            switch (state) // on teste la réponse
            {
              
            case 49: // si réponse = 49
            myStepper.step(150);
            delay(2000);
            Serial.println(0);
            break;
            
            case 50: // si réponse = 50
            myStepper.step(-150);
            delay(2000);
            Serial.println(0);
            break;
            
            case 0:  // si réponse = 0
            myStepper.stop();
            delay(2000);
            break;
            
            default: // si autre réponse: toujours prévoir le cas ou il n'y a pas ce que l'on veut par défaut
            // action par défaut
            break;
            
             }   
  }
}

Ensuite il faut se poser la question “que renvoi Serial.read()” , car si cela renvoi un byte je pense qu’on récupère juste 4 ou 5 de 49 ou 50 dans la variable state ce qui fait qu’on ne rentre jamais dans les tests IF.

A tester et valider par meilleur connaisseur de ce que renvoi Serial.read()

D’autre part vous faites un test sur la valeur state==0 mais à quel moment vous envoyez 0? car vous disiez n’envoyer que 49 ou 50 ?

Je ne comprends pas non plus le “Serial.println(49);” dans le programme ?

Je ne vois pas la gestion du module bluetooth dans le programme?

Avez vous bien paramétré le module bluetooth?