Aller au contenu


Photo
- - - - -

[c+] Arduino: Questions diverses


  • Veuillez vous connecter pour répondre
81 réponses à ce sujet

#21 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 14 mars 2011 - 01:43

ha oui, merci :)

j'ai tester le filtre passe bas sur une entré analogique, mais le problème c'est que même sans toucher a la télécommande les valeur varie un peu trop, j'ai déjà trouvé comment corrigé un peu ca mais c'est loin d'être parfait. du coup je testerai le Pulsin quand j'aurais 5 minutes, je prendrai ce qui me permet la plus grande précision.

#22 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 15 mars 2011 - 08:03

bon j'ai tester sur le robot.. y'a rien qui fonctionne -_- (j'ai pas cherché pourquoi par manque de temps)

l'avantage de mon circuit en porte logique c'est que ca fonctionne!!

bon sinon, j'ai une question, j'aimerai bien programmé un petit truc qui me permettrai de guidé (en temps réel) mon robot via la connexion usb de la carte. en clair j'appuie sur z il avance s il recule ect..

je sais qu'on peut le faire en tapant la lettre et en l'envoyant, mais du coup c'est pas en instantané :/

je suppose qu'il faut programmé un petit logiciel qui pilote le moniteur de l'arduino nan ?

#23 julkien

julkien

    Pilier du forum

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

Posté 16 mars 2011 - 10:09

regarde sur le robot controlé par net book de Mralexis

il a fait une interface en processing pour piloter ça carte Arduino

#24 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 21 mars 2011 - 12:36

Voila du coup j'ai commencé un code processing pour piloter mon arduino de manière plus fluides.

le code en lui même est assez simple, mais pas moyen de le lancer. ca bloque au niveau des déclaration de liaison série et je ne trouve pas du tout :(

voici le code en question:


import processing.serial.*;
Serial MySerialPort;


void setup() {

println(Serial.list());
MySerialPort = new Serial(this, Serial.list()[1], 9600);

}

void draw() {

}


void keyPressed() {

switch (key) {

case 'z':

MySerialPort.write('z');
break;

case 's':

MySerialPort.write('s');
break;

case 'd':

MySerialPort.write('d');
break;

case 'q':

MySerialPort.write('q');
break;

case 'p':

MySerialPort.write('p');
break;

case 'm':

MySerialPort.write('m');
break;

}
}
[/code]

#25 julkien

julkien

    Pilier du forum

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

Posté 21 mars 2011 - 02:23

com 1 ????
moi mon arduino c'est com 10.
Apres s'a peut varier d'un pc a l'autre mais bon ton com 1 me parais bizarre


#26 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 21 mars 2011 - 03:16

com 1 ?? c'est le "[1]" a la ligne 10 ?. pcq c'est effectivement ca qui bloque au lancement. et si je met un 3 (puisque mon arduino est com 3) ca marche pas non plus.

il me dit : ArrayIndexOutOfBoundsExeption: 3

#27 julkien

julkien

    Pilier du forum

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

Posté 21 mars 2011 - 05:09

essai de cette maniere
new Serial(this, portName, 9600)

#28 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

Posté 21 mars 2011 - 06:31

En fait le numéro n'est pas celui du COM, mais un indice dans la liste des ports série de votre PC.

Par exemple si votre arduino est sur COM10, et qu'il y a déjà trois autres ports : COM1, COM5, COM12, alors la liaison série doit être initialisée avec le numéro 2.

Pour connaitre l'indice de tableau à utiliser, rajoutez ce code dans le setup() de votre code Processing (c'est déjà le cas dans le code présenté plus haut) :
qui affiche quelque chose comme ça dans la console (toujours avec le même exemple) :

[1] COM5
[2] COM10
[3] COM12[/font]

Pourquoi si compliqué ? Parce que de cette manière le code Processing marche aussi bien sous Linux, Windows, Mac, avec un indice dans une liste sans avoir à changer entre /tty0 ou /usb ou COMx

Ainsi, vous aurez toujours un affichage de la liste complète des ports vus par Java, donc si ça plante au premier lancement, notez le bon numéro entre [ ] et reportez le dans la fonction new Serial(...).

Au passage, le code de Julienmus ne fonctionnera pas, c'est le contenu texte de la ligne que le programme attend. Il faut donc conserver le code d'initialisation classique :



#29 julkien

julkien

    Pilier du forum

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

Posté 21 mars 2011 - 07:13

donc même en mettant ce qui suit, ça ne marcherais pas ?

#30 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 21 mars 2011 - 08:13

ha tout s'explique!! voyant qu'a ca ne fonctionné pas j'ai essayé de mettre de 1 a 10, et ca ne changer rien! par ce que c'était le 0!!

du cou ca fonctionne assez bien, je doit simplement adapter un peut plus mon code arduino et c'est bon :)

merci bien !




#31 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 21 mars 2011 - 09:10

Bon et bien, un problème résolu en soulève un autre...

mes programmes fonctionne correctement, par contre au niveau du processing le programme est sensé envoyé constamment la valeur de la touche qui est appuyer. Le probleme c'est qu'avec la fonction "keypressed" lorsque j'appuie sur z par exemple, le code envoie z une micro seconde attend une demi seconde et envoi z jusqu'a ce que la touche soit laché.

ce qui arrive sur un traitement de texte lorsque l'on laisse une touche appuyé, elle marque un temps d'arrêt avant d'écrire constament.

moi ce que j'aimerai savoir c'est comment supprimé ce laps de temps, pour évité que le robot marque des pause entre deux commande.

#32 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 28 mars 2011 - 10:20

bon et bien voila tout ça fonctionne plutôt très bien :)

