
[c+] Arduino: Questions diverses
#21
Posté 14 mars 2011 - 01:43
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
Posté 15 mars 2011 - 08:03
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 ?
#24
Posté 21 mars 2011 - 12:36
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
Posté 21 mars 2011 - 02:23
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
Posté 21 mars 2011 - 03:16
il me dit : ArrayIndexOutOfBoundsExeption: 3
#27
Posté 21 mars 2011 - 05:09
new Serial(this, portName, 9600)
#28
Posté 21 mars 2011 - 06:31
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) :
[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
Posté 21 mars 2011 - 07:13
#30
Posté 21 mars 2011 - 08:13
du cou ca fonctionne assez bien, je doit simplement adapter un peut plus mon code arduino et c'est bon :)
merci bien !
#31
Posté 21 mars 2011 - 09:10
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
Posté 28 mars 2011 - 10:20
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
Posté 28 mars 2011 - 11:15
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
Posté 28 mars 2011 - 11:36
#35
Posté 28 mars 2011 - 11:56
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
Posté 28 mars 2011 - 01:47
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
Posté 28 mars 2011 - 02:19
C'est étrange que ça marche pour l'un et pas pour l'autre quand même..
#38
Posté 28 mars 2011 - 03:13
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
Posté 28 mars 2011 - 06:28
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
Posté 28 mars 2011 - 06:36
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?
1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users