Aller au contenu


Photo
- - - - -

Commande a distance


13 réponses à ce sujet

#1 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 18 juillet 2013 - 08:00

Bonjour a tous ,

J'ai chercher pas mal de temps sur le web , mais je n'ai rien trouver.

Je veux réaliser un robot simple , qui se déplace grâce a une commande a distance et qui fasse descendre/monté une plateforme qui est au dessus de lui. En fait cette plateforme fait partie du robot et elle sert a mettre des choses dessus , un plateau quoi :P/>

Je cherche a contrôler ces 3 moteurs DC a distance , 2 pour la direction du robot et 1 autre pour lever/descendre la plateforme. Je cherche quelque chose de très simple a réaliser.

Je pensais a une télécommande avec un joystick pour la direction et a cote 2 bouton pour descendre/monte le plateau. Mais ca vas demander surement de la programmation et avec le contrôle a distance et les joystick je serais dans le petrain :P

Si vous avez des idées , je suis preneur ! :D/>

Merci !!
Merci a tous
Cordialement Dylan.

#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 19 juillet 2013 - 01:46

Le plus simple et le moins coûteux pour toi : les télécommande TV infra rouge donc. Il te faut juste une photo diode infra rouge réceptrice du signal envoyé par la télé et un peu de patience pour réussir le décodage et faire le bon réglage.


Il y a pas mal de membre du forum qui l'ont fait. Dont newbie avec un sujet où il a mis pas mal d'exemple et il s'est fait aidé par sky99 ;) ( je te laisse retrouver le sujet ;))

C'est peut être pas encore ce que tu veux mais je te conseille de déjà commencer par là.

Bon courage ! =)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 19 juillet 2013 - 08:30

J'ai des récepteurs IR et des télécommandes de télévision. Je vais chercher un peu sur le Forum ;)


Merci Mike !!

Image(s) jointe(s)

  • Photo 19-07-13 10 25 17.jpg

Merci a tous
Cordialement Dylan.

#4 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 19 juillet 2013 - 11:51

En effet j'ai trouver la discutions , les morceaux de code , ect ...
Mais le problèmes n'était toujours pas régler. Les moteurs tournent a fond des le debut et on a beau appuyer sur des autres touches , cela ne change rien.

Mais c'est pas grave je vais essayer de me renseigner sur google ;) Maximum je reviendrais :P
Merci a tous
Cordialement Dylan.

#5 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 519 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 19 juillet 2013 - 02:56

En effet j'ai trouver la discutions , les morceaux de code , ect ...
Mais le problèmes n'était toujours pas régler. Les moteurs tournent a fond des le debut et on a beau appuyer sur des autres touches , cela ne change rien.

Mais c'est pas grave je vais essayer de me renseigner sur google ;)/> Maximum je reviendrais :P/>


Donne nous un peux plus de détails sur ce que tu as et déjà fait.

Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#6 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 19 juillet 2013 - 05:09

Pour l'instant rien n'est réaliser (malheureusement) mais je prévoie déjà un nouveau projet (Cite plus haut) un robot "Serveur" , on vas appeler ca comme ca :P

