Aller au contenu


meteor64

Inscrit(e) (le) 23 déc. 2013
Déconnecté Dernière activité avril 21 2020 06:56
-----

Sujets que j'ai initiés

Mini bras robot avec arduino

01 décembre 2014 - 09:35

Bonjour, souhaite faire une bras à 2 degrés de liberté pour mon robot (je vous le présenterai un jour), mais bon sa c'est facile ce qui me pose problème c'est l'arduino Mega, voici la nomenclature des éléments que j'utilise :
-une manette ps2 de lynxmotion adapté
-et un shield dfrobot pour faciliter les connexions
-ainsi que les servos
Voilà les branchements me paraissent très simple mais c'est le code qui ne m'arche pas enfin c'est la télécommande qui n'est pas reconnu.
Voici mon code, et si vous pouviez m'aider.
  #include <Servo.h>
    #include <PS2X_lib.h>

  #define SOUND_PIN    5        // Botboarduino JR pin number
  #define PS2_DAT      6        
  #define PS2_CMD      7
  #define PS2_SEL      8
  #define PS2_CLK      9

    PS2X ps2x;
    int error = 0;
    byte type = 0;

    #define Deadzone 10

    char ArmSize = 'D'; // Must be 'A', 'B', or 'D'  DO NOT REMOVE THE SEMICOLON OR THE ' '
    float A;
    float B;
    float rtod = 57.295779;

    float Speed = 1.0;
    int sps = 3;

    Servo Elb;
    Servo Shldr;
    Servo Wrist;
    Servo Base;
    Servo WristR;
    Servo Gripper;

    float X = 4;
    float Y = 4;
    int Z = 90;
    int G = 90;
    int WR = 90;
    float WA = 0;

    float tmpx = 4;
    float tmpy = 4;
    int tmpz = 90;
    int tmpg = 90;
    int tmpwr = 90;
    float tmpwa = 0;

    void setup()
    {
      Serial.begin(57600);

      error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT);  // Setup gamepad (clock, command, attention, data) pins

      if(error == 0)
        Serial.println("Found Controller, configured successful");
       
      else if(error == 1)
        Serial.println("No controller found");
       
      else if(error == 2)
        Serial.println("not accepting commands");
       
      else if(error == 3)
        Serial.println("refusing Pressures mode");
       
      type = ps2x.readType();
        switch(type)
        {
          case 0:
           Serial.println("Unknown");
           break;
          case 1:
           Serial.println("DualShock");
           break;
          case 2:
           Serial.println("GuitarHero");
           break;
        }
    Base.attach(2);
    Shldr.attach(3);
    Elb.attach(4);
    Wrist.attach(10);
    Gripper.attach(11);
    WristR.attach(12);

    switch(ArmSize)
    {
      case 'A':
      A = 3.75;
      B = 4.25;
      break;
      case 'B':
      A = 4.75;
      B = 5.00;
      break;
      case 'D':
      A = 5.75;
      B = 7.375;
      break;
    }
    }

    int Arm(float x, float y, float z, int g, float wa, int wr) //Here's all the Inverse Kinematics to control the arm
    {
      float M = sqrt((y*y)+(x*x));
      if(M <= 0)
        return 1;
      float A1 = atan(y/x);
      float A2 = acos((A*A-B*B+M*M)/((A*2)*M));
      float Elbow = acos((A*A+B*B-M*M)/((A*2)*B));
      float Shoulder = A1 + A2;
      Elbow = Elbow * rtod;
      Shoulder = Shoulder * rtod;
      while((int)Elbow <= 0 || (int)Shoulder <= 0)
        return 1;
      float Wris = abs(wa - Elbow - Shoulder) - 90;
      Elb.write(180 - Elbow);
      Shldr.write(Shoulder);
      Wrist.write(180 - Wris);
      Base.write(z);
      WristR.write(wr);
      Gripper.write(g);
      Y = tmpy;
      X = tmpx;
      Z = tmpz;
      WA = tmpwa;
      G = tmpg;
      WR = tmpwr;
      return 0;
     
    }


    void loop()
    {
      ps2x.read_gamepad(); //update the ps2 controller
     
      int LSY = 128 - ps2x.Analog(PSS_LY);
      int LSX = ps2x.Analog(PSS_LX) - 128;
      int RSY = 128 - ps2x.Analog(PSS_RY);
      int RSX = ps2x.Analog(PSS_RX) - 128;
     
      if(RSY > Deadzone || RSY < -Deadzone)
        tmpy = Y + RSY/1000.0*Speed;
      if(tmpy < -1)
        tmpy = -1;
     
      if(RSX > Deadzone || RSX < -Deadzone)
        tmpx = X + RSX/1000.0*Speed;
      if(tmpx < -0.5)
        tmpx = -0.5;
       
      if(LSY > Deadzone || LSY < -Deadzone)
        tmpwa = WA + LSY/100.0*Speed;
      if(tmpwa > 180)
        tmpwa = 180;
      else if(tmpwa < 0)
        tmpwa = 0;

      if(LSX > Deadzone || LSX < -Deadzone)
        tmpz = Z + LSX/100.0*Speed;
      if(tmpz > 180)
        tmpz = 180;
      else if(tmpz < 0)
        tmpz = 0;

      if(ps2x.Button(PSB_R1))
        tmpg = G + 5*Speed;
      if(ps2x.Button(PSB_R2))
        tmpg = G - 5*Speed;
      if(tmpg > 180)
        tmpg = 180;
      else if(tmpg < 50)
        tmpg = 50;

      if(ps2x.Button(PSB_L1))
        tmpwr = WR + 2*Speed;
      else if(ps2x.Button(PSB_L2))
        tmpwr = WR - 2*Speed;
      if(tmpwr > 180)
        tmpwr = 180;
      if(tmpwr < 0)
        tmpwr = 0;


      if(ps2x.ButtonPressed(PSB_PAD_UP))
      {
        sps = sps + 1;
        if(sps > 5)
          sps = 5;
        tone(5, sps*500, 200);
      }
      else if(ps2x.ButtonPressed(PSB_PAD_DOWN))
      {
        sps = sps - 1;
        if(sps < 1)
          sps = 1;
        tone(5, sps*500, 200);
      }
     
      Speed = sps*0.20 + 0.60;
         
    if(Arm(tmpx, tmpy, tmpz, tmpg, tmpwa, tmpwr))
       {
         Serial.print("ERROR");
       }

    if(tmpx < 2 && tmpy < 2 && RSX < 0)
       {
         tmpy = tmpy + 0.05;
         Arm(tmpx, tmpy, tmpz, tmpg, tmpwa, tmpwr);
       }
    else if(tmpx < 1 && tmpy < 2 && RSY < 0)
       {
         tmpx = tmpx + 0.05;
         Arm(tmpx, tmpy, tmpz, tmpg, tmpwa, tmpwr);
       }

    delay(30);
    }

