Aller au contenu


Photo
- - - - -

Base roulante avec bras


356 réponses à ce sujet

#241 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 23 mai 2012 - 02:00

Bon voila ma premiere partie du code ( que SEB03000 m'a corrige) :

int baseMoteurEnablePin = 2;
int baseMoteurPin1 = 3;                             
int baseMoteurPin2 = 4;                           
int epauleMoteurEnablePin = 14;
int epauleMoteurPin1 = 15;                             
int epauleMoteurPin2 = 16; 
int coudeMoteurEnablePin = 8;
int coudeMoteurPin1 = 9;                             
int coudeMoteurPin2 = 10;                           
int poigneeMotorEnablePin = 5;
int poigneeMotorPin1 = 6;                             
int poigneeMotorPin2 = 7; 
int pinceMotorEnablePin = 11;
int pinceMotorPin1 = 17;                             
int pinceMotorPin2 = 18; 
// set a variable to store the byte sent from the serial port
int incomingByte;
 
void setup() {
  // set the L293D pins as outputs:
  pinMode(baseMoteurPin1, OUTPUT);
  pinMode(baseMoteurPin2, OUTPUT);
  pinMode(baseMoteurEnablePin, OUTPUT);
  digitalWrite(baseMoteurEnablePin, HIGH);
  pinMode(epauleMoteurPin1, OUTPUT);
  pinMode(epauleMoteurPin2, OUTPUT);
  pinMode(epauleMoteurEnablePin, OUTPUT);
  digitalWrite(epauleMoteurEnablePin, HIGH);
  pinMode(coudeMoteurPin1, OUTPUT);
  pinMode(coudeMoteurPin2, OUTPUT);
  pinMode(coudeMoteurEnablePin, OUTPUT);
  digitalWrite(coudeMoteurEnablePin, HIGH);
  pinMode(poigneeMotorPin1, OUTPUT);
  pinMode(poigneeMotorPin2, OUTPUT);
  pinMode(poigneeMotorEnablePin, HIGH);
  pinMode(pinceMotorPin1, OUTPUT);
  pinMode(pinceMotorPin2, OUTPUT);
  pinMode(pinceMotorEnablePin, OUTPUT);
  digitalWrite(pinceMotorEnablePin, HIGH);
  // start sending data at 9600 baud rate
  Serial.begin(9600);
}
 
void loop() {
  // check that there's something in the serial buffer
  if (Serial.available() > 0) {
    // read the byte and store it in our variable 
    // the byte sent is actually an ascii value
    incomingByte = Serial.read();
    // note the upper casing of each letter!
    // diferrent lettre pour les directions.
    if (incomingByte == 'Q') {
    digitalWrite(baseMoteurPin1, LOW);   
    digitalWrite(baseMoteurPin2, HIGH);  
    } 
    if (incomingByte == 'W') {
    digitalWrite(baseMoteurPin1, HIGH);   
    digitalWrite(baseMoteurPin2, LOW);  
    }
    if (incomingByte == 'E') {
    digitalWrite(epauleMoteurPin1, LOW);   
    digitalWrite(epauleMoteurPin2, HIGH);  
    } 
    if (incomingByte == 'R') {
    digitalWrite(epauleMoteurPin1, HIGH);   
    digitalWrite(epauleMoteurPin2, LOW);  
    }
    if (incomingByte == 'A') {
    digitalWrite(coudeMoteurPin1, LOW);   
    digitalWrite(coudeMoteurPin2, HIGH);  
    } 
    if (incomingByte == 'S') {
    digitalWrite(coudeMoteurPin1, HIGH);   
    digitalWrite(coudeMoteurPin2, LOW);  
    }
    if (incomingByte == 'D') {
    digitalWrite(poigneeMotorPin1, LOW);   
    digitalWrite(poigneeMotorPin2, HIGH);  
    } 
    if (incomingByte == 'F') {
    digitalWrite(poigneeMotorPin1, HIGH);   
    digitalWrite(poigneeMotorPin2, LOW);  
    }
    if (incomingByte == 'Z') {
    digitalWrite(pinceMotorPin1, LOW);   
    digitalWrite(pinceMotorPin2, HIGH);  
    } 
    if (incomingByte == 'X') {
    digitalWrite(pinceMotorPin1, HIGH);   
    digitalWrite(pinceMotorPin2, LOW);  
    }
    // si O est envoyer les moteurs ne s'allumeront pas (OFF)
    if (incomingByte == 'O') {
    digitalWrite(baseMoteurPin1, LOW);   
    digitalWrite(baseMoteurPin2, LOW);  
    digitalWrite(epauleMoteurPin1, LOW);   
    digitalWrite(epauleMoteurPin2, LOW); 
    digitalWrite(coudeMoteurPin1, LOW);   
    digitalWrite(coudeMoteurPin2, LOW);  
    digitalWrite(poigneeMotorPin1, LOW);   
    digitalWrite(poigneeMotorPin2, LOW); 
    digitalWrite(pinceMotorPin1, LOW);   
    digitalWrite(pinceMotorPin2, LOW); 
    }
  }
}

reste plus qu' a faire les 2 servomoteurs et le module Bluetooth
Merci a tous
Cordialement Dylan.

#242 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 23 mai 2012 - 02:21

J'ai une petite question car je n'ai pas trop suivi ses derniers temps :

Tu envois les lettres à partir de ton PC grâce au câble de programmation ? Si oui les lettres ne sont elles pas envoyées sous forme ASCII et donc ne faut il pas passé de ASCII à la vrai valeur ?

Je dis ça car j'ai du le faire dans un de mes programmes mais j'envoyais mes lettres avec PROCESSING.

#243 guppyxxx

guppyxxx

    Membre

  • Membres
  • 21 messages

Posté 23 mai 2012 - 02:27

bonjours


Je dis ça car j'ai du le faire dans un de mes programmes mais j'envoyais mes lettres avec PROCESSING.


avec moi sa marche en marquant directement la lettre même avec processing (donc pas besoin de ASCII).

#244 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 23 mai 2012 - 02:29

A bon ?

Dans PROCESSING tu envois avec quel fonction ?

#245 guppyxxx

guppyxxx

    Membre

  • Membres
  • 21 messages

Posté 23 mai 2012 - 04:16

ce code marche :

import processing.serial.*;
int last = 0; 

Serial  myPort;

void setup()
 {
   myPort = new Serial(this, Serial.list()[0], 9600);
   size(400, 130); // ouvre une fenêtre xpixels  x ypixels
   background(0,0,0); // couleur fond fenetre
 }
 
 void draw()
   {
     if (keyPressed == false)
       {
         if (last != 7)
           {
             myPort.write("e");
             last = 7;
           }
       }
         
   }
 void keyPressed()
   {
     if (keyCode == UP)
       {
         if (last != 1)
           {
            myPort.write("z");
            last = 1;
           }
       }
     else if (keyCode == DOWN)
       {
         if (last != 2)
           {
             myPort.write("s");
             last = 2;
           }
       }
     else if (keyCode == LEFT)
       {
         if (last != 3)
           {
             myPort.write("q");
             last = 3;
           }
       }
     else if (keyCode == RIGHT)
       {
         if (last != 4)
           {
             myPort.write("d");
             last = 4;
           }
       }
     else if (key == 'a')
       {
         if (last != 5)
           {
             myPort.write("a");
             last = 5;
           }
       }
     else if (key == 'm')
       {
         if (last != 6)
           {
             myPort.write("m");
             last = 6;
           }
       }
   }     
         
 
  void serialEvent (Serial myPort) { // fonction appelée lors de la survenue d'un évènement série

        // ******** Gestion de la valeur reçue sur le port série : **********

        String inString = myPort.readStringUntil('\n'); // chaine stockant la chaîne reçue sur le port Série
        // saut de ligne en marque de fin

        if (inString != null) { // si la chaine recue n'est pas vide


                print (inString); // affichage brut de la chaine recue


        } // fin condition chaine recue pas vide

  }

regarde aussi cette page

pour la librairie j'utilse la lirairie processing "serial" déjà installer avec processing!
en esperant t'avoir avancer...

#246 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 23 mai 2012 - 04:25

je n'ai pas tres bien compris de quoi vous parler :o normalement je dois appuyer sur une lettre et le moteur attitre a cette lettre dois s'allumer non ?!!
Merci a tous
Cordialement Dylan.

#247 guppyxxx

guppyxxx

    Membre

  • Membres
  • 21 messages

Posté 23 mai 2012 - 05:05

double post désolé voir plus bas

#248 guppyxxx

guppyxxx

    Membre

  • Membres
  • 21 messages

Posté 23 mai 2012 - 05:08

oui normalement (si t'as pas le même problème que lestephanoi)

mais tu pourras le faire seulement avec le "serial monitor" de arduino où tu n'as rien à programmer mais tu ne peut que envoyer qu'en appuyant sur une touche puis ensuite il faut cliquer sur envoyer donc c'est un peut long (deux choses à faire)

mais tu peut aussi le faire en programment ton propre logiciel (le plus courant est processing pour communiquer avec arduino) celui-ci comme c'est toi qui le programme tu peut lui demander d'envoyer une lettre lorsque une touche est appuyée (donc une seule action)
programmer toi même te permet aussi d'envoyer une lettre quand aucune touche n'est appuyer (j'ais vu que tu voulais sa dans ton programme arduino) ce que le "serial monitor" du logiciel arduino ne peut pas faire (ou bien je n'est pas trouver cette fonction :unsure: )

donc on regardait comment on faisait pour envoyer des "lettre" (à l'aide du programme créé sous processing) à l'arduino

plus d'info sur processing
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.OUTILSProcessing
et sur
http://www.siteduzero.com/tutoriel-3-268569-processing.html

#249 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 23 mai 2012 - 09:19

OK , donc se serai mieux pour moi de faire mon logiciel sous PROCESSING , c'est ca ? ca vas pas etre un peut dur pour moi , deja que j'ai un peu de mal avec le langage Arduino ??
Merci a tous
Cordialement Dylan.

#250 guppyxxx

guppyxxx

    Membre

  • Membres
  • 21 messages

Posté 24 mai 2012 - 06:52

tu peu toujours essayer sa resemble un peut au langage arduino (beaucoup même ^_^ ) mais vu que tu peut faire à peu près la même chose avec le "serial monitor" tu peut te concentré juste sur l'arduino...
mais si t'as du temps tu peut toujours faire un programme sous processing!

#251 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 24 mai 2012 - 07:07

bon pour l'instant j'utiliserai l'interface Arduino , et plus tard quand je maitriserais mieux la programmation je ferais un programme sous Processing ;)

Partie Programmation il me reste :

_ Les 2 servomoteurs du châssis
_ Le module Bluetooth
Merci a tous
Cordialement Dylan.

#252 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 24 mai 2012 - 07:49

ce code marche :

import processing.serial.*;
int last = 0; 

Serial  myPort;

void setup()
 {
   myPort = new Serial(this, Serial.list()[0], 9600);
   size(400, 130); // ouvre une fenêtre xpixels  x ypixels
   background(0,0,0); // couleur fond fenetre
 }
 
 void draw()
   {
     if (keyPressed == false)
       {
         if (last != 7)
           {
             myPort.write("e");
             last = 7;
           }
       }
         
   }
 void keyPressed()
   {
     if (keyCode == UP)
       {
         if (last != 1)
           {
            myPort.write("z");
            last = 1;
           }
       }
     else if (keyCode == DOWN)
       {
         if (last != 2)
           {
             myPort.write("s");
             last = 2;
           }
       }
     else if (keyCode == LEFT)
       {
         if (last != 3)
           {
             myPort.write("q");
             last = 3;
           }
       }
     else if (keyCode == RIGHT)
       {
         if (last != 4)
           {
             myPort.write("d");
             last = 4;
           }
       }
     else if (key == 'a')
       {
         if (last != 5)
           {
             myPort.write("a");
             last = 5;
           }
       }
     else if (key == 'm')
       {
         if (last != 6)
           {
             myPort.write("m");
             last = 6;
           }
       }
   }     
         
 
  void serialEvent (Serial myPort) { // fonction appelée lors de la survenue d'un évènement série

        // ******** Gestion de la valeur reçue sur le port série : **********

        String inString = myPort.readStringUntil('\n'); // chaine stockant la chaîne reçue sur le port Série
        // saut de ligne en marque de fin

        if (inString != null) { // si la chaine recue n'est pas vide


                print (inString); // affichage brut de la chaine recue


        } // fin condition chaine recue pas vide

  }

regarde aussi cette page

pour la librairie j'utilse la lirairie processing "serial" déjà installer avec processing!
en esperant t'avoir avancer...


Ben j'utilise la même librairie que toi pourtant, c'est peut être parce que moi j'envoi pas des lettres mais des chiffres et des symboles ?

Pour processing c'est vrai que c'est un peu plus difficile au début mais au bout d'un moment tu t'y fais, il y a plein de tuto sur le web.

#253 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 24 mai 2012 - 08:04

Que vous envoyez des lettres ou des chiffres, c'est pareil hein... Ça reste une valeur numérique, binaire même. L'arduino et le pc ne voient même pas la différence.

Sinon, pour le "serial monitor" de l'arduino, suffit de taper le chiffre (ou la lettre) et d'appuyer sur "enter" pour que ça s'envoie. C'est pas non plus la fin du monde...

Esprit
*Rêve d'en caser un dans un robot*


#254 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 24 mai 2012 - 08:15

Voila ou j'ai vu qu'il fallait une conversion : Mon lien
Regarder le programme Arduino, il enlève 48 à la valeur qu'il reçoit pour convertir :
octetRecu=octetRecu-48; // transfo valeur ASCII en valeur décimale


#255 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 24 mai 2012 - 08:43

Que vous envoyez des lettres ou des chiffres, c'est pareil hein... Ça reste une valeur numérique, binaire même. L'arduino et le pc ne voient même pas la différence.

Sinon, pour le "serial monitor" de l'arduino, suffit de taper le chiffre (ou la lettre) et d'appuyer sur "enter" pour que ça s'envoie. C'est pas non plus la fin du monde...


il y a un teste interressant a faire : envoyer une valeur string depuis le serial moniteur et faire en sorte que l'arduino nous le retourne sans transformation

c'est a ce moment là que l'on comprend le veritable probleme !

moi perso j'utilise http://www.pobot.org/Interface-ligne-de-commande-pour.html

#256 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 24 mai 2012 - 10:52

Voila ou j'ai vu qu'il fallait une conversion : Mon lien
Regarder le programme Arduino, il enlève 48 à la valeur qu'il reçoit pour convertir :

octetRecu=octetRecu-48; // transfo valeur ASCII en valeur décimale


C'est juste parce que le chiffre "0" et donc la valeur ASCII du caractère "0" = 48.
(Voir Table ASCII). Suffit de le savoir, mais ça n'est pas vraiment un problème.


il y a un teste interressant a faire : envoyer une valeur string depuis le serial moniteur et faire en sorte que l'arduino nous le retourne sans transformation. c'est a ce moment là que l'on comprend le veritable probleme ! moi perso j'utilise http://www.pobot.org/Interface-ligne-de-commande-pour.html


Pas le temps pour l'instant mais c'est pas super compliqué. Ton exemple sur Pobot est juste bien pour illustrer le truc.

Esprit
*Rêve d'en caser un dans un robot*


#257 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 25 mai 2012 - 06:59

Bonjour,

Par contre, juste une remarque : il se peut que tes colis soient contrôler à la douane et là tu paies plus cher. Donc prends peut être en compte dans ton budget, ça peut éviter des mauvaises surprises.

Bonne continuation !


J'avais dis que je vivais a l'étranger et que les douanes étaient cool , mais je viens de lire que la plupart des colis provenant de Chine reste bloquer aux frontières du pays. Donc a la fin je crois que je vais devoir me faire livrer en France , chez un membre de ma famille et attendre qu'il vienne nous rendre visite :'( a peu prés 1 mois ) , combien prennent-ils en France de taxes ??
Merci a tous
Cordialement Dylan.

#258 Francky

Francky

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 967 messages
  • Gender:Male

Posté 25 mai 2012 - 07:01

J'avais dis que je vivais a l'étranger et que les douanes étaient cool , mais je viens de lire que la plupart des colis provenant de Chine reste bloquer aux frontières du pays. Donc a la fin je crois que je vais devoir me faire livrer en France , chez un membre de ma famille et attendre qu'il vienne nous rendre visite :'( a peu prés 1 mois ) , combien prennent-ils en France de taxes ??

Si j'ai bien compris, ça dépend de la nature du colis. Après il y a un certain pourcentage sur le prix du produit.
Désolé je ne peux pas être vraiment plus précis (au pire essaie de voir sur le site de la douane française).

#259 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 25 mai 2012 - 07:09

je cherche depuis plus d'une demie heure ! :P tu n'aurais pas le lien s'il te plait ?
Merci a tous
Cordialement Dylan.

#260 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 25 mai 2012 - 07:40

Ça dépend surtout de ta chance. J'ai plein de colis chinois qui arrivent chez moi (Belgique) et sur lesquels je n'ai jamais rien payé. Sinon, c'est en pourcentage du prix d'achat (mais aucune idée de combien).

Esprit
*Rêve d'en caser un dans un robot*




Répondre à ce sujet



  


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

0 members, 1 guests, 0 anonymous users