Le but du robot est très simple , ainsi que sa fabrication (je l'espère). Donc en fait une base roulante a 4 roues , dont 2 motrices a l'arrière. Sur le robot un plateau (une planche) qui peut descendre et monter (hauteur indéfini) pour pouvoir mettre des choses facilement dessus. Le tout contrôler avec une télécommande télé ou autre.

Après avoir regarder et suivi le sujet de Newbie , et vu qu'il n'avais pas réussi a réaliser son robot avec une télécommande TV , j'ai tout de même essayer et le résultat a était le même.

Donc je cherche une solution facile et économique bien sur de créer une commande a distance (en essayant d'éviter la programmation , car en contrôle a distance je suis nul)
Merci a tous
Cordialement Dylan.

#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 20 juillet 2013 - 02:15

Pour l'instant rien n'est réaliser (malheureusement) mais je prévoie déjà un nouveau projet (Cite plus haut) un robot "Serveur" , on vas appeler ca comme ca :P/>

Le but du robot est très simple , ainsi que sa fabrication (je l'espère). Donc en fait une base roulante a 4 roues , dont 2 motrices a l'arrière. Sur le robot un plateau (une planche) qui peut descendre et monter (hauteur indéfini) pour pouvoir mettre des choses facilement dessus. Le tout contrôler avec une télécommande télé ou autre.

Après avoir regarder et suivi le sujet de Newbie , et vu qu'il n'avais pas réussi a réaliser son robot avec une télécommande TV , j'ai tout de même essayer et le résultat a était le même.

Donc je cherche une solution facile et économique bien sur de créer une commande a distance (en essayant d'éviter la programmation , car en contrôle a distance je suis nul)


Normalement tu peux très bien réussir à faire cela avec la télécommande TV et le récepteur... ( en tout cas avec mon pic ça marchait quand je l'avais fais... après je ne faisait que marche avant, marche arrière, tourner à droite et à gauche par contre il est vrai que jutilisait des interruption sur le port B de mon pic et je ne sais pas si vous avez quelque chose de similaire sur arduino mais normalement oui ... )
En tout cas mon avis est que si tu creuse un peu tu dois trouver une solution parfaitement fonctionnelle de ce côté là !

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 21 juillet 2013 - 01:51

Bon j'ai ressayer mais cela ne fonctionne pas. Je vais vous montrer le schéma(ci-joint) que j'ai réaliser et le code utiliser, comme ca si vous voyez une erreur je la corrigerais.
PS: j'utilise 4 piles R20S taille D

Le code :
#include <IRremote.h>
int action;
int IRdelay = 40 ;
unsigned long Enavant = 0x807F18E7 ;
unsigned long Tourneragauche = 807F827D ;
unsigned long Enarriere = 0x807F629D ;
unsigned long Tourneradroite = 0x807F926D ;
unsigned long Arret = 0x807FA25D ;
int Avant ;
int Arriere ;
int TGauche ;
int TDroite ;
int Stop ;
int RECV_PIN = A0;
IRrecv irrecv(RECV_PIN);
decode_results results;

int distance;
int motor1Pin1 = 3;
int motor1Pin2 = 4;
int enablePin = 2; 



void setup() 
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  

pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);

}



void startMotors()
{
    digitalWrite(enablePin, HIGH); 

}

void stopMotors()
{
    digitalWrite(enablePin, LOW); 
}

void avancer() 
{
    startMotors();
    digitalWrite(motor1Pin1, LOW); 
    digitalWrite(motor1Pin2, HIGH); 

}

void tournerGauche()
{
    startMotors();
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, HIGH);


}

void tournerDroite()
{
   startMotors();
   digitalWrite(motor1Pin1, HIGH); 
   digitalWrite(motor1Pin2, LOW); 


}

void reculer()
{
    startMotors();
    digitalWrite(motor1Pin1, HIGH); 
    digitalWrite(motor1Pin2, LOW); 

}

void loop()
{
    if (irrecv.decode(&results))
    {
    Serial.println(results.value, HEX);
    irrecv.resume();
  }
  
  if(results.value == Enavant)
  {
     action = Avant ; 
  }
  else if(results.value == Tourneragauche) 
  {
    action = TGauche ;
  }
  else if(results.value == Tourneradroite)
  {
     action = TDroite ;
  }
  else if(results.value == Arriere)
  {
     action = Arriere ;
  }
  else if(results.value == Arret)
  {
     action = Stop ;
  }

   effectueraction(action);

}
   
   
     
    void effectueraction(int act)
    {   
    if (act == Avant) 
     {
        avancer();
     }
     
     else if ( act == TGauche) 
     {
       tournerGauche();
     }
     
     else if ( act == TDroite ) 
     {
       tournerDroite();
     }
     
     else if ( act == Arriere) 
     {
       reculer();
     }
     else if ( act == Stop) 
     {
       stopMotors();
     }

   }

Dans ce code je ne contrôle que 1 seul moteur avec ma télécommande. Lorsque je met tout en route (sans toucher a la télécommande) le moteur tourne vite sans arrêt. il faut que je coupe l'alimentation pour l'arrêter.

Fichier(s) joint(s)


Merci a tous
Cordialement Dylan.

#9 olivthill

olivthill

    Membre occasionnel

  • Membres
  • Pip
  • 143 messages
  • Gender:Male
  • Location:Normandie

Posté 21 juillet 2013 - 02:40

..

int Avant ;
int Arriere ;
int TGauche ;
int TDroite ;
int Stop ;
...
void loop()
{
...
     action = Avant ; 
...
    action = TGauche ;
...

Il faudrait donner des valeurs à Avant, Arriere ... par exemple :
void setup() 
{
   Avant = 1;
   Arriere = 2;
   TGauche = 3;
   TDroite = 4;
   Stop = 0;
...
}
Et peut-être que l'ajout d'un petit délai permettrait au processeur de souffler un peu :
void loop()
{
...
   delay(50);
}
...


#10 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 24 juillet 2013 - 08:13

Il faudrait donner des valeurs à Avant, Arriere ... par exemple :

void setup() 
{
   Avant = 1;
   Arriere = 2;
   TGauche = 3;
   TDroite = 4;
   Stop = 0;
...
}
Et peut-être que l'ajout d'un petit délai permettrait au processeur de souffler un peu :
void loop()
{
...
   delay(50);
}
...


Salut ! Merci pour ce petit bout de code. Grâce a ca , cela a marcher !! J'ai mis deux moteurs cette fois et ca fonctionnait. Mais seulement pour aller tout droit / Gauche et Arrêt.
Donc il me manque la direction de droite et arrière. Cela fais 2 jours que j'essaye de trouver une erreur dans mon code , mais sans succès. Et niveaux électronique aussi.
Je vais quand meme mettre le code que j'utilise , on ne sait jamais.
#include <IRremote.h>
int action;
int IRdelay = 40 ;
unsigned long Enavant = 0x807F18E7 ;
unsigned long Tourneragauche = 0x807F827D ;
unsigned long Enarriere = 0x807F629D ;
unsigned long Tourneradroite = 0x807F926D ;
unsigned long Arret = 0x807FA25D ;
int Avant = 8;
int Arriere = 9 ;
int TGauche = 10 ;
int TDroite = 11 ;
int Stop = 12;
int RECV_PIN = A0;
IRrecv irrecv(RECV_PIN);
decode_results results;

int distance;
int motor1Pin1 = 4; 
int motor1Pin2 = 5;
int motor2Pin1 = 6; 
int motor2Pin2 = 7; 
int enablePin = 2; 
int enable2Pin = 3;


void setup() 
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  



pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(enable2Pin, OUTPUT);
}

  

void startMotors()//démarre les moteurs
{
    digitalWrite(enablePin, HIGH); 
    digitalWrite(enable2Pin, HIGH);
    delay(50);
}

void stopMotors()//arrête les moteurs
{
    digitalWrite(enablePin, LOW); 
    digitalWrite(enable2Pin, LOW);
    delay(50);
}

void avancer() //le robot avancera jusqu'à nouvel ordre
{
    startMotors();
    digitalWrite(motor1Pin1, LOW); 
    digitalWrite(motor1Pin2, HIGH); 
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, HIGH);
    delay(50);
}

void tournerGauche() //le robot tournera à gauche jusqu'à nouvel ordre
{
    startMotors();
    digitalWrite(motor1Pin1, LOW); 
    digitalWrite(motor1Pin2, HIGH);
    digitalWrite(motor2Pin1, HIGH); 
    digitalWrite(motor2Pin2, LOW);
    delay(50);
}

void tournerDroite()//le robot tournera à droite jusqu'à nouvel ordre
{
   startMotors();
   digitalWrite(motor1Pin1, HIGH); 
   digitalWrite(motor1Pin2, LOW); 
   digitalWrite(motor2Pin1, LOW); 
   digitalWrite(motor2Pin2, HIGH);
   delay(50);
}

void reculer()//le robot reculera jusqu'à nouvel ordre
{
    startMotors();
    digitalWrite(motor1Pin1, HIGH); 
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, HIGH); 
    digitalWrite(motor2Pin2, LOW);
    delay(50);
}