par contre j'ai un problème au niveau de la liaison série :/

j'arrive parfaitement a envoyé des commande a l'arduino, par contre j'aimerai recevoir des donné venant dans celle ci.. lorsque je lance le moniteur de l'arduino pas de probleme les valeur affiché sont les bonne.
par contre lorsque j'affiche les valeur lut sur la liaison série depuis mon interface processing, les valeur ne sont plus du tout les bonne.. a quoi es ce du ?



#33 julkien

julkien

    Pilier du forum

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

Posté 28 mars 2011 - 11:15

[quote"arthael"]bon et bien voila tout ça fonctionne plutôt très bien :)

par contre j'ai un problème au niveau de la liaison série :/

j'arrive parfaitement a envoyé des commande a l'arduino, par contre j'aimerai recevoir des donné venant dans celle ci.. lorsque je lance le moniteur de l'arduino pas de probleme les valeur affiché sont les bonne.
par contre lorsque j'affiche les valeur lut sur la liaison série depuis mon interface processing, les valeur ne sont plus du tout les bonne.. a quoi es ce du ?

[/quote]
c marrant moi j'ai eu le problème inverse avec vb

#34 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 28 mars 2011 - 11:36

tes ordres ne corresponde pas quand il arrive sur la carte ?? t'a trouvé pourquoi ?



#35 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

Posté 28 mars 2011 - 11:56

Julienmus, je crois qu'il faudrait écrire "0 - [COM3]" mais je n'en suis pas du tout sûr. Et félicitations si j'ai bien compris.

Arthael, revois ton programme pour ne pas avoir à envoyer en continu, tu vas saturer ta liaison série. N'envoie que les changements, en détectant dans ton programme Processing l'arrêt de saisie d'une touche. Pour l'utilisateur, le comportement sera le même (mode "jeu vidéo"), mais cela évitera tout problème de transmission (surtout si tu passes en sans-fil). Tu peux même plus tard implémenter une rampe d'accélération, en mesurant le temps resté appuyé et en envoyant le code de la touche + la vitesse déduite (ou la durée brute, en multiples de 100 millisecondes par exemple). Bref, fais ce qu'on appelle une "décorrélation" entre la saisie utilisateur, l'interprétation du contrôleur d'IHM, les valeurs transmises, l'interprétation par le contrôleur du robot et les commandes des moteurs. C'est un peu plus de travail de conception mais cela te rendra service au moment du debug et des évolutions.

#36 julkien

julkien

    Pilier du forum

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

Posté 28 mars 2011 - 01:47

en réalité pour moi le problème était de relire ce que la carte envoyé (juste un ok ou un "huh")
mais le terminal de l'Arduino ne m'afficher que des "µù" bref des truc bizarre
du coup en utilisant vb sa résolu mon prob :D

#37 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris
  • Interests:Robotics

Posté 28 mars 2011 - 02:19

Avais tu réglé le bon baudrate dans ton terminal arduino ?

C'est étrange que ça marche pour l'un et pas pour l'autre quand même..

#38 julkien

julkien

    Pilier du forum

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

Posté 28 mars 2011 - 03:13

[quote"Jbot"]Avais tu réglé le bon baudrate dans ton terminal arduino ?

C'est étrange que ça marche pour l'un et pas pour l'autre quand même..[/quote]
:heu: j'ai pas le souvenir de l'avoir réglé sa venez surement de ça :tare:

#39 arthael

arthael

    Membre passionné

  • Membres
  • PipPipPip
  • 479 messages
  • Gender:Male

Posté 28 mars 2011 - 06:28

Bah moi ca n'est pas ca.. il sont tous régler a 115200 bauds..

je me suis dit que c'etait peut etre du au type de donné que j'envoyé (un float) alors je l'ai converti en int mais ca na rien changer. je recoit des 50 des 13 au lieu de 6800 et 680..



#40 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 28 mars 2011 - 06:36

bonjour,
tu utilises un sketch Processing ou la console de l'IDE Arduino pour envoyer/ recevoir?

tu peux copier le code de l'Arduino, et, le cas échéant, celui de Processing?




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

0 members, 0 guests, 0 anonymous users