Contrôler un servo

Bonjour à tous ! Je viens poster un Topic aujourd'hui sur le forum car j'ai un problème

On me demande d'utiliser des valeurs enregistrées sur un fichier texte et de les envoyer au servo afin qu'il bouge dans tel ou tel sens

J'ai les valeurs que j'arrive à convertir, mais je n'arrive pas à envoyer les valeurs au servo et que celui-ci les lises

J'aimerais recevoir un peu d'aide si cela est possible, cordialement

Cadeau de bienvenue ICI

J'ai vu justement sur ce Topic comment je pouvais convertir les valeurs afin qu'elles puissent être convertis et utilisées mais je rencontre le même problème que le posteur, au moment d'envoyer les valeurs au servo elles n'ont pas l'air d'être prises en compte
J'ai testé plusieurs façons, dont la sienne de créer une nouvelle fonction pour donner les ordres, mais celle-ci ne fonctionne pas, je me demande si c'est le matériel que j'ai ( qui date depuis longtemps ) ou le programme qui a un soucis

Ton code ressemble à quoi ? Avant de te lancer directement dans le pilotage du servo à partir de valeur lues dans un fichier sur une carte SD, as-tu vérifié que ton servo fonctionne ?

Ce n'est pas un fichier sur carte SD, c'est un fichier texte que j'ai sur le PC avec des valeurs définies dessus, et je dois les envoyer au servo, j'ai vérifié oui, mon servo fonctionne avec le programme d'exemple d'Arduino

Tu envoies comment les valeurs vers l'arduino ?

Regarde là :

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.OUTILSProcessing

et là :

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertServoControlePositionChaineCaracteres

Et ici :

Si tu nous montrais ton code, on comprendrait où tu es rendu et ce qui te manque.

  if (!file) { 

  Serial.println ("Erreur de l'ouverture du fichier !");

  } 

  else { 
    Serial.println (" ouverture du fichier");
    for (unsigned long j = 0UL; j < file.size(); j++)
    {
      char c = file.read();
      Serial.print(c);
      if (c == '\r' || c == '\n' || c == '"')
      {
        Serial.println();
        Serial.println("caractère ignoré");
      }
      else if(c != ';')
      {
        buffer[curs1] = c;
        curs1++;
      }
      else {
        Serial.println();
        Serial.println("caractère seperatteur trouve");
        buffer[curs1] = '\0';
        if ( Testx == false) {
          Serial.println();
          Serial.println("conversion de X");
          Serial.println("buffer=");
          Serial.println(buffer);
          x = atoi(buffer);
          Serial.print("X=");
          Serial.println(x);
          Testx = true;
          Serial.println("\t Envoi commande X au servo");
          command_servo(x);
           Serial.println("\t Fin envoi commande X au servo");
          curs1 = 0;
          
        }
        else {
          Serial.println();
          Serial.println("conversion de y");
          Serial.print("buffer=");
          Serial.println(buffer);
          y = atoi(buffer);
          Serial.print("Y=");
          Serial.println(y);
          Testx = false;
          curs1 = 0;
        }
      }
    }
  }
  file.close(); 
  Serial.println ("fermeture fichier");

  while (1);// fin de programe

}

void command_servo(int x){
if ( x < 300)
      {
        myservo.write(360);
      }
      if ( x > 700 )
      {
        myservo.write(0);
      }
      if  ( x < 700 && x > 300 )
      {
        myservo.write(90);
      }
return;
}

j’ai cette partie pour convertir envoyer au servo, la conversation fonctionne parfaitement y a aucun soucis, mais c’est l’envoie de X qui ne fonctionne pas, je vais regarder les liens que tu m’as envoyé si je trouve une solution, merci beaucoup

euh... tu comprends ce que tu fais ?

if (!file) {

C'est quoi file si ça n'est pas un fichier sur une carte SD ?

C’est un fichier que j’appelle du PC, donc j’utilise cette fonction

L'arduino n'est pas capable d'ouvrir un fichier sur le PC ! Je pense que tu devrais revoir les bases du fonctionnement de l'arduino car tu ne sembles pas les maitriser et tu n'arriveras nul part si tu ne comprends pas un minimum ce que tu peux faire et ne pas faire avec Arduino.

Je te conseille de regarder le tuto d'Eskimon.

Et file n'est pas une fonction mais un objet ou une variable. Mais avec le morceau de code que tu donnes qui est bien incomplet, impossible de savoir ce que c'est.

Bonjour,
(si j'ai un peu compris)
il y a ici 2 mondes différents, il faut 2 programmes

  1. dans le monde PC, il faut un programme qui :
  • ouvre le fichier et en extrait les valeurs
  • transmet les valeurs à arduino via la liaison USB (émulation série)
  1. dans le monde arduino, il faut un programme qui :
  • reçoit les valeurs transmises par le PC via l'USB
  • en fonction de ces valeurs, effectue une commande (permanente) des servos

Ce que j'ai nommé liaison USB entre l'arduino et le PC peut avoir bien des variantes, comme par exemple une liaison sans fil entre arduino et une tablette, ou une carte SIM que l'on édite sur le PC avant de l'insérer dans un shield, il n'y a rien d'impossible.

trimarco232:
...ou une carte SIM que l'on édite sur le PC avant de l'insérer dans un shield...

Il est déjà perdu, tu vas l'achever :slight_smile: