Aller au contenu


GD ONE

Inscrit(e) (le) 27 juil. 2019
Déconnecté Dernière activité oct. 04 2022 07:00
-----

Messages que j'ai postés

Dans le sujet : PROJET ROBOT GD ONE

24 juillet 2021 - 08:52

Bonjour à tous,

 

Mon robot est actuellement pilotable par l'intermédiaire d'un smartphone.

Je souhaite utiliser une télécommande de casque VR tel que ci-dessous

Fichier joint  BOB_web.jpg   4,04 Ko   33 téléchargement(s)

 

Cette télécommande peut télécommander un smartphone, une tablette (le volume, changement de page, avance recule d'une vidéo, etc...)

 

Ma question est :

Comment coupler cette télécommande avec le HC-06 arduino, afin que je puisse télécommander le robot.

 

J'ai aussi envisager une télécommande radio.

 

Qu'en pensez vous ?

 

Merci


Dans le sujet : PROJET ROBOT GD ONE

22 juillet 2021 - 05:03

MIRACLE !!! Ca fait huit jours que je cherche.

 

Il faut modifier dans NEWPING.H  #define TIMER_ENABLED true  et le Définir sur "false" pour désactiver.


Dans le sujet : PROJET ROBOT GD ONE

22 juillet 2021 - 01:53

Bonjour à tous,

 

Cela fait un bail que je n'ai pas posté. Mon robot à bien avancé et fonctionne pas trop mal.

 

Fichier joint  BOB_web.jpg   30,03 Ko   36 téléchargement(s) Je souhaiterais le sonoriser. J'ai trouvé sur la toile un code sonore D2R2 qui fonctionne une fois chargé sur ma MEGA

 

J'ai donc rajouté a mon code robot (qui fonctionne)  les informations du code D2R2

 

Et là j'ai les messages d'erreur ci-dessous

 

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_13'
libraries\NewPing\NewPing.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Erreur de compilation pour la carte Arduino Mega or Mega 2560
 
 
Avec ça pouvez m'aider s.v.p.
 
Cordialement

Dans le sujet : PROJET ROBOT GD ONE

15 juin 2020 - 08:37

Salut à tous,

 

Voilà mon dernier code avec des déplacements un peu plus cool. J'ai l'impression que mes servos ne sont pas assez puissant, car lorsque le bras est tendu un des servos lâche et remonte ensuite.

[code]

#include <HCSR04.h>
#include <Servo.h>
#include <NewPing.h>           // bibliothèque de gestion des delays
#include <SoftwareSerial.h>

/*#define NO_OF_FIELDS 6*/

Servo base, shoulder, foreArm, wristFlex, wristRotate, claw;

SoftwareSerial hc06(0, 1);   // RX,TX
//DEFINITION CAPTEUR BLUETOOTH
unsigned char Bluetooth_val;        //définition de la valeur val
int val;
int ledpin = 1;

// variable contenant la position des servomoteurs

int pos_base = 0;
int pos_shoulder = 0;
int pos_foreArm = 0;
int pos_wristFlex = 0;
int pos_wristRotate = 0;
int pos_claw = 0;

//Déclaration des constantes
#define UPDATE_TIME 15

int Max_pos_base = 170;
int Max_pos_shoulder = 175;
int Max_pos_foreArm = 45;
int Max_pos_wristFlex = 175;
int Max_pos_wristRotate = 175;
int Max_pos_claw = 160;

int Min_pos_base = 0;
int Min_pos_shoulder = 20;
int Min_pos_foreArm = 175;
int Min_pos_wristFlex = 0;
int Min_pos_wristRotate = 0;
int Min_pos_claw = 20;


String messageRecu = ""; // stockage du message venant du bluetooth

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

  base.attach(2);
  shoulder.attach(3);
  foreArm.attach(4);
  wristFlex.attach(5);
  wristRotate.attach(6);
  claw.attach(7);

  //initialise all arms

  base.write(Min_pos_base);                 //  90      0 = Bras vertical,  Haut les mains = limite 170
  shoulder.write(Min_pos_shoulder);         // 150      0 = Bras pendant
  foreArm.write(Min_pos_foreArm);           //  40      40 = Coude fermé,   Coude ouvert = 179
  wristFlex.write(Min_pos_wristFlex);       //  90      0 = Poignet ouvert, limite fermé = 175
  wristRotate.write(Min_pos_wristRotate);   //  90      0 = Paume en dessous, Paume audessus limite = 175
  claw.write(Min_pos_claw);                 //   0      0 = Pince ouverte, Pince fermé = 179

  pinMode(ledpin, OUTPUT);
}