void loop()
{
    if (irrecv.decode(&results))
    {
    Serial.println(results.value, HEX);
    irrecv.resume(); 
  }
  
  if(results.value == Enavant)
  {
     action = Avant ;
  }
  else if(results.value == Tourneragauche) 
  {
    action = TGauche ;
  }
  else if(results.value == Tourneradroite)
  {
     action = TDroite ;
  }
  else if(results.value == Arriere)
  {
     action = Arriere ;
  }
  else if(results.value == Arret)
  {
     action = Stop ;
  }

  { 

  }

 effectueraction(action);
}
   
     
    void effectueraction(int act)
    {   
    if (act == Avant) 
     {
        avancer();
     }
     
     else if ( act == TGauche) 
     {
       tournerGauche();
     }
     
     else if ( act == TDroite ) 
     {
       tournerDroite();
     }
     
     else if ( act == Arriere) 
     {
       reculer();
     }
     else if ( act == Stop) 
     {
       stopMotors();
     }
    }
   

Merci en tout cas !!
Merci a tous
Cordialement Dylan.

#11 Francky

Francky

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 967 messages
  • Gender:Male

Posté 24 juillet 2013 - 08:38

Salut !

Pour la programmation il y a un truc qui me semble bizarre dans ton code source : ta sous fonction "effectueraction" se situe après la boucle infinie. Je ne suis pas sûr que le programme sache ce qu'est "effectueraction" puisque lors de la compilation il ne l'a pas "lu". Il me semble qu'il faut que tes sous fonctions soient déclarées avant ton code principal (ou au moins mettre les headers). Donc essaie de mettre "effectueraction" avant ta boucle infinie.
(après je ne suis pas sûr :P)

