Piloter des servos moteurs grâce à une carte ARDUINO

Bonjour,

Grâce à ma carte bluetooth, je reçois les données envoyées par mon smartphone.
Pourtant malgré un switch case, je n’arrive pas à faire bouger mon servo moteur. Cela est très bizarre car sans le recepteur bluetooth et avec un simple code, ce dernier bouge très facilement.

Je vous met le code de ma carte ARDUINO :

#include <Servo.h>
Servo monServomoteur;
void allerdroit();
void gauche();
void droite();
char command = 'S';
char prevCommand = 'A';  
unsigned long timer0 = 2000;  //Stores the time (in millis since execution started) 
unsigned long timer1 = 0;  //Stores the time when the last command was received from the phone
int position = 90;
void setup() 
{       
  Serial.begin(115200);  //Set the baud rate to that of your Bluetooth module.
  Serial1.begin(115200);
  monServomoteur.attach(6);
}

void loop(){
  if(Serial1.available() > 0){ 
    Serial.write(Serial1.read());
    timer1 = millis();   
    prevCommand = command;
    command = Serial1.read(); 
    //Change pin mode only if new command is different from previous.   
    if(command!=prevCommand){
      //Serial.println(command);
      switch(command){
      case 'F': //AVANT DROIT
          allerdroit();
        break;
      case 'L':  //GAUCHE
          gauche();
        break;
      case 'R': //DROITE
          droite();
        break;
      default: 
      if(command=='q'){}//Get velocity
      }
    }
  }

  else{
    timer0 = millis();  //Get the current time (millis since execution started).
    //Check if it has been 500ms since we received last command.

    }
}  
void allerdroit()
  {
    if(position >= 100)
      {
        for(int a = position; a-10 ;a--)
        {
        monServomoteur.write(position);
        delay(10);
        }
      }
      else if(position >= 90 && position <=100)
      {
        for(int a = position; a = 90 ;a--)
        {
        monServomoteur.write(position);
        delay(10);
        }
      }
      if(position <= 70)
      {
        for(int a = position; a+10 ;a++)
        {
        monServomoteur.write(position);
        delay(10);}
      }
      else if(position <= 90 && position <=80)
      {
        for(int a = position; a = 90 ;a--)
        {
        monServomoteur.write(position);
        delay(10);}
      }
  }

 void gauche()
 {

    if (position>=10) 
        {
        for(int a = position; a-10 ;a--)
        {
        monServomoteur.write(position);
        delay(10);}
        }
 }

 void droite()
 {
    if (position<=170) 
            {
            for(int a = position; a+10 ;a++){
            monServomoteur.write(position);
            delay(10);
              }
            }
 }

Merci par avance…
Ce code vient de ce site : 3.Bluetooth modules and Arduino code - Bluetooth RC car

Je l’ai cependant adapté à mes options et à mon servo moteur (include servo.h)

Rebonjour,

après de nombreux test, je me suis aperçu que les conditions ne marchaient pas même en remplaçant pas des if. Je ne peux pas regarder l'instruction et vérifier si elle fait partie des principales.

Voici le code qui m'a permis de vérifier (une partie):

if(Serial1.available() > 0){ 
    Serial.write(Serial1.read());
    command = Serial1.read(); 
      if (command == 'F') Serial.print("TOUT DROIT");
      else if (command == 'L') gauche;
      else if(command == 'R') droite;

Les commandes qui arrivent dans le recepteur bluetooth s'affichent mais pas le tout droit même lorsque le recepteur reçoit le caractère F.

Quelqu'un a t'il la raison ?

Bonjour,

Tu lis deux fois un caractère, donc tu traites un caractère sur deux, et tu affiches un caractère sur deux (mais pas le même)

J'ai compris mon problème et résolu, merci !