void loop()
{

  while (Serial.available())
  {
    delay (3); // lecture car par car
    char c = Serial.read();
    messageRecu += c;
  }

  if (messageRecu.length() > 0)
  {
    //************************ MAITRISE BRAS I ***************************//

    if ((messageRecu.indexOf("monte bras") != -1)) { // Bras monte
      Serial.println ("monte bras");
      for (pos_base = Min_pos_base; pos_base <= Max_pos_base; pos_base += 1) {
        base.write(pos_base);
        Serial.print ("Min : "); Serial.print (Min_pos_base); Serial.print (" Max : "); Serial.print (Max_pos_base); Serial.print (" increment : "); Serial.println(pos_base);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("baisse bras") != -1)) { // Bras descend
      Serial.println ("baisse bras");
      for (pos_base = Max_pos_base; pos_base >= Min_pos_base; pos_base -= 1) {
        base.write(pos_base);
        Serial.print ("Min : "); Serial.print (Min_pos_base); Serial.print (" Max : "); Serial.print (Max_pos_base); Serial.print (" increment : "); Serial.println(pos_base);
        delay(UPDATE_TIME);
      }
      messageRecu = "";
    }
    //************************ MAITRISE BRAS II ***************************//

    else if ((messageRecu.indexOf("ouvre bras") != -1)) { // ouvre bras
      Serial.println ("ouvre bras");
      for (pos_shoulder = Min_pos_shoulder; pos_shoulder <= Max_pos_shoulder; pos_shoulder += 1) {
        shoulder.write(pos_shoulder);
        Serial.print ("Min : "); Serial.print (Min_pos_shoulder); Serial.print (" Max : "); Serial.print (Max_pos_shoulder); Serial.print (" increment : "); Serial.println(pos_shoulder);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("ferme bras") != -1)) { // ferme bras
      Serial.println ("ferme bras");
      for (pos_shoulder = Max_pos_shoulder; pos_shoulder >= Min_pos_shoulder; pos_shoulder -= 1) {
        shoulder.write(pos_shoulder);
        Serial.print ("Min : "); Serial.print (Min_pos_shoulder); Serial.print (" Max : "); Serial.print (Max_pos_shoulder); Serial.print (" increment : "); Serial.println(pos_shoulder);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }

    //************************ MAITRISE COUDE  ***************************//

    else if ((messageRecu.indexOf("ferme coude") != -1)) { // ouvre coude
      Serial.println ("ferme coude");
      for (pos_foreArm = Min_pos_foreArm; pos_foreArm >= Max_pos_foreArm; pos_foreArm -= 1) {
        foreArm.write(pos_foreArm);
        Serial.print ("Min : "); Serial.print (Min_pos_foreArm); Serial.print (" Max : "); Serial.print (Max_pos_foreArm); Serial.print (" increment : "); Serial.println(pos_foreArm);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("ouvre coude") != -1)) { // ferme coude
      Serial.println ("ouvre coude");
      
      for (pos_foreArm = Max_pos_foreArm; pos_foreArm <= Min_pos_foreArm; pos_foreArm += 1) {
        foreArm.write(pos_foreArm);
        Serial.print ("Min : "); Serial.print (Min_pos_foreArm); Serial.print (" Max : "); Serial.print (Max_pos_foreArm); Serial.print (" increment : "); Serial.println(pos_foreArm);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }

    //************************ MAITRISE POIGNET I  ***************************//

    else if ((messageRecu.indexOf("ferme poignet") != -1)) { // ferme poignet
      Serial.println ("ferme poignet");
      for (pos_wristFlex = Min_pos_wristFlex; pos_wristFlex <= Max_pos_wristFlex; pos_wristFlex += 1) {
        wristFlex.write(pos_wristFlex);
        Serial.print ("Min : "); Serial.print (Min_pos_wristFlex); Serial.print (" Max : "); Serial.print (Max_pos_wristFlex); Serial.print (" increment : "); Serial.println(pos_wristFlex);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("ouvre poignet") != -1)) { // ouvre poignet
      Serial.println ("ouvre poignet");
      for (pos_wristFlex = Max_pos_wristFlex; pos_wristFlex >= Min_pos_wristFlex; pos_wristFlex -= 1) {
        wristFlex.write(pos_wristFlex);
        Serial.print ("Min : "); Serial.print (Min_pos_wristFlex); Serial.print (" Max : "); Serial.print (Max_pos_wristFlex); Serial.print (" increment : "); Serial.println(pos_wristFlex);
        delay(UPDATE_TIME);
      }
      messageRecu = "";
    }

    //************************ MAITRISE PAUME ROTATION  ***************************//

    else if ((messageRecu.indexOf("paume dessus") != -1)) { // paume dessus
      Serial.println ("paume dessus");
      for (pos_wristRotate = Min_pos_wristRotate; pos_wristRotate <= Max_pos_wristRotate; pos_wristRotate += 1) {
        wristRotate.write(pos_wristRotate);
        Serial.print ("Min : "); Serial.print (Min_pos_wristRotate); Serial.print (" Max : "); Serial.print (Max_pos_wristRotate); Serial.print (" increment : "); Serial.println(pos_wristRotate);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("paume dessous") != -1)) { // paume dessous
      Serial.println ("paume dessous");
      for (pos_wristRotate = Max_pos_wristRotate; pos_wristRotate >= Min_pos_wristRotate; pos_wristRotate -= 1) {
        wristRotate.write(pos_wristRotate);
        Serial.print ("Min : "); Serial.print (Min_pos_wristRotate); Serial.print (" Max : "); Serial.print (Max_pos_wristRotate); Serial.print (" increment : "); Serial.println(pos_wristRotate);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    //************************ MAITRISE PINCE  ***************************//

    else if ((messageRecu.indexOf("ferme pince") != -1)) { // ferme pince
      Serial.println ("ferme pince");
      for (pos_claw = Min_pos_claw; pos_claw <= Max_pos_claw; pos_claw += 1) {
        claw.write(pos_claw);
        Serial.print ("Min : "); Serial.print (Min_pos_claw); Serial.print (" Max : "); Serial.print (Max_pos_claw); Serial.print (" increment : "); Serial.println(pos_claw);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    else if ((messageRecu.indexOf("ouvre pince") != -1)) { // ouvre pince
      Serial.println ("ouvre pince");
      for (pos_claw = Max_pos_claw; pos_claw <= Min_pos_claw; pos_claw -= 1) {
        claw.write(pos_claw);
        Serial.print ("Min : "); Serial.print (Min_pos_claw); Serial.print (" Max : "); Serial.print (Max_pos_claw); Serial.print (" increment : "); Serial.println(pos_claw);
        delay(UPDATE_TIME);
      }
      messageRecu = "";

    }
    //************************ POSITION DEFENSE  ***************************//

    else if ((messageRecu.indexOf("defense") != -1)) { // position defense
      Serial.println ("defense");
      base.write(90);              //  90      0 = Bras vertical,  Haut les mains = limite 170
      shoulder.write(150);         // 150      0 = Bras pendant
      foreArm.write(90);           //  40      40 = Coude fermé,   Coude ouvert = 179
      wristFlex.write(90);         //  90      0 = Poignet ouvert, limite fermé = 175
      wristRotate.write(90);       //  90      0 = Paume en dessous, Paume audessus limite = 175
      claw.write(160);               //   0      0 = Pince ouverte, Pince fermé = 179
    }
    messageRecu = "";
  }
}
[/code]

Je n'ai pas de boucle FOR dans la position DEFENSE car je souhaite un effet agressif pour ce code.

Bien sûr la commande vocale ne fonctionne toujours pas.

 

A+


Dans le sujet : PROJET ROBOT GD ONE

13 juin 2020 - 07:32

Ok Mike,

 

On va commencer par A. Je vais aller visiter tout ça et tenter de modifier mes codes, que je te soumettrais plus tard.

 

Merci à vous tous.