Bon courage ;)

#12 olivthill

olivthill

    Membre occasionnel

  • Membres
  • Pip
  • 143 messages
  • Gender:Male
  • Location:Normandie

Posté 24 juillet 2013 - 09:34

...ta sous fonction "effectueraction" se situe après la boucle infinie...

En C classique, on met les fonctions avant, ou alors on met un prototype de la fonction avant. Mais le C de la Arduino n'a pas besoin de ça. En tous cas, ce genre de problème se verrait tout de suite par l'affichage d'un message d'erreur à la compilation.

Merci pour ce petit bout de code. Grâce a ca , cela a marcher !!

De rien, je suis content qu'il y ait eu du progrès.

il me manque la direction de droite et arrière.

Pour la marche arrière, je vois un problème. Au lieu de :
else if(results.value == Arriere)
écrire :
else if(results.value == Enarriere)
Pour la direction à droite, je ne vois pas d'erreur dans le code. Peut-être que 0x807F926D ne serait pas la bonne valeur pour le bouton. Peut-être il faudrait essayer avec 0x807FC23D.

#13 Francky

Francky

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 967 messages
  • Gender:Male

Posté 24 juillet 2013 - 11:19

En C classique, on met les fonctions avant, ou alors on met un prototype de la fonction avant. Mais le C de la Arduino n'a pas besoin de ça. En tous cas, ce genre de problème se verrait tout de suite par l'affichage d'un message d'erreur à la compilation.

Ok je n'ai jamais programmé en arduino. C'est toujours bon à savoir ^^

#14 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 24 juillet 2013 - 10:00

D'accord je teste ca demain soir , car je n'ai plus de piles , je suis a sec ! :S
Merci a tous
Cordialement Dylan.



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users