En vous remerciant d'avance, et je vous présenterai sous peu mon fameux robots dont je vous parle énormément et dont vous n'avez jamais vu une seule photo.


commande d'un drônes

03 septembre 2014 - 03:03

Bonjour, j'ai pour projet de créer un tricoptère, je sais vous m'avez déjà dit que les drones et les avions ne sont pas votre spécialité mais entait j'écrit car j'aimerai contrôler cet engin aérien avec mon portable donc j'aimerai faire un récepteur comme un radio normale mais commandable avec le bluetooth de mon smartphone., j'ai plusieurs bases en programmation c et java mais j'accepte l'aide et après c'est au niveau des microcontrôleurs que cela ce corse pour moi mais bon je me débrouille avec l'arduino bref c'est cette carte que je voudrais contrôler avec mon récepteur bluetooth : Mon lien.
en vous remerciant d'avance.
Cordialement.

Un Train (intelligent)

20 juillet 2014 - 09:20

Bonjour, il y a peut j'ai pensé faire un train sans rail (non, non pendant mon absence je ne suis pas devenu fous) bon, maintenant les choses sérieuse (pourquoi ? il est sérieux la), je sais comme le motorisé,je sais quel type de roues je vais utilisé, mais je ne sais pas comment je pourrais le faire revenir tout le temps à moi,tout en évitant les obstacles bien entendu, son but est de me portée quelque truc pour m'aider.
Cordialement.

un drones

28 mai 2014 - 08:32

Bonjour, je souhaite, maintenant que j'ai acquis de l'expérience en robotique et en électronique construire un drone comme celui-ci :
Image IPB
Voilà j'ai quand même un tas de question car le vol c'est un autre domaine, donc voilà tout prmièrement le cahier des charges :
-une bonne autonomie
-Rapide et furtif
-une caméra que serait un drone sans sa caméra
-atterrir si possible sur une petite piste
alors maintenat voilà mes problèmes :
-quels moteur choisir (je pensais a celui ci : Mon lien)
-quelle hélice choisir (je pensais a clle-la : Mon lien
-et surtout avec quel matériau faire le fuselage et les ailes.
je voulais vous demandé si il serait aussi possible de le piloté depuis un ordinateur avec un joystick très précis.
merci d'avance.

sabertooth

19 avril 2014 - 08:50

Bonjour, aujourd'hui je suis passé d'une alim 4.8 volt à 6 volt pour on récepteur graupner gr12 et ma sabertooth commence a buggé sachant que la sabertooth était déjà a 6 volt donc est ce qu'il faut repassé à 4.8 volt ou y a t-il un moyen.
merci d'avance.