Loading...
  Show Posts
Pages: 1 [2] 3 4 ... 44
16  International / Français / Re: Les coordonnées absolues de la souris on: December 24, 2012, 07:37:04 am
Salut,

Tu parles d'une souris dans un monde arduino, c'est pas facile à comprendre tout ça! Pour moi, une souris placée sur un écran, c'est du PC, pas du simple arduino... Tu devrais détailler un poil...
17  International / Français / Re: Réalisation d'un afficheur de vitesse pour voiture on: December 24, 2012, 02:56:09 am
Salut,

Je viens de lire un peu tout ça, et ayant déjà pas mal planché sur ce genre de projet, quelques choses m'embête un peu...

Tu dis avoir une demi période de 10ms pour 40km/h, ce qui donnerait une impulsion tous les 22,222222... cm parcourus. Chez Renault (et certainement beaucoup d'autres), les capteurs vitesse utilisés sont donnés à une impulsion pour 20cm parcourus (ou encore 5 impulsions par mètre). Je pense que c'est ton cas (ça donne une erreur de 11% dans tes mesures, c'est possible). Par ailleurs, ce signal est très précis, donc mieux vaut être précis autant que possible.

Pour la mesure, j'utiliserais une méthode très différente, car l'arduino propose une fonction matérielle super puissante : "ICP1". Matériel veut dire que la gestion est purement électronique, aucun (ou presque) code n'intervient.

En gros, sur la pin 8, tu mets ton signal info vitesse, et avec un peu de config, chaque impulsion viendra mettre la variable vitesse à jour en utilisant une interruption. ICP (Input Capture Pin) a pour but de sauvegarder la valeur d'un compteur à chaque impulsion. Ce compteur est le timer 1 qu'il te suffit de configurer pour qu'il compte en continu, à une fréquence optimale (ça demande à réfléchir un peu, mais ça vaut largement le coup).

Tu pourras donc dans ton loop() faire simplement :

Code:
byte vitesse; // variable contenant la vitesse mesurée
void loop() {
  lcd.print(vitesse);
  delay(100); // mise à jour sur le LCD 10 fois par secondes, si trop rapide, ce sera illisible
}

Sachant que tu auras une ISR (Interrupt Sub Routine : fonction d'interruption) qui sera appelée à chaque impulsion et qui mettra à jour la variable vitesse.

Bonus : si tu utilises par exemple une variable de type long (long distance; par exemple), dans l'ISR, tu peux rajouter la ligne "distance++;". Ca mange pas de pain, mais du coup, tu auras un totaliseur kilométrique précis à 20cm... (kilométrage = distance / 5000;).

Ce n'est qu'une idée, mais j'aurais fait comme ça, car niveau exécution, c'est top et ça permet de rajouter un max de fonctions par la suite!
18  International / Français / Re: Peut-on conserver la liaison série avec une alim externe ? on: December 11, 2012, 12:10:20 pm
Salut,

Pour le pb d'alim, j'avais coupé le fil VCC dans le câble USB pour que la carte ne soit alimentée que quand je mettais son alim en route, et ça marche très bien. Par contre, se rappelre que ce câble n'alimente plus rien smiley-wink

Pour les envois série, en fait, la liaison envoie des octets. C'est le terminal série qui les transforme en caractères pour afficher les données. Pour envoyer un word (16 bits) par exemple, je fais :

Code:
  word w = 0xF2B4;
  Serial.Write(lowByte(w));  // poids faible
  Serial.Write(highByte(w)); // poids fort

A ton récepteur de le récupérer du genre :

Code:
  byte d1, d2;
  word w;

  d1 = Serial.Read();  // poids faible
  d2 = Serial.Read();  // poids fort
  w = word(d2, d1);  // w = d2 * 256 + d1

C'est ce que je fais et ça marche très bien. Je n'ai jamais eu à envoyer plus que 16 bits, mais ça ne doit pas être plus compliqué.

Pour info, Serial.print(w) reviendrait à envoyer la chaîne de caractères "62132", soit 5 octets au lieu de 2 avec mon exemple, et convertir "32132" en une valeur numérique prend autant de temps que convertir 32132 en chaîne, bref, si tu es pressé, tu vois vers où te diriger smiley-wink
19  International / Français / Re: Faire hurler un speaker de téléphone portable on: December 08, 2012, 12:58:37 pm
Par contre, je ne sais pas si le HP va accepter les 2.5V continus de Vmoy... Niveau son, on verra une amplitude de +/-2.5V, ce qui devrait faire du bruit, mais c'est la composante continue qui me fait un peu peur... Il risque de falloir mettre un classe B et une capa de découplage...
20  International / Français / Re: Faire hurler un speaker de téléphone portable on: December 07, 2012, 11:43:09 am
Quelle est l'impédance du HP?

J'ai pas réussi à voir la valeur de la résistance (100ohms ou un truc du genre?)

Tu peux le faire hurler en faisant un signal audio en pwm, mais l'arduino sera peut-être un peu limite...
21  International / Français / Re: PROGRAMME URGENT on: December 07, 2012, 11:39:56 am
C'est dur à suivre, trop de commentaire tue le commentaire.

Un pinMode dans un loop, c'est pas très heureux, surtout sur un analogwrite...

Quand tu dis urgent, c'est dans quel sens?
22  International / Français / Re: Servomoteur on: December 06, 2012, 02:57:27 am
Peux-tu nous mettre le code complet, car j'ai un sérieux doute. En effet, la lib Servo envoie une pulse dont la durée dépend de la valeur utilisée dans myservo.write(); . Tu ne devrais pas avoir besoin de gérer le délai entre les pulses, la lib utilise un timer pour ça. Il faut savoir que la méthode .write() génère une brève pause dans le délai entre les pulses, et c'est peut-être ça qui te gêne si tu l'utilises trop souvent...
23  International / Français / Re: Servomoteur on: December 04, 2012, 11:38:08 am
Essaie avec delay(250), car je ne suis pas sûr que la lib accepte un délai si court...
24  International / Français / Re: Vitesse de communication port série baudrate / différences ? on: December 04, 2012, 11:36:15 am
1 start + 8 bits + 1 stop = 10bits ===> 9600 bauds donne 960 caractères par seconde ===> 38,4 caractères par 40ms.
Toi tu envoies 5 * 7 = 35 caractères par 40ms donc tu es près de saturer ta liaison.
Dans la même idée, un caractère (ou octet) envoyé à 115200 mettra 87µs à transiter, en 9600, il mettra 1ms. Ton oeil n'est pas capable de voir la différence entre 1ms et 87µs, pour lui, c'est de l'instantané.

C'est au niveau du traitement qu'il faut voir ça : selon ta vitesse de transmission, tu auras plus ou moins de temps pour traiter un caractère avant l'arrivée du suivant...
25  International / Français / Re: Port analogique et port Série. on: December 04, 2012, 11:29:23 am
Heu... Je me trompes peut-être (et j'espère), mais les questions semblent tout droit copiées d'un énoncé, genre que tu aimerais bien qu'on fasse tes devoirs à ta place, non?

Si c'est le cas, c'est bien dommage que tu ne t'intéresses pas un peu plus à tes cours.

Désolé de réagir ainsi, mais on en voit de plus en plus, et perso, ça me dérange de voir quelqu'un avoir une bonne note alors que le boulot n'est pas de lui et qu'en plus, il a juste copié et n'y a rien compris... C'est pas le principe de l'école.
26  International / Français / Re: ordi de bord on: December 04, 2012, 01:21:06 am
Salut.

En effet, avec seulement 6 antrées analogiques, tu seras vite limité. Pour aller au plus simple, je te conseillerais de partir sur une MEGA (16 entrées analogiques) ou pour rester plus soft, une Leonardo (un peu plus d'entrées analogiques que la UNO, je n'ai plus le nombre exact en tête).

N'hésite pas à poser sur papier toutes tes idées de grandeurs à mesurer, les classer par ordre d'importance. A partir de là, tu auras une meilleure vue sur ton projet.

Qu'appelle-tu un diagramme "thottle"?
27  International / Français / Re: [RESOLU] IDE 1.0.2 & Leonardo : le port COM disparait on: December 02, 2012, 04:04:07 pm
Ah...

J'avais lu que le while(!Serial) était obligatoire dans la leonardo, mais comme ça a toujours bien marché sans, je ne m'en suis guerre occupé.

Le principal est que ça marche comme on veut smiley-wink
28  International / Français / Re: [RESOLU] IDE 1.0.2 & Leonardo : le port COM disparait on: December 02, 2012, 02:51:05 pm
Non, je parle de l'ouverture du port COM coté PC.

Sur la léonardo, tant que le PC n'a pas ouvert le port COM, l'objet Serial n'existe pas.
Tu veux dire l'IDE, car j'ai un sketch qui tourne très bien en autonome, et si le PC (je dis bien le PC, c'est une appli en VB6) envoie un code reconnu par le sketch, le PC prend la main sur le sketch. si le PC n'est pas connecté, le sketch tourne tout seul...
Dans si tu met
Code:
while( !Serial );
le sketch se bloque et attend que le PC ouvre le port COM.
C'est pratique car çà évite que le sketch démarre et commence à afficher des choses avant que le moniteur série soit ouvert.
Sur une Arduino normal, l'ouverture du port série par le PC génère un reset qui relance le sketch d'où tu a l'impression de n'avoir rien perdu.
même remarque... smiley-wink de mon côté, je vis ça très bien car je n'utilise pas le terminal arduino, il est trop contraignant par rapport à ma façon de coder...
29  International / Français / Re: [RESOLU] IDE 1.0.2 & Leonardo : le port COM disparait on: December 02, 2012, 01:14:53 pm
Tu veux donc dire qu'il faudrait faire un Serial.End() au début du setup? Le souci, c'est que pour ça, il faut le faire directement dans les registres, je ne crois pas que ce soit implémenté dans la classe Serial...
30  International / Réalisations et Projets Finis / Re: dialogue entre Arduino et VB6 on: December 02, 2012, 02:30:26 am
Salut.

Je suis en train de jouer à ça aussi, et un ami m'a parlé de la propriété .RThreshold du composant MScomm qu'il faut mettre à 1 pour que ça déclenche l'événement .OnComm() à chaque octet reçu (en gros, l'événement se déclenche quand .InBufferCount = .RThreshold). Je n'ai pas regardé tes sources, mais si ça t'aide...
Pages: 1 [2] 3 4 ... 44