Go Down

Topic: Moteur pas à pas commandé par bluetooth à l'aide d'une application MIT (Read 415 times) previous topic - next topic

TheValtoch

Bonjour, j'aimerais guider un moteur pas à pas par bluetooth à l'aide d'une application MIT. Problème, dans l'ensemble tout paraît correct (aucune erreur signalée par Arduino). Cependant chaque partie reliée entre elle ne donne pas le résultat attendu. Cela pourrait venir du code Arduino étant novice. Voici le code :

Code: [Select]
#include <SoftwareSerial.h>
#include <Stepper.h>

SoftwareSerial HC06(18,19);

String messageRecu;

int nbrDePas = 64*48;
Stepper Moteur(nbrDePas, 2, 3, 4, 5);

void setup()
{
  Serial.begin(9600);
  HC06.begin(9600);
 
  Moteur.setSpeed(8);
}

void loop()
{
  while(HC06.available())
  {
    delay(3);
    char c = HC06.read();
    messageRecu += c;
    Serial.println("Ok");
  }
   
   if(messageRecu.length() >0)
  {
    Serial.println(messageRecu);
    if(messageRecu == "1")
    {
      Moteur.step(100);
    }
    if(messageRecu == "3")
    {
      Moteur.step(0);
    }
    if(messageRecu == "2")
    {
      Moteur.step(-100);
    }
    if(messageRecu == "4")
    {
      Moteur.step(0);
    }
  }
}


Le code pourrait-il faire tourner le moteur par bluetooth avec l'application MIT ?

dfgh

hello, je suis la dessus en ce moment
j'ai modifié ton code pour qu'il fonctionne chez moi
il faudra donc que tu supprimes mes modifs et remettes ton code
c'est opérationnel cher moi
attention,  j'ai modifié les vitesses des "serial"

Code: [Select]
//#include <SoftwareSerial.h>
#include <Stepper.h>

//SoftwareSerial HC06(18,19);

String messageRecu;

int nbrDePas = 64*48;
//Stepper Moteur(nbrDePas, 2, 3, 4, 5);
Stepper Moteur(nbrDePas, 4, 5, 6, 7);
void setup()
{
  Serial.begin(115200);
  //HC06.begin(9600); //pas nécéssaire car mega 2560
  Serial3.begin(38400);
 
  Moteur.setSpeed(8);
}

void loop()
{messageRecu="";
  while(Serial3.available())
  //while(HC06.available())
  {
    delay(3);
   
    //char c = HC06.read();
    char c = Serial3.read();
    messageRecu += c;
   
  }
   
   if(messageRecu.length() >0)
  {
    Serial.println(messageRecu);
    if(messageRecu == "1")
    {Serial.print("messageRecu =  ");Serial.println(messageRecu);
      Moteur.step(100);
    }
    if(messageRecu == "3")
    {Serial.print("messageRecu =  ");Serial.println(messageRecu);
      Moteur.step(0);
    }
    if(messageRecu == "2")
    {Serial.print("messageRecu = 1 ");Serial.println(messageRecu);
      Moteur.step(-100);
    }
    if(messageRecu == "4")
    {Serial.print("messageRecu = 1 ");Serial.println(messageRecu);
      Moteur.step(0);
    }
  }
}

TheValtoch

Merci pour ta réponse. Qu'entend tu par "c'est opérationnel chez moi" ? Le code est bon mais rien n'a changé pour moi, le moteur ne tourne toujours pas (Je ne dis que le code est faux, cela peut aussi venir de l'application). Et sinon, simple curiosité, qu'est ce que cela change de modifier les vitesses des "serial".

dfgh

hello
pourquoi perdre du temps avec des serial lents alors qu'ils savent faire plus vite

ce n'est pas genant sur des prg très courts, mais lorsque tu feras des prg plus longs, il te sera surement nécessaire de ne pas predre de temps avec serial. dpnc autant prendre les bonnes habitudes tout de suite

opérationnel signifie
que le prg tel que je te l'ai passé, chargé dans une mega 2560
affiche bien "message reçu = 1 ou 2 ou 3 ou 4 lorsque je les envoie à l'aide de l'application MIT que j'ai faite dans le même but que toi

TheValtoch

D'accord, merci. Je ne savais pas ce que cela changeait. Ton code combiné à mon application ne fonctionne pas. Je t'envoie un screen du code de l'application. Peux-tu y jeter un œil ?

Go Up